2012-06-20 13 views
9

特定のクラスのエラーをログに記録するには、次のようにクラス名にアクセスします。 クラス名を文字列として返すようにするのは良い方法ですか?ロギングに使用できます?ロギングのクラス名を取得する

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

答えて

4

log4j.xml自体でロギングパラメータを設定できます。 EXPについては

-

<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> 

それはswcd-web.logファイル内でこのような例外が記録されます - 私はそれをこのようにやる

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

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

何かが変わった場合には簡単にすることができますが、これを行う別の方法があります。

+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"); 

ザ・あなたは(あなたは、Apacheのlog4jを使用している場合java.util.logging、またはlog4j.propertiesの場合にlogging.properties中)ロギングサービスを設定することができますすべてのログメッセージのクラス名

1

使用しているログライブラリを指定していないので、私はslf4jを使用することをお勧めします。私はそれがあなたが得ることが最も簡単だと思う。あなたは、単にこのようなSLF4JのLoggerFactoryからLoggerオブジェクトを尋ねる:

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

は今、あなたは、ロギング用のLoggerオブジェクトを使用することができます。

LOGGER.error(yourMessage, throwable); 

あなたは、単純な文字列メッセージや全体の例外を送ることができます。たとえば、エラーをログ

は次のようになります。

7

のJava 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

エラーが発生しました:getLogger(Class )の型がLoggerFactoryタイプで未定義です –

+0

非常に奇妙です。とログバック? – MariuszS

+0

ログバックを使用していない、ありがとう –

関連する問題