Help with Log4j logs deletion

Versions (relevant - OpenSearch/Dashboard/Server OS/Browser):
Opensearch 2.11

Describe the issue:
I wanted to clear old log files every 7d, but came to an issue,
when i use log4j2.properties provided below i get no errors or anything, however, log files are deleted only upon restarting opensearch, i’ve tried everything, from changinf policies, changing timestamps, etc. Nothing seems to work

P.s. yes, i deleted the memory section, because i wanted to focus strictly on time based deletion.
No, there is no errors in console
Opensearch has access to these folders, files rollover just fine, it creates new files without problems, but doesn’t delete old

Please, help, this thing will make me crazy :frowning:

Configuration:

status = debug

appender.console.type = Console

appender.console.name = console

appender.console.layout.type = PatternLayout

appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

######## Server JSON ############################

appender.rolling.type = RollingFile

appender.rolling.name = rolling

appender.rolling.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_server.json

appender.rolling.filePermissions = rw-r-----

appender.rolling.layout.type = OpenSearchJsonLayout

appender.rolling.layout.type_name = server

appender.rolling.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}-%d{yyyy-MM-dd-HH-mm}.json.gz

appender.rolling.policies.type = Policies

appender.rolling.policies.time.type = TimeBasedTriggeringPolicy

appender.rolling.policies.time.interval = 1

appender.rolling.policies.time.modulate = true

appender.rolling.strategy.type = DefaultRolloverStrategy

appender.rolling.strategy.fileIndex = nomax

appender.rolling.strategy.action.type = Delete

appender.rolling.strategy.action.basepath = ${sys:opensearch.logs.base_path}

appender.rolling.strategy.action.condition.type = IfFileName

appender.rolling.strategy.action.condition.glob = ${sys:opensearch.logs.cluster_name}-*.json.gz

appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified

appender.rolling.strategy.action.condition.nested_condition.age = PT2M

################################################

######## Server - old style pattern ###########

appender.rolling_old.type = RollingFile

appender.rolling_old.name = rolling_old

appender.rolling_old.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}.log

appender.rolling_old.filePermissions = rw-r-----

appender.rolling_old.layout.type = PatternLayout

appender.rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

appender.rolling_old.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}-%d{yyyy-MM-dd-HH-mm}.log.gz

appender.rolling_old.policies.type = Policies

appender.rolling_old.policies.time.type = TimeBasedTriggeringPolicy

appender.rolling_old.policies.time.interval = 1

appender.rolling_old.policies.time.modulate = true

appender.rolling_old.strategy.type = DefaultRolloverStrategy

appender.rolling_old.strategy.fileIndex = nomax

appender.rolling_old.strategy.action.type = Delete

appender.rolling_old.strategy.action.basepath = ${sys:opensearch.logs.base_path}

appender.rolling_old.strategy.action.condition.type = IfFileName

appender.rolling_old.strategy.action.condition.glob = ${sys:opensearch.logs.cluster_name}-*.log.gz

appender.rolling_old.strategy.action.condition.nested_condition.type = IfLastModified

appender.rolling_old.strategy.action.condition.nested_condition.age = PT2M

################################################

rootLogger.level = info

rootLogger.appenderRef.console.ref = console

rootLogger.appenderRef.rolling.ref = rolling

rootLogger.appenderRef.rolling_old.ref = rolling_old

######## Deprecation JSON #######################

appender.deprecation_rolling.type = RollingFile

appender.deprecation_rolling.name = deprecation_rolling

appender.deprecation_rolling.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_deprecation.json

appender.deprecation_rolling.filePermissions = rw-r-----

appender.deprecation_rolling.layout.type = OpenSearchJsonLayout

appender.deprecation_rolling.layout.type_name = deprecation

appender.deprecation_rolling.layout.opensearchmessagefields=x-opaque-id

appender.deprecation_rolling.filter.rate_limit.type = RateLimitingFilter

appender.deprecation_rolling.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_deprecation-%i.json.gz

appender.deprecation_rolling.policies.type = Policies

appender.deprecation_rolling.policies.size.type = SizeBasedTriggeringPolicy

appender.deprecation_rolling.policies.size.size = 1GB

appender.deprecation_rolling.strategy.type = DefaultRolloverStrategy

appender.deprecation_rolling.strategy.max = 4

appender.header_warning.type = HeaderWarningAppender

appender.header_warning.name = header_warning

