slf 4 jの使用

3164 ワード

最近ibatis 3開発プロジェクトを利用して、ibatis 3の圧縮パッケージからslf 4 jを発見しました.以前は使ったことがありませんが、他の場所ではlog 4 jが多く、slf 4 jを使ったことがありません.ibatis 3はslf 4 jをお勧めしているようです.ネットで資料を探してみると、使いやすいことがわかりました.
 
SLF 4 Jは具体的なログソリューションではなく、様々なログシステムにのみサービスを提供します.公式には、SLF 4 Jは、エンドユーザーがアプリケーションの導入時に所望のログシステムを使用できるようにするログシステム用の簡単なFacadeです.実際、SLF 4 Jが提供するコアAPIは、いくつかのインタフェースおよびロガーファクトリのファクトリクラスである.ある程度、SLF 4 JはJDBCに似ていますが、JDBCよりも簡単です.JDBCではドライバを指定する必要がありますが、SLF 4 Jを使用する場合は、その具体的なログシステムを使用する必要はありません.JDBCを使用して特定のデータベースを基本的に考慮しなくてもよいように、SLF 4 Jは統一的な記録ログのインタフェースを提供しており、その提供方法に従って記録すればよく、最終ログのフォーマット、記録レベル、出力方式などは特定のログシステムの構成によって実現されるため、アプリケーションで柔軟にログシステムを切り替えることができる.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Wombat {
final Logger logger = LoggerFactory.getLogger(Wombat.class);
Integer t;
Integer oldT;

public void setTemperature(Integer temperature) {
   oldT = t;
   t = temperature;
  
   Object[] objs = {new java.util.Date(), oldT, t};
   logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs);
   if (temperature.intValue() > 50) {
    logger.warn("Temperature({}) has risen above 50 degrees.", t);
   }
}

public static void main(String[] args) {
   Wombat wombat = new Wombat();
   wombat.setTemperature(10);
   wombat.setTemperature(60);
}
}

 
1.SLF 4 Jが提供するsimple logを使用して、以下のjarパッケージをプロジェクトに追加し、slf 4 j-api-1.5.2を実行する.jarslf4j-simple-1.5.2.JAr最終出力:32[main]INFO Wombat-Today is Wed Sep 10 14:50:57 CST 2008,Temperature set to null.Old temperature was 10.32 [main] INFO Wombat - Today is Wed Sep 10 14:50:57 CST 2008, Temperature set to 10. Old temperature was 60.32 [main] WARN Wombat - Temperature(60) has risen above 50 degrees.
2.SLF 4 Jが提供するsimple logを使用して、以下のjarパッケージをプロジェクトに追加し、slf 4 j-api-1.5.2を実行する.jarslf4j-jdk14-1.5.2.JAr最終出力:2008-9-1015:01:20 Wombat setTemperature情報:Today is Wed Sep 10 15:01:20 CST 2008、Temperature set to null.Old temperature was 10.2008-9-1015:01:20 Wombat setTemperature情報:Today is Wed Sep 10 15:01:20 CST 2008、Temperature set to 10.Old temperature was 60.2008-9-10 15:01:20 Wombat setTemperature警告:Temperature(60)has risen above 50 degrees.
3、配置は简単でしょう以上の事例から分かるように、SLF 4 Jを配置してそのログシステムを使用するのはとても简単なことで、あなたが使用するログシステムに対応するjarパッケージをプロジェクトに加入すれば、SLF 4 Jは自动的にあなたが加入したログシステムを使用することを选択します.この方法を静的バインドと呼ぶ.もちろん、ログシステムに関するクラスライブラリは少なくありません.例えば、log 4 jを使用する場合は、log 4 jのクラスライブラリが必要です.log 4 jの構成もあるかもしれません.properties.
 
4、フォーマットログSLF 4 Jはまた、事例中の文:logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs);5、ログシステムバインド原理応用中、Logger Factoryクラスの静的getLogger()によってloggerを取得する.このクラスのコードを見ると、最終的にはStaticLoggerBinderを通過する.SINGLETON.getLoggerFactory()メソッドはLogger Factoryを取得し、その特定のLogger Factoryによってloggerを取得する.クラスorg.slf4j.impl.StaticLoggerBinderはslf 4 j-api-1.5.2ではない.jarパッケージでは、特定のログシステムに対応するjarパッケージをよく見ると、対応するjarパッケージにorgが1つあることがわかります.slf4j.impl.StaticLoggerBinderの実装は,そのログシステムに対応するLoggerFactoryを返す実装が異なるため,いわゆる静的バインディングを実現し,異なるjarパケットを選択すれば簡単に柔軟に構成できるという目的を達成した.