2014-10-14 2 views
0

로깅을 위해 log4j2를 사용하는 프로젝트에서 SocketAppender를 사용하려고합니다. 소켓에 대한 구성을 추가하고 응용 프로그램을 배포하면 구문 분석 오류가 발생합니다. 다음은 세부 사항입니다.Log4j2 소켓 어 펜더 오류가

log4j2.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="INFO" strict="true" packages=""> 
<Appenders> 
<Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 

</Console> 
<Socket name="Socket1" host="localhost" port="4712" reconnectionDelay="5000"> 
     <SerializedLayout/> 
</Socket> 
</Appenders> 

<Loggers> 
    <Logger name="com.example.web" level="INFO"> 
     <AppenderRef ref="Socket1"/> 
    </Logger> 
    <Root level="DEBUG"> 
     <AppenderRef ref="Console" level="DEBUG" /> 
    </Root> 

</Loggers> 
</Configuration> 

pom.xml 파일 : 나는 소켓 관련 변경 사항이 제거하면

log4j:WARN Fatal parsing error 31 and column 6 
log4j:WARN Premature end of file. 
log4j:ERROR Could not parse url [file:/apps/work/Catalina/example/loader/log4j.xml]. 
org.xml.sax.SAXParseException: Premature end of file. 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse (DocumentBuilderImpl.java:284) 
    at org.apache.log4j.xml.DOMConfigurator$2.parse(DOMConfigurator.java:767) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:866) 
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

의미가 있습니다 : 톰캣에서 프로젝트를 배포하는 방법에 대한

<!-- Logging with SLF4J & LogBack --> 
<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-api</artifactId> 
<version>1.7.6</version> 
</dependency> 
<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-slf4j-impl</artifactId> 
<version>2.0-rc1</version> 
</dependency> 

예외 log4j2.xml에서. 아무도 올바른 방법으로 Socket Appender를 추가 할 수 없습니까? 위의 구성에서 문제가 있는지 확인하십시오.

답변

0

문제는 Log4j2 구성 파일과 관련이없는 것 같지만 Log4j (v1) 구성 파일 (/apps/work/Catalina/example/loader/log4j.xml)은 Spring에서 사용하는 것으로 보입니다. 스택 추적에서 org.apache.log4j을 볼 수 있습니다. Log4j v1 (Log4j v2는 org.apache.logging.log4j과 유사합니다).

Log4j v1 파일 (/apps/work/Catalina/example/loader/log4j.xml)을 여기에 게시하면이 구성 파일에서 오류 구문을 수정하지 않아도 도움을받을 수 있습니다.

추신 : 귀하의 log4j2.xml 파일을 시도했으며 훌륭했습니다. Log4j2 구성 파일에서 status="INFO"을으로 대체하여 콘솔에서 더 많은 디버그 정보를 얻을 수 있습니다 (예 : 소켓 오류, 잘못된 log4j2 구성 등)

+0

안녕하세요. tomcat의/lib 폴더에 log4j2와 관련된 jar 파일을 추가해야한다고 생각하십니까? – user2254601

+0

글쎄, log4j2 JAR이 누락되었는지는 모르겠다. (이 JAR을 추가하려고 시도하지 않아도된다.) 나는 당신의 경우 Spring이 나쁜 Log4j로 인해 아무것도 로그하지 못한다고 말했다. v1) 구성 파일. Log4j2는 내가 볼 수있는 것에서 전혀 불평하지 않았습니다. 어쩌면 Log4j2가 작동하지만 Log4j v1 오류 때문이 아니라고 생각합니다 ... 작동하지 않으면 Log4j2 구성 파일에서'status = "INFO"'를'status = "trace"'로 대체 할 수 있습니다 콘솔에서 더 많은 디버그 정보를 얻을 수 있습니다. 또한 누군가가 응용 프로그램이 시작되기 전에 포트 4712에서 듣고 있는지 확인하십시오. 그렇지 않으면 작동하지 않습니다 – xav

+0

이 답변은 방금 투표가 중단되었습니다. 그 이유를 알 수 있습니까? – xav

관련 문제