Я использовал log4j для входа в приложение Java. Я использую стороннюю библиотеку (jar), которая использует slf4j для своей регистрации. Что мне нужно сделать, чтобы добавить журналы сторонней библиотеки (slf4j) в мой файл журнала и консоль.
Я использую ниже версии log4j maven в моем коде.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
В своем Java-приложении я использовал log4j для регистрации.
Мой код Java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private static final Logger LOGGER = LogManager.getLogger(Abc.class);
Я использую стороннюю библиотеку, которая использует ведение журнала slf4j.
Код сторонней библиотеки
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Xyz.class);
Это мой файл log4j.xml
<Configuration status="INFO">
<CustomLevels>
<CustomLevel name="REPORT" intLevel="250" /> <!-- This is custom log level used in my code -->
</CustomLevels>
<Appenders>
<Console name='Console' target="SYSTEM_OUT">
<PatternLayout>
<ScriptPatternSelector defaultPattern="%d{dd-MMM-yyyy HH:mm:ss} [%t] %-5p: %m%n"><Script name="LevelSelector" language="javascript"><![CDATA[
result=null;
switch (logEvent.getLevel())
{
case org.apache.logging.log4j.Level.FATAL:
case org.apache.logging.log4j.Level.ERROR:
case org.apache.logging.log4j.Level.WARN:
case org.apache.logging.log4j.Level.INFO:
case org.apache.logging.log4j.Level.DEBUG:
case org.apache.logging.log4j.Level.TRACE:
result=logEvent.getLevel();
break;
default:result=null;
}
result;
]]></Script>
<PatternMatch key="FATAL" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="ERROR" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="WARN" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="INFO" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="DEBUG" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="TRACE" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
</ScriptPatternSelector>
</PatternLayout>
</Console>
<File name="TestAutomationLog" fileName="./log/TestAutomationLog.log">
<PatternLayout>
<ScriptPatternSelector defaultPattern="%d{dd-MMM-yyyy HH:mm:ss} [%t] %-5p: %m%n">
<Script name="LevelSelector" language="javascript"><![CDATA[
result=null;
switch (logEvent.getLevel())
{
case org.apache.logging.log4j.Level.FATAL:
case org.apache.logging.log4j.Level.ERROR:
case org.apache.logging.log4j.Level.WARN:
case org.apache.logging.log4j.Level.INFO:
case org.apache.logging.log4j.Level.DEBUG:
case org.apache.logging.log4j.Level.TRACE:
result=logEvent.getLevel();
break;
default:result=null;
}
result;
]]>
</Script>
<PatternMatch key="FATAL" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="ERROR" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="WARN" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="INFO" pattern="%d{dd-MMM HH:mm:ss.SSS} %logger{0} - %msg%n"/>
<PatternMatch key="DEBUG" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<PatternMatch key="TRACE" pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
</ScriptPatternSelector>
</PatternLayout>
</File>
</Appenders>
<loggers>
<root level="report">
<AppenderRef ref="Console"/>
<AppenderRef ref="TestAutomationLog"/>
</root>
<logger name="com.myPackage" level="trace" />
<logger name="com.thirdParty.package" level="trace" additivity="true" /><!-- additivity="true" to add into log file -->
</loggers>
</Configuration>
Я хочу добавить журналы пакета "com.thirdParty.package" в мой файл журнала, т. Е. TestAutomationLog.log.
Пожалуйста, предложите необходимые изменения.
В качестве альтернативы , если я могу добавить эти сторонние журналы (slf4j) в другой файл журнала или просмотреть их в той же консоли (где отображаются журналы моего приложения), то это также поможет мне.
Заранее спасибо.