以下のコードはJava 1.6:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static Logger log = LoggerFactory.getLogger(myfile.class);
ここで、slf4j-api-1.6.4.jarとslf4j-simple-1.6.4.jarをクラスパスに配置すると、コードは正常にコンパイルされますが、すべての情報はどこに記録されますか????
Log.info( "test");を実行しました。ただし、ログファイルは作成されません。以下の内容でlog4j.propertiesを作成してみました。
log4j.appender.stdout=org.Apache.log4j.RollingFileAppender
log4j.appender.stdout.File=/var/abc.log
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}]%6p %c{1}:%L - %m%n
log4j.appender.stdout.MaxFileSize=50000KB
log4j.appender.stdout.MaxBackupIndex=200
log4j.rootLogger=info, stdout
しかし、それは機能していません。log4jには上記のファイルが必要ですが、slf4jはどのように機能しますか? log4jに似たプロパティファイルを作成する必要がありますか?もしそうなら、どこに置く必要がありますか?
ありがとう!
SLF4Jは、さまざまなロギングフレームワークを簡単に切り替えることができる単なるファサードです。SLF4JAPIを使用するすべてのロギング呼び出しは、基盤となるロギングフレームワークに委任されます。
SLF4Jのプロパティファイルを作成する必要はありません。必要なのは、ロギングフレームワークに一致する正しい「SLF4Jバインディング」jarを使用して、SLF4JAPIのすべてのロギング呼び出しを基盤となるロギングフレームワークに委任することです。次の図は、SLF4J、「SLF4Jバインディング」、および基盤となるロギングフレームワーク間の関係を示しています。
slf4j-simple-1.6.4.jar
はすべてのイベントをSystem.errに委任しますが、log4j APIには委任しません。したがって、代わりにslf4j-log4j12-1.6.4.jar
を使用する必要があります。
要約すると、次のjarを使用する必要があります。
参照
SLF4Jは単なるロギングの抽象化であり、ログ自体は書き込みません。使用 Logback -SLF4Jをネイティブに実装し、SLF4Jとlog4jを書いたのと同じ人によって書かれています。 SLF4JとLogbackは優れたフレームワークです。SLF4Jが他のフレームワーク(JUL、Commons Logging、log4j)を選択したフレームワーク(Logback)にブリッジする方法が気に入っています。
Slf4j-api(jar)を使用しました。依存関係(jar)のlogback-coreをlogback-classicに置き換えてから、ロギングを開始しました。