#################################################

######## Deprecation - old style pattern #######

appender.deprecation_rolling_old.type = RollingFile

appender.deprecation_rolling_old.name = deprecation_rolling_old

appender.deprecation_rolling_old.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_deprecation.log

appender.deprecation_rolling_old.filePermissions = rw-r-----

appender.deprecation_rolling_old.layout.type = PatternLayout

appender.deprecation_rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

appender.deprecation_rolling_old.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_deprecation-%i.log.gz

appender.deprecation_rolling_old.policies.type = Policies

appender.deprecation_rolling_old.policies.size.type = SizeBasedTriggeringPolicy

appender.deprecation_rolling_old.policies.size.size = 1GB

appender.deprecation_rolling_old.strategy.type = DefaultRolloverStrategy

appender.deprecation_rolling_old.strategy.max = 4

#################################################

logger.deprecation.name = org.opensearch.deprecation

logger.deprecation.level = deprecation

logger.deprecation.appenderRef.deprecation_rolling.ref = deprecation_rolling

logger.deprecation.appenderRef.deprecation_rolling_old.ref = deprecation_rolling_old

logger.deprecation.appenderRef.header_warning.ref = header_warning

logger.deprecation.additivity = false

######## Search slowlog JSON ####################

appender.index_search_slowlog_rolling.type = RollingFile

appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling

appender.index_search_slowlog_rolling.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs\

.cluster_name}_index_search_slowlog.json

appender.index_search_slowlog_rolling.filePermissions = rw-r-----

appender.index_search_slowlog_rolling.layout.type = OpenSearchJsonLayout

appender.index_search_slowlog_rolling.layout.type_name = index_search_slowlog

appender.index_search_slowlog_rolling.layout.opensearchmessagefields=message,took,took_millis,total_hits,types,stats,search_type,total_shards,source,id

appender.index_search_slowlog_rolling.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs\

.cluster_name}_index_search_slowlog-%i.json.gz

appender.index_search_slowlog_rolling.policies.type = Policies

appender.index_search_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy

appender.index_search_slowlog_rolling.policies.size.size = 1GB

appender.index_search_slowlog_rolling.strategy.type = DefaultRolloverStrategy

appender.index_search_slowlog_rolling.strategy.max = 4

#################################################

######## Search slowlog - old style pattern ####

appender.index_search_slowlog_rolling_old.type = RollingFile

appender.index_search_slowlog_rolling_old.name = index_search_slowlog_rolling_old

appender.index_search_slowlog_rolling_old.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_index_search_slowlog.log

appender.index_search_slowlog_rolling_old.filePermissions = rw-r-----

appender.index_search_slowlog_rolling_old.layout.type = PatternLayout

appender.index_search_slowlog_rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

appender.index_search_slowlog_rolling_old.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_index_search_slowlog-%i.log.gz

appender.index_search_slowlog_rolling_old.policies.type = Policies

appender.index_search_slowlog_rolling_old.policies.size.type = SizeBasedTriggeringPolicy

appender.index_search_slowlog_rolling_old.policies.size.size = 1GB

appender.index_search_slowlog_rolling_old.strategy.type = DefaultRolloverStrategy

appender.index_search_slowlog_rolling_old.strategy.max = 4

#################################################

logger.index_search_slowlog_rolling.name = index.search.slowlog

logger.index_search_slowlog_rolling.level = trace

logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling

logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling_old.ref = index_search_slowlog_rolling_old

logger.index_search_slowlog_rolling.additivity = false

######## Indexing slowlog JSON ##################

appender.index_indexing_slowlog_rolling.type = RollingFile

appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling

appender.index_indexing_slowlog_rolling.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_index_indexing_slowlog.json

appender.index_indexing_slowlog_rolling.filePermissions = rw-r-----

appender.index_indexing_slowlog_rolling.layout.type = OpenSearchJsonLayout

appender.index_indexing_slowlog_rolling.layout.type_name = index_indexing_slowlog

appender.index_indexing_slowlog_rolling.layout.opensearchmessagefields=message,took,took_millis,doc_type,id,routing,source

appender.index_indexing_slowlog_rolling.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_index_indexing_slowlog-%i.json.gz

appender.index_indexing_slowlog_rolling.policies.type = Policies

appender.index_indexing_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy

appender.index_indexing_slowlog_rolling.policies.size.size = 1GB

