SLF 4 Jのいくつかの実用的なアプリケーションモデル--:SLF 4 J+Log 4 JとSLF 4 J+LogBack

10212 ワード

SLF 4 J(Simple Logg_Facade for Java)は汎用的なログフレームであり、Facadeとは何かを言ってはいけません。目につくキャラクターはJakata Commons Loggingに相当します。JCLのように、Log 4 J、java.util.loging、Simple Loggerなどのように、具体的な情報出力を完成する必要があります。SLF 4 Jの本来の意味は様々な下層のログフレームをサポートして実現することができますが、最高のログ実現は相変わらずLog 4 Jです。だから、本編ではSLF 4 Jの第一の使い方を説明します。
SLF 4 J+Log 4 J
必要な配置ファイルとコンポーネントパッケージ、次の三つのjarファイルと一つのpropertiesファイルはプロジェクトのクラスパスパスPathに置くべきです。
1.slaf 4 j-appi-1.5.11.jar 2.slaf 4 j-log 4 j 12-15.11.jar 3.log 4 j-1.2.15.jar 4.log 4 j.properties(log 4 j.xmlでもいいです。本例ではlog 4 j.propertesを使用します。)
前の二つのカバンはhttp://www.slf4j.org/download.html でダウンロードして、後のカバンはhttp://logging.apache.org/log4j/1.2/download.html ダウンロードは、ファイル名のバージョン番号が少し悪いかもしれません。大丈夫です。
log 4 j.propertiesは以前はどう書きますか?今はどう書きますか?例えば一番簡単な内容はコンソールにのみログ情報を出力します。 
1.log4j.rootLogger=DEBUG,console  

2.log4j.appender.console=org.apache.log4j.ConsoleAppender

3.log4j.appender.console.layout=org.apache.log4j.PatternLayout

4.log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
SLF 4 Jを使う  のコード: 
01.package com.unmi; 

02.

03.import org.slf4j.Logger;

04.import org.slf4j.LoggerFactory;

05.

