Sorry in advance for the big info dump and lack of formatting, there doesn't seem to be code tags. To preface this with a bit of confusion, we've taken over "server.log" for dedicated app logging, and renamed the server.log file reference in standalone.xml to "wildfly.log".
So, a bit of explanation. We were previously solely using the mostly default logging configuration in standalone.xml. Recently there was a push to update and tweak the logging configurations in preparation for involving ES / Kibana in our logging. To that end we created a Log4J2 configuration to mark up our logs a bit for easy tagging and searching. We wanted to have a clean separation of Wildfly handling its own logging needs for itself, and the logging for our app would be dedicated to a separate file as well. Wildfly will use wildfly.log, and we will commandeer server.log.
However, we currently have a temporary need for our app's dedicated logging to go to wildfly.log too, not just server.log (this should be removed at some point). So we have a bit of a complicated extra configuration. In Log4J, we send our app logging to both server.log, and to stdout. Now, in standalone.xml, we capture that stdout output and have a handler to send it to wildfly.log. They previously had a duplicate "periodic-rotating-file-handler" block below the first one, with the same path and filename, but I believe this is what was causing rotation to fail with a "file in use" exception. I see that there are about 6 different file handler types for logging, so I picked "<file-handler>" to update that second periodic rotator block, since it seemed to fit (although I can't find a more in-depth description of each file handler type). Now it's not attempting rotation at all. I'm no expert in the standalone.xml configuration, but from what I've read, the wildfly.log file defined in the one and only periodic-rotating-file-handler block should be rotating as specified. I'm 100% open to the configuration being the problem, but I'm wondering if the config is actually ok and it's something in our log4j2 java config and setup code that's breaking the rotation somehow.
Here is the logging block for standalone.xml:
<subsystem xmlns="urn:jboss:domain:logging:8.0">
<console-handler name="SIMPLE" autoflush="true">
<level name="INFO"/>
<formatter>
<named-formatter name="SIMPLE-PATTERN"/>
</formatter>
</console-handler>
<console-handler name="CONSOLE" autoflush="true">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="wildfly.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<file-handler name="SIMPLE-FILE" autoflush="true">
<formatter>
<named-formatter name="SIMPLE-FILE-PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="wildfly.log"/>
<append value="true"/>
</file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="io.jaegertracing.Configuration">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="org.hibernate.orm.deprecation">
<level name="OFF"/>
</logger>
<logger category="org.jboss.as.server.deployment">
<level name="ERROR"/>
</logger>
<logger category="com.mystuff.api.wicket.util">
<level name="ERROR"/>
</logger>
<logger category="StatusLogger">
<level name="ERROR"/>
</logger>
<logger category="stdout" use-parent-handlers="false">
<level name ="INFO"/>
<handlers>
<handler name="SIMPLE"/>
<handler name="SIMPLE-FILE"/>
</handlers>
</logger>
<logger category="stderr" use-parent-handlers="false">
<level name ="INFO"/>
<handlers>
<handler name="SIMPLE"/>
<handler name="SIMPLE-FILE"/>
</handlers>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="/WILDFLY / %d{YYYY-MM-dd HH:mm:ss.SSS} [%-20.20t] [%-5.5p] [%-36.36c] - %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}/WILDFLY / %d{YYYY-MM-dd HH:mm:ss.SSS} [%-20.20t] %-5.5p [%-36.36c] - %s%e%n"/>
</formatter>
<formatter name="SIMPLE-PATTERN">
<pattern-formatter pattern="%K{level}%s%e%n"/>
</formatter>
<formatter name="SIMPLE-FILE-PATTERN">
<pattern-formatter pattern="%s%e%n"/>
</formatter>
</subsystem>
======================
======================
======================
======================
Here is the log4j2 configuration:
<Configuration status="ERROR">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="/%-10.10X{myApp}/ %d{YYYY-MM-dd HH:mm:ss.SSS} [%-20.20t] %-5level %-36.36logger{1.} - %msg ^%X^\n"/>
</Console>
<RollingFile name="roll" fileName="${env:JBOSS_HOME}/standalone/log/server.log" filePattern="${env:JBOSS_HOME}/standalone/log/server.log.%d{yyyy-MM-dd}" ignoreExceptions="false">
<PatternLayout pattern="/%-10.10X{myApp}/ %d{YYYY-MM-dd HH:mm:ss.SSS} [%-20.20t] %-5level %-36.36logger{1.} - %msg ^%X^%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="3">
<Delete basePath="${env:JBOSS_HOME}/standalone/log/" maxDepth="1">
<IfFileName glob="*/server.log*">
<IfLastModified age="P4D"/>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.mystuff.api.wicket.util" level="ERROR">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Logger>
<Logger name="org.hibernate.orm.deprecation" level="OFF">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Logger>
<Logger name="com.arjuna" level="WARN">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Logger>
<Logger name="io.jaegertracing.Configuration" level="WARN">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Logger>
<Logger name="sun.rmi" level="WARN">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Logger>
<Logger name="StatusLogger" level="ERROR">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Logger>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="roll"/>
</Root>
</Loggers>
</Configuration>