2010-12-01 3 views
2

어쨌든 또는 "로깅 수준"구성이 발생할 때마다 log4j에 줄을 기록하도록하는 구성이 있습니까?로깅 수준 변경시 알림 Log4j

누군가가 디버그 레벨을 INFO에서 DEBUG로 변경 한 패키지를 변경했는데, 그 이벤트가 log4j에 의해 기록되기를 바랍니다.

감사합니다.

+0

참조하십시오. 응용 프로그램을 다시 배포해야합니다. 나는 그것이 런타임 이벤트라고 생각하지 않는다. – duffymo

+0

틀렸어. 런타임에 log4j.properties 나 log4j.xml을 uddated로 설정할 수있다. – Roman

답변

0

Log4J의 자체 로깅 인 LogLog가 있습니다. 나는 그것을 사용한 적이 없다. 그러나 해결책이 존재한다면 그것은 거기에있다. log4j의 소스 코드를 다운로드하고 로그 레벨이 변경된다는 것을 "알고있는"곳에서 조사하도록 제안합니다. 일단 코드가 발견되면 자체 로그에 내용을 인쇄하고 필요한대로 구성하는지 확인하십시오.

찾을 수 있으면 여기에 구체적인 답변을 게시 할 수 있다면 감사하겠습니다. 행운을 빕니다. 당신이 JSP로 서블릿, 또는 로그 수준을 변경할 수 있습니다 응용 프로그램에서 화면이 있으면이를 기록하기 위해 런타임시

+0

사용할 수있는 준비된 솔루션이 없다면 OK 일 수도있다. – Roman

+0

이 클래스에는 setInternalDebugging (boolean) 메소드가있다. 그것은 당신을 줄지도 모르지만 당신이 원하지만 더 많은 것을 가지고 갈 수 있습니다. 이 많은 로깅을 사용하기 위해 성능이 저하 될 것입니다. 그 다음에는 클래스가 Logger처럼 작동합니다. – Sean

0

, 당신이 가장 가능성이

public void changeLogLevel(String className, String logLevel){ 
    Logger logger = Logger.getLogger(className); 
    Level level = Level.toLevel(logLevel); 
    logger.setLevel(level); 
} 

같은 일을하고있을 것 이벤트는, 당신이해야 할 것입니다 모두가 다음 로그 레벨이 발생할 때마다, 당신은 여기를 기록 할 수 있습니다이 이벤트

private static Logger classLogger = Logger.getLogger(ThisClass.class); 
public void changeLogLevel(String className, String logLevel){ 
    Logger logger = Logger.getLogger(className); 
    Level level = Level.toLevel(logLevel); 
    logger.setLevel(level); 
    classLogger.debug("The Level of " + className + " has changed to " + logLevel); 
} 

에 대한 추가 로거 문을 추가합니다. 당신이 좋아하기를 원한다면,이 로그를 자신의 파일로 보내면됩니다. 로그 수준을 변경 한 사용자의 IP/사용자 이름을 포함하도록이 방법을 더욱 발전시킬 수 있습니다.

응용 프로그램을 제어 할 수있는 경우 응용 프로그램에서 사용자가 로깅 수준을 변경할 수있는 유일한 지점인지 확인하십시오.

+0

아니요. 로그 수준은 properties 및 xml 파일에서 설정됩니다. Log4j는 해당 파일에 자동 리스너를 가지고 있습니다. – Roman

+0

청취자의 경우 파일에 새로운 타임 스탬프가 있어야하며 새 버전이 있으면 메모리의 이전 구성을 지우고 새 파일을로드합니다. 나는 그것이 줄 단위로있을 것이라고는 생각하지 않는다. 이 경우 각 줄은 "새로운"것입니다. log4j 디버그 (log4j.configDebug 플래그)를 설정하지 않으면 변경된 내용을 정확하게 캡처 할 수 있을지는 의문입니다. Log4j를 구성하는 방법을 보여주기 위해 원래의 질문을 업데이트 할 수 있습니다. – Sean

0

이 질문에 대한 답변은 없지만 기본 제공 java.util.logging.LogManager 구현에는 원하는대로 정확하게 수행 할 수있는 addPropertyChangeListener() 메소드가 있습니다.

내가 Log4J를에 비교 아무것도 찾을 수 없습니다,하지만 난 그 하드 보이지 않았다 ...

관련 문제