、Log4jの基本的な使い方
log4jは3つの主要コンポーネントからなる:[優先]ログ情報を、ログ情報の出力先は、[]、[]ログ情報の出力形式です。
そこERROR最高最低の優先度のログ情報を、WARN、INFO、DEBUG、それぞれ、このログ情報の重要度を指定するために使用されます。
指定された情報の出力先がコンソールに出力するか、ファイルを記録されるログ。
そして、ログ表示制御情報の出力形式。
1.1、カスタムプロファイル
実際には、あなたはまた、設定ファイルを使用していないことができますが、コードでLog4jの環境を設定します。ただし、構成ファイルを使用すると、アプリケーションをより柔軟になります。Log4jのは、1つのJavaプロパティファイル(キー=値)で、2つの設定ファイルの形式XML形式のファイルをサポートしています。ここでは、Javaプロパティの使用は方法の設定ファイルとしてファイル紹介します:
1.設定ルートロガー、構文は次のとおりです。
log4j.rootLogger = [ level ] , appenderName, appenderName, …
一つは、レベルのログがOFFに分け、優先順位で、FATAL、ERRORは、WARN、INFO、DEBUG、ALLまたはあなたがレベルを定義します。log4jは、ERRORあるWARN最高から最低の優先度に、唯一の4つのレベルを使用するINFO、DEBUGをお勧めします。ここではレベルによって定義され、あなたは情報の適切なレベルのアプリケーションのログを記録するようにスイッチを制御することができます。例えば、ここではINFOレベルの定義に、すべてのDEBUGレベルのログ情報の適用は印刷されません。appenderName B場所に出力ログ情報を指します。あなたは、複数の出力先を指定することができます。
2.ログ情報の出力先アペンダを設定し、構文は次のとおりです。
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN
これは、アペンダLog4jの提供次のとおりです。
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3.ログ情報のフォーマット(レイアウト)を設定し、その構文は次のとおりです。
log4j.appender.appenderName.layout = fully.qualified.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 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
1.2使用してコードのLog4j
1.レコーダー得
Log4jのを使用して、最初のステップは、ロガーが制御ログ情報を担当する、ロガーを取得することです。構文は次のとおりです。
public static Logger getLogger( String name)
必要に応じて、名前を指定してレコードを取得、名前は新しいレコーダーを作成することでした。名前は、一般的のような、クラスの名前を取ります
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 ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
1.3、レベルを記録
各ロガーは、出力ログ情報を制御するためのログレベル(レベルログ)、です。ハイからローにログレベルが分かれています。
A:off 最高等级,用于关闭所有日志记录。 B:fatal 指出每个严重的错误事件将会导致应用程序的退出。 C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。 D:warm 表明会出现潜在的错误情形。 E:info 一般和在粗粒度级别上,强调应用程序的运行全程。 F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。 G:all 最低等级,用于打开所有日志记录。
これらのレベルはorg.apache.log4j.Levelクラスで、上記で定義されています。log4jは唯一の4つのレベルを使用することを推奨している高から低優先度に、エラー、警告、情報、およびデバッグ。ログレベルを使用することで、アプリケーションのログ情報に対応する出力レベルを制御することができます。例えば、情報レベルB場合、(例えば、デバッグなど)、ログ情報情報のアプリケーション・プログラムの下のすべてのレベルが印刷されません。
二、Log4jの例を使用してWebプロジェクト
Log4j.properties設定ファイル
### set log levels ###
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} method:%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
説明
1種の出力レベル
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
2.ログ情報の出力先を設定します
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3.ログ情報のフォーマットを設定します
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
4.コンソールオプション
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
いくつかのシンボルが表すログ情報のフォーマットの意味:
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。
如:
1) %20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2) %-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3) %.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4) %20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。