appender.index_indexing_slowlog_rolling.strategy.type = DefaultRolloverStrategy

appender.index_indexing_slowlog_rolling.strategy.max = 4

#################################################

######## Indexing slowlog - old style pattern ##

appender.index_indexing_slowlog_rolling_old.type = RollingFile

appender.index_indexing_slowlog_rolling_old.name = index_indexing_slowlog_rolling_old

appender.index_indexing_slowlog_rolling_old.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_index_indexing_slowlog.log

appender.index_indexing_slowlog_rolling_old.filePermissions = rw-r-----

appender.index_indexing_slowlog_rolling_old.layout.type = PatternLayout

appender.index_indexing_slowlog_rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

appender.index_indexing_slowlog_rolling_old.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}\

_index_indexing_slowlog-%i.log.gz

appender.index_indexing_slowlog_rolling_old.policies.type = Policies

appender.index_indexing_slowlog_rolling_old.policies.size.type = SizeBasedTriggeringPolicy

appender.index_indexing_slowlog_rolling_old.policies.size.size = 1GB

appender.index_indexing_slowlog_rolling_old.strategy.type = DefaultRolloverStrategy

appender.index_indexing_slowlog_rolling_old.strategy.max = 4

#################################################

logger.index_indexing_slowlog.name = index.indexing.slowlog.index

logger.index_indexing_slowlog.level = trace

logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling

logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling_old.ref = index_indexing_slowlog_rolling_old

logger.index_indexing_slowlog.additivity = false

######## Task details log JSON ####################

appender.task_detailslog_rolling.type = RollingFile

appender.task_detailslog_rolling.name = task_detailslog_rolling

appender.task_detailslog_rolling.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_task_detailslog.json

appender.task_detailslog_rolling.filePermissions = rw-r-----

appender.task_detailslog_rolling.layout.type = OpenSearchJsonLayout

appender.task_detailslog_rolling.layout.type_name = task_detailslog

appender.task_detailslog_rolling.layout.opensearchmessagefields=taskId,type,action,description,start_time_millis,resource_stats,metadata

appender.task_detailslog_rolling.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_task_detailslog-%i.json.gz

appender.task_detailslog_rolling.policies.type = Policies

appender.task_detailslog_rolling.policies.size.type = SizeBasedTriggeringPolicy

appender.task_detailslog_rolling.policies.size.size = 1GB

appender.task_detailslog_rolling.strategy.type = DefaultRolloverStrategy

appender.task_detailslog_rolling.strategy.max = 4

#################################################

######## Task details log - old style pattern ####

appender.task_detailslog_rolling_old.type = RollingFile

appender.task_detailslog_rolling_old.name = task_detailslog_rolling_old

appender.task_detailslog_rolling_old.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_task_detailslog.log

appender.task_detailslog_rolling_old.filePermissions = rw-r-----

appender.task_detailslog_rolling_old.layout.type = PatternLayout

appender.task_detailslog_rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

appender.task_detailslog_rolling_old.filePattern = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}_task_detailslog-%i.log.gz

appender.task_detailslog_rolling_old.policies.type = Policies

appender.task_detailslog_rolling_old.policies.size.type = SizeBasedTriggeringPolicy

appender.task_detailslog_rolling_old.policies.size.size = 1GB

appender.task_detailslog_rolling_old.strategy.type = DefaultRolloverStrategy

appender.task_detailslog_rolling_old.strategy.max = 4

#################################################

logger.task_detailslog_rolling.name = task.detailslog

logger.task_detailslog_rolling.level = trace

logger.task_detailslog_rolling.appenderRef.task_detailslog_rolling.ref = task_detailslog_rolling

logger.task_detailslog_rolling.appenderRef.task_detailslog_rolling_old.ref = task_detailslog_rolling_old

logger.task_detailslog_rolling.additivity = false

@nerx322 Did you solve your issue?

@nerx322 This is my working log4j2.properties example.

It is rolling my opensearch.log file every minute and deletes every 2 minutes.

status = error

appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:opensearch.logs.base_path}/opensearch.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
appender.rolling.filePattern = ${sys:opensearch.logs.base_path}/opensearch-%d{yyyy-MM-dd-HH-mm}.log.gz
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 10KB

appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${sys:opensearch.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName
appender.rolling.strategy.action.condition.glob = opensearch-*.log.gz
appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified
appender.rolling.strategy.action.condition.nested_condition.age = PT2M