`
liuzhibang
  • 浏览: 7811 次
社区版块
存档分类
最新评论

log4j各配制项详解

    博客分类:
  • java
阅读更多

应用log4j来打印或输出日志信息,依赖的jar包有commons-logging.jar 和log4j-1.2.12.jar,版本是几都差不多,简单介绍下log4j的配置,如果不配置的话是不会打印日志的。配置文件有两种一种是properties文件,另一种是xml文件。
properties文件的配置如下:

log4j.rootLogger=info,A1,R

 

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.Threshold=debug

log4j.appender.A1.target=System.out

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%d %p [%c] - %m%n

 

log4j.appender.R=org.apache.log4j.FileAppender

log4j.appender.R.Threshold=error

log4j.appender.R.ImmediateFlush=true

log4j.appender.R.File=../logs/HelloLog4j.log

log4j.appender.R.Append=true

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d %p [%c] - %m%n

 

 

rootLogger的第一个数值是用来定义输出的级别OFFFATALERRORWARNINFODEBUGALL,A1和R都是日志的输出,这个可以有多个。appender类型可以有下面几种:

 

org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

不同的appender选项也不同,(2)(3)用的比较多

 

(1).ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
(2).FileAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
(3).DailyRollingFileAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern=.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1).'yyyy-MM:每月
2).'yyyy-ww:每周
3).'yyyy-MM-dd:每天
4).'yyyy-MM-dd-a:每天两次
5).'yyyy-MM-dd-HH:每小时
6).'yyyy-MM-dd-HH-mm:每分钟
(4).RollingFileAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB:后缀可以是KB,MB或者是GB.在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

 

文件的layout布局也有几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

使用最多的就是PatternLayout

 

输出格式log4j.appender.A1.layout.ConversionPattern这个参数比较多

 

%p:输出日志信息优先级,即DEBUGINFOWARNERRORFATAL,
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyMMMddHH:mm:ss,SSS},输出类似:20021018221028921
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出日志信息所属的类目,通常就是所在类的全名
%t:输出产生该日志事件的线程名
%l:输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像javaservlets这样的多客户多线程的应用中。
%%:输出一个%字符
%F:输出日志消息产生时所在的文件名称
%L:输出代码中的行号
%m:输出代码中指定的消息,产生的日志具体信息
%n:输出一个回车换行符,Windows平台为\r\nUnix平台为\n输出日志信息换行

 

下面的是xml的配制

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="sysout" class="org.apache.log4j.ConsoleAppender">
<param name="target" value="System.err" />
<!-- layout class="org.apache.log4j.SimpleLayout"-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[YDJX] %d -%r -%c [%t] -%p -%x -%m%n"/>
</layout>
</appender>

<appender name="filelog" class="org.apache.log4j.FileAppender">
<param name="File" value="../logs/log4jxml.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[YDJX] %d -%r %c [%t] -%p %m %M-%L .%n"/>
</layout>
</appender>

<appender name="datelog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../logs/date.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="warn"/>
<param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[YDJX] %d -%r %c [%t] -%p -%x -%m%n"/>
</layout>
</appender>

<logger name="ydjx.log4j" additivity="true">
<level class="org.apache.log4j.Level" value="debug" />
<appender-ref ref="sysout"/>
</logger

<root>
<level value="info"/>
<appender-ref ref="sysout"/>
<appender-ref ref="filelog"/>
<appender-ref ref="datelog"/>
</root>

</log4j:configuration>

如果同时配制了xml和properties两种文件,那么xml的优先级高,properties文件的配制不起作用。

分享到:
评论

相关推荐

    log4j 的例子和配制文件

    **日志框架Log4j详解** Log4j是一款广泛使用的Java日志框架,它为开发者提供了灵活的日志记录功能,可以方便地控制日志信息的输出级别、输出位置以及格式。在Java应用开发中,良好的日志管理对于调试、性能监控和...

    log4j配置方法和实例

    **日志框架Log4j详解及配置实例** Log4j是Apache组织开发的一款强大的日志处理框架,广泛应用于Java应用程序中,提供灵活的日志记录功能。本文将详细介绍Log4j的配置方法,并通过实例帮助初学者理解其工作原理。 #...

    2021版高考化学一轮复习课时提升作业三溶液的配制及分析含解析苏教版

    【知识点详解】 1. **摩尔浓度的理解**:在化学中,摩尔浓度(mol/L)是指单位体积溶液中所含溶质的摩尔数。例如,“1 mol·L-1 Na2SO4溶液”意味着每升溶液含有1摩尔的Na2SO4。选项B正确解释了这一点,表示1 L溶液...

    张宴版Nginx学习 以及配置

    **Nginx学习与配置详解** Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,因其高效的性能和灵活的配置而备受青睐。本文将基于“张宴版Nginx学习 以及配置”这一主题,深入探讨Nginx的基础知识、配置技巧...

    react路由配置方式详解

    React 路由配置方式详解 React 路由配置是 React 应用程序中一个非常重要的部分,它可以帮助我们实现客户端路由,并提供了许多有用的功能,例如参数传递、重定向等。本篇文章将详细介绍 React 路由配置的方式,并...

    河北省张家口市2020届高三化学10月阶段检测试题202001100212

    【知识点详解】 1. 化学元素及其性质:镍铬烤瓷牙的材料涉及镍铬合金,其中镍(Ni)是28号元素,属于过渡元素。过渡元素具有良好的耐腐蚀性,适合用于制造牙齿。 2. 化学用语:正确使用化学符号是关键。例如,中子...

    四川省广安市邻水县第二中学2014-2015学年高二化学4月月考试题(无答案)

    【知识点详解】 1. **酸的强弱与解离度**:题目中涉及到盐酸和醋酸与锌的反应,这涉及到酸的强弱。盐酸是强酸,完全电离,而醋酸是弱酸,部分电离。在相同pH值下,醋酸的浓度比盐酸大,因此在与锌反应时,醋酸释放...

    安徽省六安市舒城中学2016年高二化学暑假作业24.doc

    【知识点详解】 1. **弱电解质的电离平衡**:在水溶液中,弱电解质如弱酸、弱碱不能完全电离,存在电离平衡。例如,H2SO3是一个弱酸,其在水中电离不完全,正确的电离方程式应该是:H2SO3 ≈ H++HSO3-,而不是完全...

    药厂QC人员上岗考试题.doc

    【知识点详解】 1. 药物检测标准与规定: - 在药物质量控制(QC)中,某些片剂如规定需检查溶出度、释放度或融变时限,则无需进行含量均匀度检查。同样,已检查含量均匀度的片剂则不再进行其他相关检查。 - pH值...

    考研备考资料真题-广东海洋大学821《分析化学》专业课考研真题(2012年-2016年).docx

    2. **缓冲溶液pH值的计算**:利用缓冲溶液的公式\[pH = pK_a + \log\left(\frac{[A^-]}{[HA]}\right)\]。 #### 四、综合分析题涉及的知识点 1. **外标法与内标法的比较**: - 外标法:基于标准样品与未知样品直接...

Global site tag (gtag.js) - Google Analytics