Eclipseと私のJavaアプリケーションがlog4j.properties
ファイルを使用するようにセットアップするために最善を尽くしました。しかし、プロパティファイルを使用していないようで、よくわかりません。なぜ。
ライブラリ:slf4j-api-1.6.1、slf4j-jdk14-1.6.1
アプリケーション内では、ロギングは正常に機能します。情報、警告、およびエラーをEclipseコンソールに出力できます。
私ができるようにしたいのは、ログレベルを変更して、すべてのログメッセージをデバッグし、コンソールとログファイルの両方に出力することです。
次のようなlog4j.properties
ファイルを作成しました。
log4j.rootLogger=DEBUG,console,file
log4j.rootCategory=DEBUG, R, O
# Stdout
log4j.appender.O=org.Apache.log4j.ConsoleAppender
# File
log4j.appender.R=org.Apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=5
log4j.appender.file.File=checkLog.log
log4j.appender.file.threshold=DEBUG
log4j.appender.R.layout=org.Apache.log4j.PatternLayout
log4j.appender.O.layout=org.Apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
私のディレクトリ構造は次のようになります。
My Project
--src/
----MYProject/
------*.Java
--bin/
----MYProject/
------*.class
--log4j/
----log4j.properties
Eclipseではこれは次のとおりです。
実行構成->クラスパス(タブ)->、右クリックユーザーエントリ->「log4j」を新しいフォルダとして追加し、保存しました。
次に、私のコードでは、次のようにロガーを呼び出します(構文エラーが発生する可能性があるため、アプローチを示すサンプルコード)。
package MYProject;
import org.slf4j.LoggerFactory;
public class MyClass{
final org.slf4j.Logger test_logger = LoggerFactory.getLogger(MyClass.class);
public MyClass(){}
public someMethod(){
test_logger.debug("Some Debug");
test_logger.info("Some Info");
test_logger.warn("Some Warning");
test_logger.error("An Error");
}
}
次に、someMethod
を呼び出すと、INFO
、WARN
、ERROR
がEclipseコンソールに出力されます。 DEBUG
は出力されず、ファイルにも出力されません。
私が間違っているかもしれないことについての提案をいただければ幸いです。
log4j.properties
の前のクラスパスに別のlog4j.xml
またはlog4j.properties
ファイルがある可能性があります。プロジェクトの実行構成を開き、-Dlog4j.debug=true
をVMプロジェクトの引数として追加します。これにより、構成を含む多くの追加情報をコンソールに出力するようにlog4jに指示されます。使用しているファイル。
ロギングファサードを使用している場合slf4jの場合、対応するjarファイルを含めることにより、正確にoneのロギングバックエンドを指定する必要があります。そのバックエンド。あなたの場合、クラスパスにslf4j-jdk14-x.x.x.jar
をインストールしました。これは単なる一般的なロガーバックエンドです。
log4jバックエンドを使用するには、slf4j-jdk14-x.x.x.jar
を削除し、slf4j-log4j12-x.x.x.jar
に置き換える必要があります。削除しない場合、slf4jはバックエンドjarを1つだけ選択する必要があり、おそらく必要なものではありません。
もちろん、クラスパスにも実際のlog4j-x.x.x.jar
ファイルが必要です。
これらのjarが適切に配置されると、-Dlog4j.debug
のVMパラメーターが実際に機能し、ログ構成の取得元のデバッグに役立ちます。
プロパティファイルを使用するようにコードに指示する必要があります。ロギングを行う前に、
PropertyConfigurator.configure("log4j/log4j.properties");
ターゲットディレクトリに古いバージョンがある可能性があります。プロジェクトをクリーンアップして、再試行してください。
それとは別に、Eclipseを介してlog4j.propertiesを追加しなかった場合は、必ずEclipseプロジェクトを更新にする必要があります。
パスプロジェクトプロパティ/ライブラリタブでプロジェクトのjre(JREシステムライブラリ)を削除し、jreを再設定してください!