0
로깅을 수행하기 위해 log4j2를 얻으려고 애 쓰고 있습니다. log4j 설정을 추적 레벨로 설정하더라도 디버깅 할 추적을 얻지 못합니다. log4j2가 콘솔, 파일 또는 syslog에 로깅하지 않습니다.
이
사용하여 (또는 오히려 사용하기) 나는 지금까지 내가 말할 수있는 모든 문서를 따라했기 때문에 이유에 관해서는 손실을 조금입니다 2.1 2.5의 log4j를 서블릿입니까?package myPkg;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.web.WebLoggerContextUtils;
@Path("myresource")
public class MyResource {
final Logger logger = LogManager.getLogger(MyResource.class);
logger.debug("test");
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
logger.debug("test");
logger.info("INFO");
logger.warn("WARN");
return "Got it!";
}
}
관련 추출물 인 문서에 따라 다음과 같이 나는 web.xml에 변경을 구현 :
<!-- log4j-->
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log4jServletFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<context-param>
<description>log4j Context Name</description>
<param-name>log4jContextName</param-name>
<param-value>myWeb</param-value>
</context-param>
<context-param>
<description>log4j Configuration File Location</description>
<param-name>log4jConfiguration</param-name>
<param-value>file:///home/ME/testConfig/log4j.xml</param-value>
</context-param>
<!-- end log4j-->
을 그리고 log4j에 대한 내 pom.xml 파일이
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j.version}</version>
</dependency>
과 같습니다 내 log4j.xml 모양은
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- STDOUT -->
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
<!-- DEBUG FILE -->
<File name="debugFile" fileName="/home/ME/testConfig/debug.log">
<ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<!-- SYSLOG -->
<Syslog name="RFC5424" format="RFC5424" host="localhost" port="514"
protocol="TCP" appName="VoIP" includeMDC="true"
facility="LOCAL0" enterpriseNumber="43053" newLine="true"
messageId="Audit" id="App"/>
<!-- DO LOGGING -->
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="debugFile" level="TRACE"/>
<AppenderRef ref="STDOUT" level="WARN"/>
<AppenderRef ref="RFC5424" level="INFO"/>
</Root>
</Loggers>
</Configuration>
2.2 이상의 2.2에서 동일한 문제가 발생했으며 2.2에서는 log4j.properties가 작동하는 반면 2.5에서는 log4j.xml이어야합니다. 실패하면 자동으로 실패합니다. 나는 이것이 버그라고 생각한다. –