2017-05-02 33 views
0

最近Log4jを使用し始めました。私はパラメータ化されたロギングのより良いロギング手法を見つけました。log4jを使用したjavaのパラメータ化されたログのエラー

私は以下のリンクを参照しました。

https://logging.apache.org/log4j/2.x/performance.html

上記のリンクはlog4j2ためです。しかし、私は同じことが1.2.9に当てはまるかどうか疑問に思っていた。

私はパラメータでロガーの文を書こうとすると、以下のエラーが表示されます。タイプカテゴリで

方法情報(オブジェクト、Throwableのは)私はlog4jのを使用しています

のソースコードをチェックし

引数(文字列、文字列)には適用されません です1.2.9

Javaコードは以下のとおりです。

import org.apache.log4j.Logger; 

import com.test.validators.CreateValidator; 

public class CreateLogic { 

    Logger admin = Logger.getLogger("admin"); 

public void createLogic(){ 
    admin.info("This is Create Logic"); 
    CreateValidator CreateValidator = new CreateValidator(); 
    CreateValidator.validateCreate(); 
    int i = 5; 
    admin.info("the name is {}",i); 

    } 

} 

log4jの特性は以下の通りである。

log4j.logger.admin=INFO, admin 
log4j.additivity.admin = false 

log4j.appender.admin=org.apache.log4j.RollingFileAppender 
log4j.appender.admin.File=C:\\Create.log 
log4j.appender.admin.MaxFileSize=5MB 
log4j.appender.admin.MaxBackupIndex=1 
log4j.appender.admin.layout=org.apache.log4j.PatternLayout 
log4j.appender.admin.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n 
+0

あなたはそうです。 '.info(Object message、Throwable t)'は、1.xと2.xの両方のAPIで提供されています。あなたは、あなたが「私」をThrowableとして渡しているように見えますが、そうではありません。 – Ishnark

+0

この場合、どのようにパラメータ化されたロガーを記述しますか? –

+0

私は問題を参照してください – Ishnark

答えて

2

あなたは2.xのAPI から参照する方法は、あなたが望む方法では少なくともないパラメータ化、ロギング、またはです。あなたが実際に望む方法はvoid info(String message, Object... params)です。このメソッドはlog4j 2.x APIの一部です。 log4j 1.xはそれ自体では提供していないようです。しかし、でlog4jにバインドされていない場合は、本質的にlog4j実装を隠し、パラメータ化されたロギング機能を提供するsl4jライブラリをご覧ください。

あなたはその後、私は一つの解がそうのように、あなたはログメッセージに渡されていたパラメータを使用して、事前にメッセージをフォーマットすることだと思う、log4jのにバインドある場合:

int i = 5; 
String msg = String.format("the name is %d", i); 
admin.info(msg); 

希望に役立つこと。

関連する問題