`
java_beginner_liyun
  • 浏览: 74511 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

浅谈Log4j的扩展(第二篇)

阅读更多

4.2.2   文件xml

xml文件
编号
配置项
配置项描述
示例
1
threshold
阈值项
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false" threshold="null">
2
root
根日志属性项
<root>
    <priority value="info"/>
     <appender-ref ref="CONSOLE"/>
   </root>
3
priority
级别项(旧)
<priority value="info"/>
4
level
级别项(新)
<level value="info"/>
5
category
子日志属性项(旧)
<category additivity="true" name="com.eos.log">
6
logger
子日志属性项(新)
<logger additivity="true" name="com.eos">
7
appender-ref
输出端控制项
<appender-ref ref="CONSOLE"/>
8
additivity
appender是否继承设置
<logger additivity="true" name="com.eos">
9
appender
输出目的地定义项
<appender class="org.apache.log4j.ConsoleAppender" name="CONSOLE">
10
layout
输出格式定义项
<layout class="org.apache.log4j.PatternLayout">
 
4.2.3   详细说明(只针对Log4j常用的,用户可以自定义)Appender
Appender继承关系
Appender基本种类
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
· ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
· FileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
· 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: 每分钟
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:指定可以产生的滚动文件的最大数。
4.2.4   详细说明(只针对Log4j,用户可以自定义)Layout
Log4j的Layout基本种类
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
· HTMLLayout选项
LocationInfo=true:默认值是false,输出java文件名称和行号
Title=my app file: 默认值是 Log4J Log Messages.      
PatternLayout 选项
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
这里需要说明的就是日志信息格式中几个符号所代表的含义:
 
%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字符, 就从左边交远销出的字符截掉。
· XMLLayout 选项
LocationInfo=true:默认值是false,输出java文件和行号
4.3   日志配置文件内容范例
4.3.1   log4j.properties
1.log4j.rootLogger=DEBUG, CONSOLE 
2.#DEBUG, CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE 
3.
4.log4j.logger.org.apache=INFO, FILE 
5.log4j.additivity.org.apache=false 
6.
7.################### 
8.# Console Appender 
9.################### 
10.log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
11.log4j.appender.Threshold=DEBUG 
12.log4j.appender.CONSOLE.Target=System.out 
13.log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
14.log4j.appender.CONSOLE.layout.ConversionPattern=%d [%p] - %m%n 
15.
16.
17.##################### 
18.# File Appender 
19.##################### 
20.log4j.appender.FILE=org.apache.log4j.FileAppender 
21.log4j.appender.FILE.File=file.log 
22.log4j.appender.FILE.Append=false 
23.log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
24.log4j.appender.FILE.layout.ConversionPattern=%d [%p] - %m%n 
25.
26.
27.######################## 
28.# Rolling File 
29.######################## 
30.log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender 
31.log4j.appender.ROLLING_FILE.Threshold=ERROR 
32.log4j.appender.ROLLING_FILE.File=rolling.log 
33.log4j.appender.ROLLING_FILE.Append=true 
34.log4j.appender.ROLLING_FILE.MaxFileSize=10KB 
35.log4j.appender.ROLLING_FILE.MaxBackupIndex=1 
36.log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
37.log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d [%p] - %m%n 
38.
39.
40.#################### 
41.# Socket Appender 
42.#################### 
43.log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender 
44.log4j.appender.SOCKET.RemoteHost=localhost 
45.log4j.appender.SOCKET.Port=5001 
46.log4j.appender.SOCKET.LocationInfo=true 
47.# Set up for Log Facter 5 
48.log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout 
49.log4j.appender.SOCET.layout.ConversionPattern=%d [%p] - %m%n 
50.
51.
52.######################## 
53.# Log Factor 5 Appender 
54.######################## 
55.log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender 
56.log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 
57.
58.
59.######################## 
60.# SMTP Appender 
61.####################### 
62.log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender 
63.log4j.appender.MAIL.Threshold=FATAL 
64.log4j.appender.MAIL.BufferSize=10 
65.log4j.appender.MAIL.From=wuyh@primeton.com 
66.log4j.appender.MAIL.SMTPHost=mail.primeton.com 
67.log4j.appender.MAIL.Subject=Log4J Message 
68.log4j.appender.MAIL.To=test@primeton.com 
69.log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout 
70.log4j.appender.MAIL.layout.ConversionPattern=%d [%p] - %m%n 
71.
72.
73.######################## 
74.# JDBC Appender 
75.####################### 
76.log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender 
77.log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test 
78.log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver 
79.log4j.appender.DATABASE.user=root 
80.log4j.appender.DATABASE.password= 
81.log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (%d [%p] - %m%n) 
82.log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout 
83.log4j.appender.DATABASE.layout.ConversionPattern=%d [%p] - %m%n 
84.
85.
86.log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender 
87.log4j.appender.A1.File=SampleMessages.log4j 
88.log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' 
89.log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout 
90.
91.################### 
92.#自定义Appender 
93.################### 
94.log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender 
95.
96.log4j.appender.im.host = mail.cybercorlin.net 
97.log4j.appender.im.username = username 
98.log4j.appender.im.password = password 
99.log4j.appender.im.recipient = wuyh@primeton.com 
100.
101.log4j.appender.im.layout=org.apache.log4j.PatternLayout 
102.log4j.appender.im.layout.ConversionPattern =%d [%p] - %m%n
 #注意:在属性配置文件中,属性值的第一个一定是级别,输出端可有可无,以逗号分割。(而xml文件格式没有这种限制)
4.3.2   log4j.xml
1.< xml version="1.0" encoding="UTF-8" > 
2.<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
3.<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false" threshold="null"> 
4.
5.
6.<appender class="org.apache.log4j.ConsoleAppender" name="CONSOLE"> 
7.<param name="Target" value="System.out"/> 
8.<param name="Threshold" value="INFO"/> 
9.<layout class="org.apache.log4j.PatternLayout"> 
10.<param name="ConversionPattern" value="%d [%p] - %m%n "/> 
11.</layout> 
12.<filter class="org.apache.log4j.varia.DenyAllFilter"/> 
13.<errorHandler class="org.apache.log4j.varia. FallbackErrorHandler"/> 
14.</appender> 
15.
16.<appender class="org.apache.log4j.FileAppender" name="FILE"> 
17.<param name="File" value="file.log"/> 
18.<param name="Append" value="false"/> 
19.<param name="Threshold" value="INFO"/> 
20.<layout class="org.apache.log4j.PatternLayout"> 
21.<param name="ConversionPattern" value="%d [%p] - %m%n "/> 
22.</layout> 
23.</appender> 
24.
25.<appender class="org.apache.log4j.RollingFileAppender" name="ROLLING_FILE"> 
26.<param name="Threshold" value="INFO"/> 
27.<param name="File" value="rolling.log"/> 
28.<param name="Append" value="false"/> 
29.<param name="MaxFileSize" value="10KB"/> 
30.<param name="MaxBackupIndex" value="1"/> 
31.<layout class="org.apache.log4j.PatternLayout"> 
32.<param name="ConversionPattern" value="%d [%p] - %m%n "/> 
33.</layout> 
34.</appender> 
35.
36.<logger additivity="false" name="com.eos"> 
37.<level value="info"/> 
38.<appender-ref ref="CONSOLE"/> 
39.</logger> 
40.
41.<category additivity="true" name="com.eos.log"> 
42.<priority value="warn"/> 
43.</category> 
44.
45.<root> 
46.<priority value="info"/> 
47.<appender-ref ref="CONSOLE"/> 
48.</root> 
49.</log4j:configuration>
 
分享到:
评论

相关推荐

    浅谈目前可以使用ES10的5个新特性

    Object.fromEntries()接受一个可迭代对象作为参数,该对象的元素必须是长度为二的数组,其中第一个元素为键,第二个元素为值。例如: ```javascript const obj = {one:1, two:2, three:3}; const entries = Object....

    浅谈javascript 函数属性和方法

    console.log(callSum2(10, 20)); // 30 function callSum(num1, num2) { return sum.call(this, num1, num2); } console.log(callSum(10, 200)); ``` `apply()`和`call()`的主要用途是扩展函数的作用域,这在处理...

    浅谈入门级oracle数据库数据导入导出步骤

    exp username/password file=export.dmp log=export.log tables=(table1,table2) ``` 导入数据的命令格式大致为: ```bash imp username/password file=export.dmp log=import.log full=y ``` 这里,`full=y`表示...

    浅谈JS中的反柯里化( uncurrying)

    例如,一个接收两个参数的函数f(x, y),通过柯里化可以变成先接收一个参数并返回一个接收第二个参数的新函数。反柯里化则与之相反,它的目的是将原本仅适用于特定对象的方法泛化,使其能够适用于其他对象。 在...

    浅谈Node异步编程的机制

    除了内建的事件机制和Promise,还有许多第三方库用于处理复杂的异步流程,如async/await、Bluebird、Q等。这些库提供了更丰富的控制结构,如waterfall、parallel、each等,使得异步编程更加直观。 4. 解决雪崩问题 ...

    浅谈javascript中的Function和Arguments

    4. **prototype属性**:每个函数都有一个`prototype`属性,用于原型链,定义了通过构造函数创建的对象实例共享的属性和方法。 除了上述属性,`Function`对象还有一些常用的方法: - `apply()`:这个方法允许你改变...

    浅谈类似于(function(){}).call()的js语句

    在标题和描述中提到的“浅谈类似于(function(){}).call()的js语句”主要是讨论如何使用这个模式来执行函数,并改变函数内部`this`的指向。 首先,我们来看一下`function(){}.call()`结构的组成部分: 1. `function...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    第2章 算法,程序的灵魂 13 2.1 程序=算法+数据结构 14 2.1.1 算法 15 2.1.2 数据结构 17 2.2 搜索算法 23 2.2.1 地图寻路问题 23 2.2.2 博弈问题 27 2.2.3 更为广泛的运用 28 2.3 智能算法 29 2.3.1 遗传算法...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    第2章 算法,程序的灵魂 13 2.1 程序=算法+数据结构 14 2.1.1 算法 15 2.1.2 数据结构 17 2.2 搜索算法 23 2.2.1 地图寻路问题 23 2.2.2 博弈问题 27 2.2.3 更为广泛的运用 28 2.3 智能算法 29 2.3.1 遗传算法...

    大学四年,我总结了一些常用的JS数组去重的方法,记录成长【面试必备】

    在学习过程中,可以结合《JavaScript内置对象之-Array》、《ES5新增数组方法》和《浅谈JavaScript中ES6新增的Set和Map结构以及Array.from方法》等相关资料,深入探究数组的其他功能和高级用法。

Global site tag (gtag.js) - Google Analytics