Трябва да избера рамка за регистриране, която да замени log4j. Първоначално избрах slf4j + logback за регистриране и написах следната конфигурация, която извежда регистрационните файлове на приложението и регистрационните файлове на apache cxf в отделни файлове и извежда регистрационни файлове за пролет/хибернация на конзолата:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n
</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
</appender>
<appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>D:\\MYDIR\\logs\\app_logback.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
</encoder>
</appender>
<appender name="minuteRollingFileAppenderCxf" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>D:\\MYDIR\\logs\\app_logback_cxf.%d{yyyy-MM-dd_HH-mm}.log</FileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
</encoder>
</appender>
<logger name="com.mycustomcode" additivity="false">
<level value="DEBUG" />
<appender-ref ref="dailyRollingFileAppender"/>
</logger>
<logger name="org.apache" additivity="false">
<level value="INFO" />
<appender-ref ref="minuteRollingFileAppenderCxf"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="consoleAppender" />
</root>
</configuration>
Въпреки това разбрах за асинхронното регистриране в log4j2 и искам да внедря асинхронно регистриране с помощта на log4j2 в моята настройка, за която написах следната конфигурация:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RandomAccessFile name="RandomAccessFile" fileName="D:\\MYDIR\\logs\\app_log4j2.log" immediateFlush="false" append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
</RandomAccessFile>
<RandomAccessFile name="RandomAccessFile2" fileName="D:\\MYDIR\\logs\\app_log4j2_cxf.log" immediateFlush="false" append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
</RandomAccessFile>
</Appenders>
<Loggers>
<AsyncLogger name="com.mycustomcode" level="debug" includeLocation="true" additivity="false">
<AppenderRef ref="RandomAccessFile"/>
</AsyncLogger>
<AsyncLogger name="org.apache" level="debug" includeLocation="true" additivity="false">
<AppenderRef ref="RandomAccessFile2"/>
</AsyncLogger>
<Root level="debug" includeLocation="false">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
конфигурацията на log4j2 работи, но отпечатва правилно само регистрационните файлове за "com.mycustomcode" в своя файл (app_log4j2.log). Нищо не се отпечатва за "org.apache" във файла app_log4j2_cxf.log - всъщност той е празен и неговият журнал се отпечатва на сървърната конзола.
Може ли някой да посочи какво правя погрешно? Благодаря