1 Log4j 構成手順
1.1 設定ファイル
Log4j は Java プログラムを通じて動的に設定できます。この方法の明らかな欠点は、ログ出力レベルやその他の情報を変更する必要がある場合に、Java ファイルを変更してから再コンパイルする必要があり、非常に面倒なことです。
Log4j は、構成ファイルを通じて設定することもできます。現在、次の 2 つの形式の構成ファイルがサポートされています。
・xmlファイル
•プロパティファイル(推奨)
以下は、log4j 構成ファイルの完全な内容です。
次のようにコードをコピーします。
log4j.rootCategory=情報、標準出力
log4j.rootLogger=情報、標準出力
### 標準出力 ###
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=%d{ABSOLUTE} %5p - %m%n
### セットパッケージ ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=デバッグ
1.2 ルートロガーの構成
ルート ロガーは主に、log4j でサポートされるログ レベルと出力先を定義します。その構文は次のとおりです。
log4j.rootLogger = [ レベル ] 、appenderName、appenderName、…
このうち、レベルはロギングの優先度であり、OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL、またはカスタマイズされたレベルに分かれています。
優先順位は高から低まで、ERROR、WARN、INFO、DEBUG の 4 つのレベルのみを使用することをお勧めします。
appenderNameはログ情報の出力先を指定し、同時に複数の出力先を指定することができます。
1.3 出力先Appenderの設定
アペンダーは主にログ情報を出力する場所を定義します。主な構文は次のとおりです。
次のようにコードをコピーします。
log4j.appender.appenderName = クラス情報
log4j.appender.appenderName.option1 = 値1
…
log4j.appender.appenderName.optionN = 値N
Log4j によって提供されるアペンダーには次のものが含まれます。
•org.apache.log4j.ConsoleAppender(コンソール)、
•org.apache.log4j.FileAppender(ファイル)、
•org.apache.log4j.DailyRollingFileAppender (毎日ログ ファイルを生成します)、
・org.apache.log4j.RollingFileAppender (ファイルサイズが指定したサイズに達すると新しいファイルを生成します)
・org.apache.log4j.WriterAppender (ログ情報をストリーミング形式で任意の場所に送信)
次のような ConsoleAppender を例に挙げます。
次のようにコードをコピーします。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
1.4 ログ情報のフォーマットレイアウトを設定する
レイアウトは、アペンダーの出力のフォーマットを担当します。その構文は次のとおりです。
次のようにコードをコピーします。
log4j.appender.appenderName.layout = クラス情報
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
その中で、Log4j が提供するレイアウトには次のようなものがあります。
・org.apache.log4j.HTMLLayout(HTMLテーブル形式のレイアウト)、
・org.apache.log4j.PatternLayout(レイアウトパターンを柔軟に指定可能)、
・org.apache.log4j.SimpleLayout (ログ情報のレベルと情報文字列が含まれます)
•org.apache.log4j.TTCCLayout (ログ生成時間、スレッド、カテゴリなどの情報が含まれます)
1.5 パッケージ出力レベルの設定
さまざまなパッケージのログ出力レベルを設定できます。構文は次のとおりです。
log4j.logger.packageName=レベル
このうち、packageName は実際のパッケージ名で、level はログ レベルです。次に例を示します。
次のようにコードをコピーします。
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=デバッグ
2 Log4j と J2ee の組み合わせ
2.1 スプリングアーキテクチャの使用
Spring は本当に優れています。システムが Spring フレームワークを使用している場合、log4j の統合は主に次の 3 つのステップに分かれます。
2.1.1 log4j設定ファイルの定義
次のようにコードをコピーします。
log4j.rootCategory=情報、標準出力
log4j.rootLogger=情報、標準出力
### 標準出力 ###
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=%d{ABSOLUTE} %5p - %m%n
### ファイルへのログ ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=デバッグ
2.1.2 リスナーの定義
リスナーは web.xml で定義する必要があります。これには主に、次のような log4j 構成ファイル ディレクトリと log4j リスナーの定義が含まれます。
次のようにコードをコピーします。
<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<ウェブアプリのバージョン="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--Spring によってロードされる Log4j 構成ファイルの場所 -->
<コンテキストパラメータ>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<コンテキストパラメータ>
<param-name>contextConfigLocation</param-name>
<パラメータ値>
/WEB-INF/classes/applicationContext*.xml
</パラメータ値>
</context-param>
<!--Spring log4j 構成ローダー-->
<リスナー>
<リスナークラス>
org.springframework.web.util.Log4jConfigListener
</リスナークラス>
</リスナー>
<リスナー>
<リスナークラス>
org.springframework.web.context.ContextLoaderListener
</リスナークラス>
</リスナー>
<サーブレット>
<サーブレット名>InitiaServlet</サーブレット名>
<サーブレットクラス>chb.test.web.InitiaServlet</サーブレットクラス>
<起動時のロード>1</起動時のロード>
</サーブレット>
<ウェルカムファイルリスト>
<welcome-file>index.jsp</welcome-file>
</ウェルカムファイルリスト>
</web-app>
2.1.3 テストクラス
次のようにコードをコピーします。
パッケージcom.dheaven.mip.web;
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
org.apache.log4j.Logger をインポートします。
public class InitiaServlet extends HttpServlet {
protected Logger ログ = Logger.getLogger(InitiaServlet.class);
プライベート静的最終ロングserialVersionUID = 8550329576989690578L;
/**
* オブジェクトのコンストラクター。
*/
public InitiaServlet() {
素晴らしい();
}
/**
* サーブレットの破棄<br>
*/
public void destroy() {
super.destroy();
}
/**
* サーブレットの初期化<br>
*
* エラーが発生した場合は @throws ServletException
*/
public void init() は ServletException をスローします {
log.debug("サーバーが起動し、log4j が動作し始めました");
}
}
2.2 Springアーキテクチャを使用しない場合
システムが Spring を使用しない場合は、手順に従ってコードを貼り付けるだけで非常に簡単です。
2.2.1 log4j設定ファイルの定義
次の内容を含むファイルを Web プロジェクトの WEB-INF ディレクトリに配置します。
次のようにコードをコピーします。
log4j.rootCategory=情報、標準出力
log4j.rootLogger=情報、標準出力
### 標準出力 ###
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=%d{ABSOLUTE} %5p - %m%n
### セットパッケージ ###
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.com.dheaven=デバッグ
2.2.2 log4j初期化クラスの作成
次のようにコードをコピーします。
パッケージcom.dheaven.mip.web;
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
org.apache.log4j.PropertyConfigurator をインポートします。
public class InitLog4j extends HttpServlet {
プライベート静的最終ロングシリアルバージョンUID = 1L;
public void init() は ServletException をスローします {
文字列プレフィックス = getServletContext().getRealPath("/");
prefix = prefix.replace("//", "/");
文字列ファイル = getInitParameter("log4j-init-file");
// log4j-init-file が設定されていない場合は、試しても意味がありません
if (ファイル != null) {
PropertyConfigurator.configure(プレフィックス + ファイル);
}
}
}
2.2.3 Web.xmlでの初期化クラスの定義
次のようにコードをコピーします。
<サーブレット>
<サーブレット名>log4j-init</サーブレット名>
<サーブレットクラス>chb.test.web.InitLog4j</サーブレットクラス>
<初期パラメータ>
<param-name>log4j-init-file</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<起動時のロード>1</起動時のロード>
</サーブレット>
2.2.4 テストクラス
次のようにコードをコピーします。
パッケージchb.test.web;
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
org.apache.log4j.Logger をインポートします。
public class InitiaServlet extends HttpServlet {
protected Logger ログ = Logger.getLogger(InitiaServlet.class);
プライベート静的最終ロングserialVersionUID = 8550329576989690578L;
/**
* オブジェクトのコンストラクター。
*/
public InitiaServlet() {
素晴らしい();
}
/**
* サーブレットの破棄<br>
*/
public void destroy() {
super.destroy();
}
/**
* サーブレットの初期化<br>
*
* エラーが発生した場合は @throws ServletException
*/
public void init() は ServletException をスローします {
log.debug("サーバーが起動し、log4j が動作し始めました");
}
}