Log4j를 사용하여 패키지의 로그 수준을 어떻게 변경합니까?
다음 버그가 발생했습니다.
http://issues.apache.org/jira/browse/AXIS2-4363
다음과 같이 명시되어 있습니다.
이 오류는 org.apache.axiom의 로그 수준이 DEBUG 인 경우에만 발생하므로 해결 방법은 로그 수준> DEBUG를 설정하는 것입니다.
제 질문은 어떻게해야합니까? 나는 속성 파일이나 무언가를 위해 디렉토리를 샅샅이 뒤졌고 코드에 설정할 수있는 것이 있는지 확인했지만 실제로 내가 뭘하고 있는지 전혀 모른다. 이 작업을 수행하는 동안 지금 내 데스크톱에서 콘솔 앱을 실행하고 있습니다.
업데이트 1 : Axis2 디렉토리의 루트에 자체 log4j.properties 파일이 있음을 확인했습니다. 이것은 안전하게 무시됩니까, 아니면 솔루션의 일부입니까 (또는 문제의 일부)?
업데이트 2 : 루트 수준 log4j.properties 파일이 제대로 설정되지 않았습니다. 지금은 다음과 같습니다.
log4j.rootLogger=DEBUG, R
log4j.logger.org.apache.axiom=WARN
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
그러나이 코드는 "Log level is null"을 반환하므로 분명히 잘못된 것입니다.
System.out.println("Log level is " + logger.getLevel());
지금은 다음을 사용하여 코드에서 로그 수준을 설정하고 있습니다.
Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);
어떤 앱 서버를 사용하고 있습니까? 대부분의 요즘은 Log4J 또는 java.util.logging의 래퍼로 Commons-Logging을 사용하지만 각각은 로깅 구성을 다른 위치에 둡니다.
예를 들어 Tomcat을 사용하는 이 문서 에서는 두 옵션 중 하나를 사용하여 로깅을 구성하는 옵션을 설명합니다. 두 경우 모두 각 패키지의 로그 수준을 정의하는 구성 파일을 찾거나 만들어야하며 로깅 시스템이 로그 정보 (일반적으로 콘솔, 파일 또는 db)를 출력 할 각 위치를 지정해야합니다.
log4j의 경우 이것은 log4j.properties 파일이며, 위의 링크의 지침을 따르면 파일이 다음과 같이 시작됩니다.
log4j.rootLogger=DEBUG, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
가장 간단한 방법은 줄을 변경하는 것입니다.
log4j.rootLogger=DEBUG, R
다음과 같이 :
log4j.rootLogger=WARN, R
그러나 여전히 자신의 클래스에서 자신의 DEBUG 수준 출력을 원한다면 다음과 같은 줄을 추가하십시오.
log4j.category.com.mypackage=DEBUG
Log4J 와 Commons-Logging 에 대해 조금 읽으면 이 모든 것을 이해하는 데 도움이 될 것입니다.
오늘도 똑같은 문제가 발생했습니다, Ryan.
내 src (또는 루트) 디렉토리에서 이제 내 log4j.properties 파일에 다음과 같은 추가 사항이 있습니다.
# https://issues.apache.org/jira/browse/AXIS2-4363
log4j.category.org.apache.axiom=WARN
이 작업을 수행하는 방법에 대해 알려 주셔서 감사합니다, Benjamin.
내 작업 :
log4j.logger.org.hibernate.type=trace
또한 시도해 볼 수 있습니다.
log4j.category.org.hibernate.type=trace
방금 문제가 발생했으며 위의 모든 내용과 모든 것을 읽은 후에도 무엇이 잘못되었는지 파악할 수 없었습니다. 내가 한 것은
- 루트 로거 레벨을 WARN으로 설정
- 패키지 로그 수준을 DEBUG로 설정
각 로깅 구현에는 속성 또는 코드를 통해 설정하는 고유 한 방법이 있습니다 (이에 대한 많은 도움말 제공).
위의 모든 사항에 관계없이 콘솔이나 로그 파일에서 로그를 얻지 못할 것입니다. 내가 간과했던 것은 다음과 같습니다.
All I was doing with the above jugglery was controlling only the production of the logs(at root/package/class etc), left of the red line in above image. But I was not changing the way displaying/consumption of the logs of the same, right of the red line in above image. Handler(Consumption) is usually defaulted at INFO, therefore your precious debug statements wouldn't come through. Consumption/displaying is controlled by setting the log levels for the Handlers(ConsoleHandler/FileHandler etc..) So I went ahead and set the log levels of all my handlers to finest and everything worked.
This point was not made clear in a precise manner in any place.
I hope someone scratching their head, thinking why the properties are not working will find this bit helpful.
set the system property log4j.debug=true. Then you can determine where your configuration is running amuck.
ReferenceURL : https://stackoverflow.com/questions/1725958/how-do-you-change-a-packages-log-level-using-log4j
'program story' 카테고리의 다른 글
PHP에서 finally 블록의 부족을 어떻게 해결할 수 있습니까? (0) | 2020.12.31 |
---|---|
Haskell에서 .hs 파일을 가져 오는 방법 (0) | 2020.12.31 |
Erlang의 Let-it-crash 철학-다른 곳에 적용 할 수 있습니까? (0) | 2020.12.31 |
IIS 7.5를 사용하여 ASP.NET MVC에서 Json 결과를 압축하는 방법 (0) | 2020.12.30 |
jQuery-복잡한 HTML 조각을 만드는 모범 사례 (0) | 2020.12.30 |