log4j详解
来源:互联网 发布:数据周报模板 编辑:程序博客网 时间:2024/06/05 19:31
==一、log4j配置文件简介==
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,
分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
官方网址:http://logging.apache.org/log4j/1.2/manual.html
其他: http://zhangxiang390.iteye.com/blog/258455
http://baike.baidu.com/link?url=Bb01jbHyL4vguFz31zkPVJSmtEGWYy186veLBi8MX33N5IL-uVsIEYFpL47TduKn
===1.日志信息的优先级===
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
如在这里定义了INFO级别,则应用程序中所有低于INFO级别的日志信息将不被打印出来。
通过在配置中修改Appender的Threshold即能实现,比如下面的例子:<param name="threshold" value="info"/> # 输出info级别以上的日志.
===2.日志信息的输出目的地===
Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个Appender。
ConsoleAppender:将log信息将写到Console
FileAppender:将log信息将写到指定的文件中
DailyRollingAppender:使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用 DailyRollingAppender。
DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。配置文件就会每天(时间可以设定)产生一个log文件,
每个log文件只记录当天的log信息
RollingFileAppender:文件大小到达指定尺寸的时候产生一个新的文件。
===3.日志信息输出的格式===
====(1)布局样式====
布局样式,通过设定<layout>节点的class值:
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
====(2)格式====
日志内容的格式,通过设定<param>节点的value值为以下标志的组合:
1.%m 输出代码中指定的消息
2.%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
3.%r 输出自应用启动到输出该log信息耗费的毫秒数
4.%c 输出所属的类目,通常就是所在类的全名
5.%t 输出产生该日志事件的线程名
6.%n 输出一个回车换行符,Windows平台为"rn",Unix平台为"n"
7.%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002
年10月18日 22:10:28,921
8.%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(Test Log4.java:10)
==二、结合作业中的log4j配置文件实例进行讲解==
===1.配置文件和输出日志位置===
配置文件:ROR安装目录\RCXCFMG\config 目录下的vsys_log4j.xml文件中,监察日志(Audit Log)相关配置信息
输出日志:ROR安装目录\RCXCFMG\logs 目录下的vsys_audit_log文件
===2.配置文件内容及详解===
'''<appender''' name="auditfileout" class="org.apache.log4j.RollingFileAppender">
# '''指定了输出源auditfileout,Appender类型为:RollingFileAppender'''
<param name="threshold" value="info"/>
# '''指定输出info级别以上的日志'''
<param name="MaxFileSize" value="10MB" />
# '''指定最大的文件是10MB,当一个日志文件达到最大尺寸时,Log4J会自动把vsys_audit_log重命名为vsys_audit_log.1,然后重建一个新
''' 的vsys_audit_log文件,依次轮转。'''''
<param name="MaxBackupIndex" value="9" />
<param name="File" value="C:/Program Files (x86)/Resource Orchestrator/RCXCFMG/logs/vsys_audit_log" />
# '''指定了log的输出位置和log文件名'''
<param name="append" value="true" />
# '''设置是否在重新启动服务时,在原有日志的基础添加新日志'''
<param name="Encoding" value="UTF-8" />
# '''指定日志信息输出时的编码方式'''
<layout class="org.apache.log4j.PatternLayout">
# '''log内容布局和格式'''
<param name="ConversionPattern" value="%m %n" />
# '''输出代码中指定的消息,换行输出'''
</layout>
'''</appender>'''
<'''category''' name="com.fujitsu.sop.vsys.common.log.AuditLogger" additivity="false">
# '''通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中。'''
'''默认情况下 子Logger 会继承 父Logger 的appender,也就是说 子Logger 会在 父Logger 的appender里输出。'''
'''若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。'''
<priority value="info" />
# '''category中的优先级设定,如果appender中又设定了优先级,最终输出的日志信息以appender中与category中优先级最高的为准'''
'''例如此处value="info",appender中 <param name="threshold" value="trace"/>,则输出info级别以上的日志信息'''
<appender-ref ref="auditfileout" />
# '''指定class“com.fujitsu.sop.vsys.common.log.AuditLogger”中的日志使用appender名为“auditfileout”的配置输出日志'''
</'''category'''>
==三、作业中的log4j日志乱码解决==
在<appender>中添加配置“<param name="Encoding" value="程序里的日志信息输出时的编码方式(UTF-8/GB2312等)" />”,
将输出的日志文件内容编码格式指定为和“程序里的日志信息输出时的编码方式”一致即可,但须确保打印log时,需打印的信息不是乱码;
若需打印的信息在打印之前已为乱码,日志文件中输出仍为乱码。
==三、vsys组中文化对应作业中的log4j日志乱码解决==
在<appender>中添加配置“<param name="Encoding" value="程序里的日志信息输出时的编码方式(UTF-8/GB2312等)" />”,
将输出的日志文件内容编码格式指定为和“程序里的日志信息输出时的编码方式”一致即可,但须确保打印log时,需打印的信息不是乱码;
若需打印的信息在打印之前已为乱码,日志文件中输出仍为乱码。
- log4j详解
- log4j详解
- log4j详解
- log4j详解
- log4j详解
- log4j详解
- log4j详解
- log4j详解
- log4j详解
- Log4j详解
- log4j 详解
- Log4j详解
- log4j 详解
- log4j详解
- log4j 详解
- log4j详解
- LOG4J详解
- log4j详解
- .Net 调用SAP RFC接口来读取数据实战纪实
- 【SerialPort】控件的使用实例
- storm的bolt实现阶段统计
- 奇怪的NVL2问题,提示NOT DECLARE
- 使用Devexpress ChartControl中的Pie图
- log4j详解
- CSS精灵技术
- linux 通过程序名杀死进程
- 深入理解计算机系统之旅(三)程序的机器级表示
- mysql中char与varchar的区别分析
- 窗口 OnCreate()与PreCreateWindow() .
- 【Java面试的难题】
- unity添加声音方法
- spring四种依赖注入方式