2014-10-30 4 views
0

JBoss EAP 6.1의 귀에 응용 프로그램에서 사용자 정의 log4j.xml을 사용하려고했습니다. 내가 파일 어 펜더와 똑바로 정적 파일 이름을 사용하면, 예상했던대로이 파일에 로그 할 것이라는 것을 발견했다. (이 경우 나의 전쟁에서 log4j2.xml을 사용하지만, log4j.xml을 사용하면 똑같은 일을한다. log4j 1.2) :jboss eap 6.1 server4.log로 사용자 정의 log4j

<?xml version="1.0" encoding="UTF-8" ?> 
<Configuration status="debug"> 
    <Appenders> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" /> 
    </Console> 
    <File name="A1" fileName="server.log"> 
     <PatternLayout pattern="%t %-5p %c{2} - %m%n" /> 
    </File> 
    </Appenders> 
    <Loggers> 
    <Logger name="com.xxx.yyy" level="debug" additivity="false"> 
     <AppenderRef ref="A1" /> 
    </Logger> 
    </Loggers> 
</Configuration> 

하지만 [jboss-eap] /bin/server.log에 기록됩니다.

<?xml version="1.0" encoding="UTF-8" ?> 
<Configuration status="debug"> 
    <Appenders> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" /> 
    </Console> 
    <File name="A1" fileName="${sys:jboss.server.log.dir}/test.log"> 
     <PatternLayout pattern="%t %-5p %c{2} - %m%n" /> 
    </File> 
    </Appenders> 
    <Loggers> 
    <Logger name="com.xxx.yyy" level="debug" additivity="false"> 
     <AppenderRef ref="A1" /> 
    </Logger> 
    </Loggers> 
</Configuration> 

나는 것을 볼 수있다 : ([보스-EAP] /standalone/log/test.log는 EAP 케이스) I는 보스 로그 디렉토리 파일에 가리 대체 변수에 넣을 수 그것은 나를 위해 대체를하고 있습니다 :

16:16:28,626 INFO [stdout] (ServerService Thread Pool -- 71) 2014-10-30 16:16:28,626 
DEBUG Starting FileManager C:\Users\xxxxxx\Apps\jbossdevstudio\runtimes\jboss- 
eap\standalone\log/test.log 

실제로 출력은 test.log에 나타납니다. 하지만 실제로 원하는 것은 로깅을 표준 server.log에 저장하는 것입니다. 위의 대체를 시도했지만 test.log 대신 server.log를 사용하면 실제로 아무것도 기록되지 않습니다. 내가 해봤 다른 것은 콘솔 어 펜더를 사용하지만, 그때 타임 스탬프를 두 번 로그 두 개의 로그 레벨 표시기가 정말 긴 출력 라인 수 : 내가 정말 원하는 것은 단지 때

16:24:08,038 INFO [stdout] (http-/0.0.0.0:8080-1) 2014-10-30 16:24:08,036 INFO 
    [http-/0.0.0.0:8080-1] com.xxx.TestServlet (TestServlet.java:25) - This is a test 

을 :

2014-10-30 16:24:08,036 INFO [http-/0.0.0.0:8080-1] com.xxx.TestServlet 
    (TestServlet.java:25) - This is a test 

그래서 어떻게해야할지 모르겠습니다. jboss 내부 로깅 구성을 구성 할 수 있지만 조직 내에서 서버 내에서 이러한 작업을 변경하는 것은 미들웨어 팀과 관련이 있습니다. 특정 클래스의 로그 수준을 조정해야하는 경우 사용자 정의 log4j.xml을 변경하는 것이 좋습니다. 필요한 경우 긴 출력으로 살 수 있지만 Splunk도 사용합니다. 로그 수준으로 로그를 필터링하려고 할 때 실제로 로깅 한 것이 아니라 stdout 출력의 로그 수준에서 혼동을 일으킬 것입니다.

나는 사람들에게 조언을 제공해 주시면 감사하겠습니다.

답변

1

필자가 appender가 서버에서 쓰고있는 것과 동일한 파일을 작성하도록 권하고 싶지 않습니다. 예기치 않은 행동으로 끝날 수도 있습니다. ConsoleAppenderSystem.outSystem.err으로 감쌀 것을 권하고 싶지는 않습니다. 귀하의 모든 메시지는 레벨 INFO에 명시되어 있습니다.

가장 좋은 방법은 로깅 구성을 포함하지 않고 서버 로깅 구성을 사용하는 것입니다. 가장 큰 이점은 대부분의 변경 사항에 대해 앱을 다시 배포하거나 서버를 다시 시작할 필요가 없다는 것입니다. 런타임에 발생할 수 있습니다. 당신이 말했듯이 그것은 고통 스러울 수도 있습니다.

log4j 구성 파일을 계속 포함해야하는 경우 가장 좋은 옵션은 다른 파일에 쓰고 콘솔에 쓰지 않는 것입니다.