2012-06-20 4 views
9

주어진 클래스에 대한 오류를 기록하려면 다음과 같이 클래스 이름에 액세스합니다. 클래스 이름을 String으로 반환하여 '로깅에 사용할 수있는 좋은 방법'입니까? ?로깅을위한 클래스 이름 얻기

private static final String CLASS_NAME = MyClass.class.getName(); 
logger.error("Error occurred in "+CLASS_NAME); 

답변

4

log4j.xml 자체에서 로깅 매개 변수를 설정할 수 있습니다.

logger.error("Error occured in " + this.getClass().getName()); 

:

2012-05-23 16:34:51,632 [main] ERROR com.idc.sage.sso.dynamo.SsoDbStorage - cannot get configuration for max SSO age 
+0

문제는 log4j에 대한 없습니다. –

1

내가 이런 식으로 할 것 - 그것은 SWCD-web.log 파일에서이 같은 예외를 기록 할

<appender name="swcd-web" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="Threshold" value="DEBUG"/> 
    <param name="Append" value="true"/> 
    <param name="File" value="${catalina.home}/logs/swcd-web.log"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> 
    </layout> 
</appender> 

- 특급 들어

무언가가 바뀌면 더 쉽게 이해할 수 있지만 다른 방법이 있습니다. 당신이 로거 이런 식으로 초기화하면

+1

this.getClass(). getName()은 패키지를 포함한 전체 클래스 이름을 제공합니다. 잘라 버리고 클래스 이름 만 사용합니다. – 18bytes

+1

선호하는 경우 this.getClass(). getSimpleName()을 사용할 수 있습니다. – raven1981

4

:

private static Logger logger = Logger.getLogger(MyClass.class.getName())> 

다음 클래스의 이름이 모든 이벤트 로그에있을 것이다, 당신은 명시 적으로 모든 로그 호출에 넣을 필요가 없습니다 :

포함
logger.error("Error occured while doing this and that"); 

당신이 (당신은 아파치의 log4j를 사용하는 경우 java.util.logging, 또는 log4j.properties의 경우 logging.properties에) 로깅 서비스를 구성 할 수 있습니다 모든 로그 메시지의 클래스 이름

1

사용중인 로깅 라이브러리를 언급하지 않았으므로 slf4j을 사용하는 것이 좋습니다. 나는 당신이 얻을 수있는 가장 쉬운 방법이라고 생각합니다. 당신은 단순히이 같은 SLF4J의 LoggerFactory에서 로거 객체를 요청 :

private static final Logger LOGGER = LoggerFactory.getLogger(YouerClass.class); 

지금 당신은 로깅 로거 객체를 사용할 수 있습니다. 예를 들어 오류 로깅

다음과 같습니다

LOGGER.error(yourMessage, throwable); 

당신은 간단한 문자열 메시지 나 전체 예외를 보낼 수 있습니다.

7

자바 (8) 솔루션

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import java.lang.invoke.MethodHandles; 
... 

private final static Logger LOG = 
        LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); 
+0

오류가 발생합니다. LoggerFactory 유형에 대해 getLogger (Class ) 메소드가 정의되지 않았습니다. –

+0

매우 이상합니다. Java 8을 사용하고 있습니까? 그리고 로그백? – MariuszS

+0

Logback을 사용하지 않음, 감사합니다 –