1:log4jはじめにはじめに
Log4Jは、Log4Jを使用することにより、コンソール、GUIコンポーネント、さらにはソケットサーバー、NTイベントロガー、UNIX Syslog Daemonsなどへの宛先を制御できます各ログの出力形式。各ログ情報のレベルを定義することにより、ログ生成プロセスをより慎重に制御できます。最も興味深いのは、これらをアプリケーションのコードを変更せずに構成ファイルで柔軟に構成できることです。
さらに、log4j他の言語インターフェイスを介して、c、c ++、.net、pl/sqlプログラムでlog4jを使用できます。コンポーネント。さらに、さまざまなサードパーティ拡張機能を使用することにより、Log4JをJ2EE、JINI、さらにはSNMPアプリケーションに簡単に統合できます。
2。初心者の例
1.新しいJavaプロジェクトを作成し、パッケージlog4J-1.2.17.jarをインポートし、プロジェクト全体の最終ディレクトリは次のとおりです。
2。同じレベルでlog4j.Propertiesを作成および設定します
### 設定###
log4j.rootlogger = debug、stdout、d、e
###リフトを制御するための出力情報####
log4j.appender.stdout = org.apache.log4j.consoleAppender
log4j.appender.stdout.target = system.out
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern = [%-5p]%d {yyyy-mm-dd hh:mm:ss、sss}メソッド:%l%n%m%n
###出力ログはデバッグレベルよりも= e://logs/error.log ###に
log4j.appender.d = org.apache.log4j.dailyrollingfileappender
log4j.appender.d.file = e://logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = debug
log4j.appender.d.layout = org.apache.log4j.patternlayout
log4j.appender.d.layout.conversionpattern =%-d {yyyy-mm-dd hh:mm:ss} [%t:%r] - [%p]%m%n
###出力ログはエラーレベルを超えて= e://logs/error.log ###に
log4j.appender.e = org.apache.log4j.dailyrollingfileappender
log4j.appender.e.file = e://logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = error
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionpattern =%-d {yyyy-mm-dd hh:mm:ss} [%t:%r] - [%p]%m%n
3.ログコンテンツを設定します
パッケージcom.mucfc; Import org.apache.log4j.logger;/** *@著者Linbingwen *@2015年5月18日9:14:21 */public class test {private static logger logg er = logger.getLogger(test。クラス) / ** @param args * / system.out.println( "これはprintlnメッセージです。 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::づ 火::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::づ 火::::: ::::::::::::::::::::::debug( "これはデバッグメッセージです。");情報メッセージ。 "); //エラーレベル情報logger.error("これはエラーメッセージです。 ");}}4。出力結果
(1)まず、コンソールの情報
(2)出力ファイルを見てみましょう
コンテンツは次のとおりであり、必要に応じて対応するドキュメントに出力されていることがわかります。
3。log4jの基本的な使用方法
log4jは、ログ情報の優先度、ログ情報の出力宛先、ログ情報の出力形式の3つの重要なコンポーネントで構成されています。ログ情報の優先順位は、このログ情報の出力宛先を指定するために使用されています。ファイルと出力は、ログ情報の表示コンテンツを制御するフォーマットです。
2.1構成ファイルを定義します
実際、構成ファイルをまったく使用することはできませんが、コードでlog4j環境を構成することもできます。ただし、構成ファイルを使用すると、アプリケーションがより柔軟になります。 LOG4Jは2つの構成ファイル形式をサポートします。1つはXML形式ファイル、もう1つはJava機能ファイル(key = value)です。以下に、Java機能ファイルを構成ファイルとして使用する方法を紹介します。
1。ルートロガーを構成します。その構文は次のとおりです。
log4j.rootlogger = [level]、appendername、appendername、…
その中でも、レベルはロギングの優先順位であり、オフ、致命的、エラー、警告、情報、デバッグ、すべてまたは定義するレベルに分割されています。 LOG4Jは、高から低いもの、つまりエラー、ウォーン、情報、デバッグを優先して、4つのレベルのみを使用することをお勧めします。ここで定義されているレベルでは、アプリケーション内の対応するログ情報のスイッチを制御できます。たとえば、情報レベルがここで定義されている場合、アプリケーション内のすべてのデバッグレベルのログ情報は印刷されません。付録は、Bログ情報が出力される場所を指します。複数の出力宛先を同時に指定できます。
2。宛先Appenderを構成してログ情報を出力します。その構文は次のとおりです。
log4j.appender.appendername = fully.aqualified.name.of.appender.class
log4j.appender.appendername.option1 = value1
…
log4j.appender.appendername.option = valuen
その中で、log4jによって提供される付録は次のとおりです。
org.apache.log4j.consoleAppender(コンソール)、
org.apache.log4j.fileappender(file)、
org.apache.log4j.dailyrollingfileappender(毎日1つのログファイルを生成)、
org.apache.log4j.rollingfileappender(ファイルサイズが指定されたサイズに達すると新しいファイルが生成されます)、
org.apache.log4j.writerAppender(指定された場所にストリーム形式でログ情報を送信)
3。ログ情報の形式(レイアウト)を構成し、その構文は次のとおりです。
log4j.appender.appendername.layout = fully.aqualified.name.of.layout.class
log4j.appender.appendername.layout.option1 = value1
…
log4j.appender.appendername.layout.option = valuen
その中には、log4jによって提供されるいくつかのレイアウトがあります。
org.apache.log4j.htmllayout(HTMLテーブルフォームのレイアウト)、
org.apache.log4j.patternlayout(レイアウトモードを柔軟に指定できます)、
org.apache.log4j.simplelayout(ログ情報のレベルと情報の文字列が含まれています)、
org.apache.log4j.ttcclayout(ログ生成の時間、スレッド、カテゴリなどを含む)
log4jは、c言語のprintf関数と同様の印刷形式を使用してログ情報をフォーマットし、印刷パラメーターは次のとおりです。%m出力コードで指定されたメッセージ
%p出力の優先度、つまりデバッグ、情報、警告、エラー、致命的
%r出力アプリケーションの開始から取得したミリ秒数を出力して、ログ情報を出力します
%Cはカテゴリを出力します。通常、それが配置されているクラスのフルネームです
%tログイベントを生成するスレッド名を出力します
%nキャリッジリターンラインブレークを出力し、Windowsプラットフォームは「RN」、UNIXプラットフォームは「N」です
%dログの時点の日付または時刻は、次のような形式を指定できます。 :2002年10月18日22:10:28、921
%Lは、クラス名、発生したスレッド、コード内の行数など、ログイベントが発生する場所を出力します。例:testlog4.main(testlog4.java:10)
2.2コードでlog4jを使用します
1。レコーダーを取得します
LOG4Jを使用して、最初のステップは、ログ情報の制御を担当するログレコーダーを取得することです。構文は次のとおりです。
public static Logger getLogger(文字列名)
指定された名前でロガーを取得し、必要に応じて、名前の新しいロガーを作成します。名前は通常、このクラスで名前が付けられています。
static logger logger = logger.getLogger(serverwithlog4j.class.getName()))
2。構成ファイルを読み取ります
ロガーを取得した後、2番目のステップはlog4j環境を構成し、構文は次のようになります。
BasicConfigurator.configure():デフォルトのLOG4J環境を自動的かつ迅速に使用します。
propertyconfigurator.configure(String ConfigFileName):Javaの機能ファイルを使用して記述された構成ファイルを読み取ります。
domconfigurator.configure(string filename):xmlフォームの構成ファイルを読み取ります。
3。録音情報を挿入します(フォーマットログ情報)
以前の2つの必要な手順が完了すると、ログをログする場所に、さまざまな優先レベルのロギングステートメントを簡単に挿入できます。
logger.debug(オブジェクトメッセージ);
logger.info(オブジェクトメッセージ);
logger.warn(オブジェクトメッセージ);
logger.error(オブジェクトメッセージ);
2.3ログレベル
各ロガーは、ログ情報の出力を制御するためにログレベル(ログレベル)にさらされます。ログレベルは以下に分割されます。
A:最高レベルのオフは、すべてのロギングを閉じるために使用されます。
B:致命的なのは、各重要なエラーイベントがアプリケーションを終了することを示しています。
C:エラーは、エラーイベントが発生しますが、システムの継続的な動作に依然として影響しないことを示します。
D:ウォームは、潜在的なエラー状況があることを示します。
E:一般的に、そして粗粒レベルで、アプリケーションの完全な動作を強調します。
F:デバッグは通常、細粒レベルで使用され、アプリケーションのデバッグに非常に役立ちます。
G:すべてのロギングを開くために使用されるすべての最小レベル。
上記のレベルは、org.apache.log4j.levelクラスで定義されています。 LOG4Jは、高から低いエラー、ワーーン、情報、デバッグまで優先され、4つのレベルを使用することをお勧めします。ログレベルを使用することにより、アプリケーションの対応するレベルでログ情報の出力を制御できます。たとえば、Bを使用している場合、アプリケーションの情報レベル(デバッグなど)を下回るすべてのログ情報は印刷されません。
4。WebプロジェクトでLOG4Jインスタンスを使用します
上記のコードでは、log4jの単純なアプリケーションについて説明しており、実際、Log4Jを使用することは非常にシンプルで便利です。もちろん、上記の構成方法に加えて、J2EEアプリケーションでLOG4Jを使用する場合、最初にLOG4J構成ファイルを開始して初期化するなど、他のものがあります。 web.xmlで。
1。WebアプリケーションのLOG4Jの使用法は基本的に使用します:init関数でlog4jの構成を実行する新しいサーブレットを作成します。通常、構成ファイルを読み取ることです。したがって、このサーブレットをWeb.xmlで構成し、ロードオンスタートアップを1に設定する必要があります。
2.このサーブレット構成log4jは、構成ファイルを読み取り、構成関数を呼び出すことです。ここには2つの質問があります。1。ファイルがどこにあるかを知る必要があります。正しいファイルタイプが必要です
3.構成ファイルの場所は、Web.xmlで構成できます。
4.通常、ファイルタイプには2つのタイプがあります。1つはJavaプロパティファイル、もう1つはXMLファイルです
構成ファイルの一般的なコンテンツLOG4Jは、出力ログレベルの最小レベルと、各ログの出力構成形式を指定できます。
(1)Webプロジェクトを作成すると、プロジェクト全体の最終ディレクトリは次のとおりです
(2)web.xml構成は次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http:// java .sun.com/xml/ns/javaee "xsi:schemalocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <display-name> loglearning </display-name> <servlet> <servlet-name> log4jtestServlet </servlet-name> <servlet-class> com.mucfc 。 </servlet-class> <init-param> <param-name> log4j-properties-location </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </ init -param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> log4jtestservlet </servlet-name> <url-pattern>/test </ url -pattern> </servlet-mapping> </web-app>
(3)構成ファイルlog4j.Properties
###ログレベルを設定###
log4j.rootlogger = debug、stdout、d、e
log4j.appender.stdout = org.apache.log4j.consoleAppender
log4j.appender.stdout.target = system.out
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern = [%-5p]%d {yyyy-mm-dd hh:mm:ss、sss}メソッド:%l%n%m%n
log4j.appender.d = org.apache.log4j.dailyrollingfileappender
log4j.appender.d.file = f://logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = debug
log4j.appender.d.layout = org.apache.log4j.patternlayout
log4j.appender.d.layout.conversionpattern =%-d {yyyy-mm-dd hh:mm:ss} [%t:%r] - [%p]%m%n
log4j.appender.e = org.apache.log4j.dailyrollingfileappender
log4j.appender.e.file = f://logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = error
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionpattern =%-d {yyyy-mm-dd hh:mm:ss} [%t:%r] - [%p]%m%n
(4)ウェブコンテナが来たらすぐにサーブレットが初期化されました
log4jinitserva.io.io.ioexception javax.httpsert.http.httpsertrequest。 *サーブレットの実装クラスlog4Jinitservlet */ @webservlet( "/ log4jinitservlet")パブリッククラスlog4jinitservlet {private static final long s eraalversionuid = 1l; ); // TODO自動生成コンストラクタースタブ"); string log4jlocation = config.getInitParameter(" log4j-properties-location "); servletcontext sc = config.getServletContext(); if(log4jlocation == nul l){system.err.println(" *** no log4j-プロパティロケーションの初期化ファイルを使用するため、BasicConfiguratorを使用して初期化を使用して "); BasicConfigurator.configure();} else {string webapppath = sc.getRealpath("/"); string log4jpath + l og4jlocation; yomamayesthissayymama =新しいファイル(log4jprop ; if(yomamayesthissyomama .exists()){system.out.println( " + log4jprop +" log settion情報 ") ** " + log4jProp +"ファイルは見つかりませんでしたので、BasicConfigurator "); BasicConfigurator.configure();}} super.init(config);} /*** @see httpservlet#doget(httpservletrequest request est、 httpservletResponse応答) */保護されたvoid doget(httpservletrequest request、httpservletresponse応答)Servletexception、ioexception {// todo auto-generated method stub}/ ** *@see httpservle t#dopost(httpsreletreletretretreets requestrespretreseponse) dopost(httpservletrequest request、httpservletresponse応答)Strow S servletexception、ioexception {// todo auto-enerated method stub}}}log log4jtestServlet、Javaを呼び出します
java.servlet.servlet.servlet.annot.webservlet; http .httpservletrequest.servlet.http.httpertresponse.log4j.logger; SerialVersionUid = 1L; * * * @see servlet#init(servletconfig) */ public void init(servletconfig config)servletexception {// todo auto-enerated method stub}/ ** * @ httpservlet#doget(httpservletrequest request、httpservletresponse応答) *///保護されたvoid doget(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {// debugレベル情報logger.debug( "これはdebug m essage。");メッセージ。 "); httpservletResponse応答)servletexception、ioexception {doget(request、response)};次は実行されています、結果を見てみましょう:
出力結果:
5。春にlog4jを使用します
ここでは、log4jを使用するためにWebプロジェクトでSpringの使用を実装する必要があります
(1)上記のプロジェクトに接続してから、スプリングパッケージをインポートします
(2)Web.xmlが追加されました
<! - ルートディレクトリを設定 - > <コンテキストパラム> <パラマネーム> webAppRootkey </param-name> <param-value> webapp.root </param-value> </context-param> <context- param> <param-name> log4jconfiglocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-param> <! - 3000スレッドは、60秒ごとに構成ファイルが変更されます。これにより、ログストレージの変更が容易になります。 > </context-param> <リスナー> <リスナークラス> org.springframework.web.util.log4jconfiglistener </ristener-class> </ristener>
コンテンツ全体が次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http:// java .sun.com/xml/ns/javaee "xsi:schemalocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <display-name> loglearning </display-name> <servlet> <servlet-name> log4jtestServlet </servlet-name> <servlet-class> com.mucfc 。 mucfc.log4jinitservlet </servlet-class> <init-param> <param-name> log4j-properties-location </param-name> <param-value> /web-inf/classes/log4j.p roperties </param-値> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> - > <servlet-name> log4jtestServlet </servlet-name> <url - パターン>/test </url-pattern> </servlet-mapping> <! - spring container loading-> <リスナー> <リスナークラス> org.springframework.web.context.contextloaderlistener </list ener-class > </リスナー> <context-param> <param-name> contextconfiglocation </param-name> <param-value> classpath:applicationContext.xml </param-value> </context-par am> <! - set set root Directory--> <Context-Param> <param-name> webAppRootkey </param-name> <param-value> webApp.root </param-value> </context-param> <context-param> <param-名前> log4jConfiglocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-param> <! - 3000は、ウォッチドッグスレッドを開くために構成をスキャンすることを意味します60秒ごとにファイルが変更されます。これにより、ログストレージの変更が容易になります。 param> <リスナー> <リスナークラス> org.springframework.web.util.log4jconfiglistener </ristener-class> </ristener> </web-app>
ここで、log4jinitservlet.javaは役に立たないことと同等です。
(2)ApplicationContext.xml
コンテンツなし:
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org /2001/xmlschema-instance "xmlns:context =" http://www.springframework.org/schema/context "xmlns:aop =" http://www.springframework.org/sche ma/aop "xsi:schemalotion = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/spring-beans-3.2.xsdhttp://www.springframework.org Springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/www.springframework.org/schema/cont "> </beans>
(3)このようにして、ログはスプリングウィンドウで開始されます
プログラムが実行されると、ログが自動的に印刷されます
log.log
error.logはエラーレベルより上の情報のみを印刷するため空になっています
ブラウザからhttp:// localhost:8080/loglearning2/テストを入力します
次に、ファイルを開きます
Java Log4Jの詳細なチュートリアルは、次の記事を紹介します。