2014-10-23 1 views
0

콘솔 및 파일에 로깅하기 위해 log4j2가 구성된 Java 응용 프로그램이 있습니다. ecplise에서 응용 프로그램을 시작할 때 모든 로그가 ok (콘솔 및 파일)입니다.Log4j2 : 파일 로깅이 jar로 작동하지 않습니다.

CMD 또는 Powershell (admin)에서 응용 프로그램의 jar 파일을 시작할 때 콘솔 로그 만 작동합니다. 두 번 클릭하여 항아리를 시작하면 파일 로그가 작동하지만 콘솔이 표시되지 않습니다.

이 내 log4j2.xml 구성 :

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="INFO"> 

<Appenders> 

<File name="file_all" fileName="logs/ALL.log"> 
    <PatternLayout> 
    <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern> 
    </PatternLayout> 
</File> 

<File name="file_error" fileName="logs/ERROR.log"> 
    <PatternLayout> 
    <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern> 
    </PatternLayout> 
</File> 

<Console name="STDOUT" target="SYSTEM_OUT"> 
    <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> 
</Console> 

</Appenders> 

<Loggers> 

<Root level="trace"> 
    <AppenderRef ref="file_all" level="INFO"/> 
    <AppenderRef ref="file_error" level="ERROR"/> 
    <AppenderRef ref="STDOUT" level="INFO"/> 
</Root> 
</Loggers> 

</Configuration> 
+0

항아리는 어떻게 만들었습니까? 항아리가 어떻게 생겼습니까? –

+0

Jar 파일은 Maven 어셈블리 플러그인으로 작성되었습니다. 다음은 매니페스트입니다. http://pastebin.com/zympRZ9P – Slash90ITA

답변

0

귀하의 log4j2.xml 설정 파일이 <configuration status="off" ... (혹은 WARN 또는 ERROR, 당신은 표시하지 않은 전체 설정)로 시작합니다.

는 조사 콘솔에 출력을 표시합니다 <configuration status="trace" ...

이이를 변경하여 log4j에의 내부 상태 로깅을 전환합니다. (이 파일을 java -jar myjar.jar > out.log으로 리디렉션 할 수 있습니다.)

나는 이것이 무슨 일이 일어나고 있는지에 대해 더 많은 정보를 줄 수 있기를 바랍니다. 그 결과물을 질문에 붙여주세요.


편집 : 상태 출력이 양호합니다. 오류 또는 아무것도. jar 파일을 두 번 클릭하는 것이 javaw (java가 아님)와 연결되어 콘솔이 없어도 될까요? CMD 프롬프트 또는 Powershell에서 응용 프로그램을 시작할 때 로그 파일을 찾을 수 없다는 것을 언급합니다. 상태 로그의 "Starting FileManager logs/ALL.log"줄은 log4j2가 성공적으로 출력 스트림을 생성했다는 것을 알려줍니다. 그러나 이것은 상대 경로이며 상태 로그는 절대 경로를 언급하지 않습니다. 나는 그것이 현재 디렉토리에 상대적이라고 생각한다. 그래서 CMD 프롬프트 나 Powershell의 현재 디렉토리는 무엇인가?

+0

죄송합니다. XML 구성 파일의 첫 번째 줄을 붙여 넣지 않았습니다. 공개 게시물을 업데이트하겠습니다. BTW, 상태 = "TRACE"인 출력입니다. http://pastebin.com/i2a6fwxT 내 비즈니스 로직의 일부로 인해 출력의 다음 줄이 표시되지 않습니다. – Slash90ITA

+0

감사합니다! 나는 내 대답을 편집했다. –

+0

좋아, 로그 폴더는 Powershell (c : \)의 현재 디렉토리 아래에 만들어집니다. 도움 주셔서 감사합니다;)하지만 jar 디렉토리에 폴더를 만들려면 log4j2.xml을 어떻게 설정해야합니까? – Slash90ITA