06.public class TestSlf4j {

07. private static final Logger logger = LoggerFactory.getLogger(TestSlf4j.class);

08.

09. public static void main(String[] args) {

10. logger.info("Hello {}","SLF4J");

11. }

12.}
これを実行して、コンソール出力:
2010-04-07 17:14:51,390[comp.unmi.TestSlf 4 j]-[INFO]ハローSLF 4 J
このようなSLF 4 J+Log 4 Jの使用パターンをかつて覇者の地位だったJCL+Log 4 Jの使い方と比較してみます。
SLF 4 J+Log 4 jグループはJCL+Log 4 Jグループslaf 4 j-appi-1.5.11.jarに相当し、高層API comons-loging-1.11.jarを定義します。      slaf 4 j-log 4 j 12-155.11.jar相当、左はバインディングバッグ、右はプロファイルでログを指定してcommons-loging.propertiesを実現します。内容は:org.apaache.co mmons.logFactory=org.apaache. com mmons.logging.impl. LogFactoryImplまたはorg.apach. com.log=org.apphe.com mmons.logggggg. impl. log. log. logg. impl. Log.Log.Log.Log.log4.Log.Log.Log.Log.Log.log4 JJlog4 Jlogggggg4.loggggggggggg4.Log.logggggggggggg4.logggggggggggggg4 j.ロギング;import org.sf 4 j.ロギングFactory;
ロギングロゴ=ロギングFactory.get Logger(TestSlf 4 j.class)logger.info(“Hello{}、“SLF 4 J”);左から侵入したのはSLF 4 J APIで、右はJCLのAPIに汚染されました。
SLF 4 Jはパラメータ化をサポートしていますが、JCLはプログラムコードの中で、import org.apphe.com mmons.loging.Log;import org.apache.com mmons.loging.Log Factory;
Log log=Log Factory.get Log(TestJ CL.class);
log.info(「ハローJCL」);
上の比較から見ると、SLF 4 j+Log 4 jとJCL+Log 4 Jの使い方は似ています。主な違いはSLF 4 Jでjarでどのようなログで実現されるかを知らせます。JCLはプロファイルを通してどのログを選択するかを実現します。
なぜSLF 4 Jが興ったのか、SSH三雄(Spring、Struts、Hibernate)とWASアプリケーションサーバがあります。小さいものは数え切れないほどです。以前使っていた一般的な日誌の枠組みが全部そろっているJakata Commons Logg(JCL)はログ4 jを使用しています。なぜ今はHiberga、Tapesty、Jbty 6、Jbty 6などが続々と変化していますか?SLF 4 Jを採用しましたか?SLF 4 JはJCLと比べて、その見所があります。
その中でも、SLF 4 Jはクラスのキャリアの影響が小さく、メモリオーバーフローが発生しにくいという問題を受け、性能が改善されました。さらに、主にブームに順応した発展です。
------------------------------------------------------------------------------------
二)SLF 4 J+LogBack
前に述べたSLF 4 Jの使い方の一つはSLF 4 J+Log 4 Jです。ここで発売する組み合わせはSLF 4 J+LogBackです。Log 4 Jは不要ですか?Log 4 Jよりも良いログがありますか?はい、答えはLogBackです。LogBackとLog 4 Jが同じ大家の手であることを知っていたら、驚かないでしょう。LogBackはLog 4 Jを強化し、SLF 4 Jの懐に抱かせ、作者にLog 4 Jの後継者として認定された。
なぜLogbackなのかは分かりませんが、とにかくBrokebackと呼ばないでください。Log 4 Jの代わりにLogbackが推奨されている十数個の理由:Reasons to prefer logback over logs 4 jは、大きくて速いということです。良いテストSLF 4 Jとは関係がない。豊富なドキュメント;設定ファイルを自動的に読み込むことができます。複数のJVMが1つのログファイルを書いたり、他のI/Oエラーが発生した場合はプログラムの実行に影響しません。プロファイルに条件制御を追加します。強力なログフィルタ;より強いログカット機能。ログファイルを自動圧縮、削除します。異常スタック中のデータ情報がより多くなります。
Logbackは三つのモジュールに分けられます。logback-core、logback-classic、logback-access。logback-coreはコアです。logback-classicはlog 4 jを改善して、自身はSLF 4 J APIを実現しました。だから、Logbackを使って、元のLog 4 J、java.util.logingなど他のログを使って実現できます。logback-accessはhttpを通じてアクセスできるようにします。
もう一つお願いします。LogbackはOGI環境においてもっといいです。はい、簡単にLogbackを紹介しました。具体的にどうやって使うかを確認してみます。
必要な配置ファイルとコンポーネントパッケージ、次の三つのjarファイルと一つのxmlファイルは全部プロジェクトのクラスパスパスパスに載せます。
1.slaf 4 j-ap-1.5.1.jar 2.logback-coree-00.90.jar 3.logback-classic-0.0.jar 4.logback.xmlまたはlogback-test.xml(log 4 j.properties/logl 4 j.xmlに類似)
前のカバンはhttp://www.slf4j.org/download.html をダウンロードしてください。http://logback.qos.ch/download.html ダウンロードは、ファイル名のバージョン番号が少し悪いかもしれません。大丈夫です。ここでHTTPアクセスログ情報をデモしないので、logback-access-00.90.jarを使う必要はありません。
Logbackはまずlogback-test.xmlを探しています。なければlogback.xmlファイルを探しています。見つけられないならBaic Configratorの基本的な配置を使います。Baic Configratorはなどに貼られるlogback.xmlファイルの内容に相当する配置です。ここではlogback.xmlのプロファイルを使って、以前のlog 4 j.properties  ファイルはPropertiesTranslatorでlogback.xmlファイルの内容に変換できます。
以下は一番簡単なlogback.xmlファイルの内容です。 
01.<?xml version="1.0" encoding="UTF-8"?>  
02.<configuration>
03. <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
04. <encoder charset="GBK">
05. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
06. </encoder>
07. </appender>
08.
09. <root level="DEBUG">
10. <appender-ref ref="stdout" />
11. </root>
12.</configuration>
 
log 4 j.xmlでできる構成は、logback.xmlでもできます。また、<if><then><else>、<filter>、<sift>などのより強い制御も強化されていますので、logbackのマニュアルを参照してください。http://logback.qos.ch/manual/index.html。
ロックバックを使う  コード 
01.package com.unmi; 
02.
03.import org.slf4j.Logger;
04.import org.slf4j.LoggerFactory;
05.
06.public class TestLogback {
07. private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
08.
09. public static void main(String[] args) {
10. logger.info("Hello {}","TestLogback");
11. }
12.}
SLF 4 Jのコードを使っているのと何の違いも見られません。元々使っていた一般的なログフレームはSLF 4 Jです。つまり、ここのLogbackはSLF 4 J+Log 4 Jの使い方の中のLog 4 JとLog 4 Jの機能に相当します。
上のコードを実行して、出力:
21:38:43.031[main]INFO  comp.unmi.TestLogback-Hello TestLogback
やはり前回と同じです。ここでSLF 4 J+LogbackとSLF 4 J+Log 4 Jの2つの方式を比較します。
SLF 4 J+LogbackはSLF 4 J+Log 4 Jグループslaf 4 j-appi-1.51.jarのように、高層APIを定義します。slaf 4 j-appi-1.5.1.jar logback-classi-0.4.jarは、ここでLogbackバインディングslock 4 j-lock 4 j 4 j-logback 4 j 4 J-logic 4 J 12-1.5.logjackとしています。logbackはlogl 4 j logl 4 j.properties/logl 4 j.xmlプログラムコードに追加されました。import org.sf 4 j.ロギングFactory;
ロギングロゴ=ロギングFactory.get Logger(TestSlf 4 j.class)logger.info(“Hello{}、“SLF 4 J”);まったく同じです。実質的にはSLF 4 J APIだけがアプリケーションコンポーネントに侵入しました。Logbackとは関係がありません。プログラムコード中:import org.slif 4 j.Logger;import org.sf 4 j.ロギングFactory;
ロギングロゴ=ロギングFactory.get Logger(TestLogback.class)logger.info("Hello{}"、"Logback")
上記を通じて、SLF 4 J+Logbackという組み合わせはSLF 4 J+Log 4 Jのような使い方とあまり違いがないことが分かりました。SLF 4 Jは他のログを使ってフレームを実現する時、SLF 4 J+それぞれのバインディング+ログを実現します。ここでSLF 4 J+Log 4 Jと略されています。中にSLF 4 JからLog 4 Jまでのバインディングがあります。それらを完全に表現すると:
SLF 4 J+Log 4 Jの方式:    slaf 4 j-appi-1.5.11.jar+slaf 4 j-logl 4 j 12-1.5.1.jar+logback 4 j-1.2.15.jar SLF 4 J+Logbackの方式:slaf 4 j-ap-1.5 1.jar+logback-classi-0.90.jar+logback-classic-0.90    前のlogback-classic-09.20.jarはバインディング用として、後の一つはログとして使われています。つまりlogback-classic-09.20.jarは前のsf 4 j-logl 4 j 12-1.5 1.jarとlogl 4 J-1.2.15.jarの二つのカバンの機能を合わせました。
Logbackがその中で担当しているキャラクターを知ると、Logbackアプリケーションコンポーネントを使っていると言われていますが、実際に使っているのはSLF 4 Jだけです。LogbackはLog 4 Jのように、自身がバインディングしたログを持って実現したとも言える。
Logback公式ホームページでhttp://logback.qos.ch/ 面の中にLogbackを使った項目が見られます。