log4j配置参数

  1. 云栖社区>
  2. 博客>
  3. 正文

log4j配置参数

技术小阿哥 2017-11-14 21:48:00 浏览1032
展开阅读全文

Log4j主要组件: 

1、根类别(在类别层次结构的顶部,即全局性的日志级别) 

配置根Logger,其语法为: 

log4j.rootLogger = [level] , appenderName, appenderName, ... 

level 是日志记录的类别 

appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 

类别level 为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALL或自定义的优先级。 

og4j常用的优先级FATAL>ERROR>WARN>INFO>DEBUG 

配置根Logger,其语法为: 

log4j.rootLogger = [ level ] , appenderName, appenderName, … 

如果为log4j.rootLogger=WARN,则意味着只有WARN,ERROR,FATAL被输出,DEBUG,INFO将被屏蔽掉。 

举例:log4j.rootCategory=INFO,stdout,Runlog,Errorlog 

根日志类别为INFO,DEBUG将被屏蔽,其他的将被输出。 stdout,Runlog,Errorlog分别为3个输出目的地。 

 

2、常用输出格式 

 

%c:列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间.假设当前logger名字空间是"a.b.c" 

%c a.b.c 

%c{2} b.c 

%20c (若名字空间长度小于20,则左边用空格填充) 

%-20c (若名字空间长度小于20,则右边用空格填充) 

%.30c (若名字空间长度超过30,截去多余字符) 

%20.30c (若名字空间长度小于20,则左边用空格填充;若名字空间长度超过30,截去多余字符) 

%-20.30c (若名字空间长度小于20,则右边用空格填充;若名字空间长度超过30,截去多余字符) 

%C:列出调用logger的类的全名(包含包路径) .假设当前类是"org.apache.xyz.SomeClass" 

%C org.apache.xyz.SomeClass 

%C{1} SomeClass 

%d:显示日志记录时间,{<日期格式>}使用ISO8601定义的日期格式 

%d{yyyy/MM/dd HH:mm:ss,SSS} 2005/10/12 22:23:30,117 

%d{ABSOLUTE} 22:23:30,117 

%d{DATE} 12 Oct 2005 22:23:30,117 

%d{ISO8601} 2005-10-12 22:23:30,117 

%F:显示调用logger的源文件名 

%F MyClass.java 

%l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数 

%l MyClass.main(MyClass.java:129) 

%L:显示调用logger的代码行 

%L 129 

%m:显示输出消息 

%m This is a message for debug. 

%M:显示调用logger的方法名 

%M main 

%n:当前平台下的换行符 

%n Windows平台下表示rn UNIX平台下表示n 

 

%p:显示该条日志的优先级 

%p INFO 

%r:显示从程序启动时到记录该条日志时已经经过的毫秒数 

%r 1215 

%t:输出产生该日志事件的线程名 

%t MyClass 

%x:按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志.假设某程序调用顺序是MyApp调用com.foo.Bar 

%c %x - %m%n MyApp - Call com.foo.Bar. com.foo.Bar - Log in Bar 

MyApp - Return to MyApp. 

 

%X:按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。 

%X{5} (记录代号为5的客户端的日志) 

%%:显示一个百分号 

%% % 

 

 

 

-X号:X信息输出时左对齐; 

%p:日志信息级别 

%d{}:日志信息产生时间 

%c:日志信息所在地(类名) 

%m:产生的日志具体信息 

%n:输出日志信息换行 

举例: 

log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n 

 

3、布局 

使用的输出布局,其中log4j提供4种布局: 

org.apache.log4j.HTMLLayout(以HTML表格形式布局) 

org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 

举例: 

输出格式为HTML表格log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout 

输出格式为可以灵活地指定布局模式 

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

输出格式为包含日志信息的级别和信息字符串 

log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout 

输出格式为包含日志产生的时间、线程、类别等等信息 

log4j.appender.stdout.layout=org.apache.log4j.TTCCLayout 

 

4、目的地 

配置日志信息输出目的地Appender,其语法为 

log4j.appender.appenderName = fully.qualified.name.of.appender.class 

log4j.appender.appenderName.option1 = value1 

... 

log4j.appender.appenderName.option = valueN 

appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 

log4j支持的输出目的地: 

org.apache.log4j.ConsoleAppender 控制台 

org.apache.log4j.FileAppender 文件 

org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件 

org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件), 

org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方) 

org.apache.log4j.net.SMTPAppender 邮件 

org.apache.log4j.jdbc.JDBCAppender 数据库 

其他如:GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等 

 

举例: 

输出到控制台 

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender(指定输出到控制台) 

log4j.appender.Threshold=DEBUG(指定输出类别) 

log4j.appender.CONSOLE.Target=System.out 

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout(指定输出布局) 

log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定输出格式) 

输出到文件 

log4j.appender.FILE=org.apache.log4j.FileAppender(指定输出到文件) 

log4j.appender.FILE.File=file.log(指定输出的路径及文件名) 

log4j.appender.FILE.Append=false 

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout(指定输出的布局) 

log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定输出的格式) 

 

 

输出到文件(轮换"日志文件",当日志文件达到指定大小时,该文件就被关闭并备份,然后创建一个新的日志文件) 

log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(指定输出到文件) 

log4j.appender.ROLLING_FILE.Threshold=ERROR(指定输出类别) 

log4j.appender.ROLLING_FILE.File=rolling.log(指定输出的路径及文件名) 

log4j.appender.ROLLING_FILE.Append=true 

log4j.appender.ROLLING_FILE.MaxFileSize=10KB(指定输出到文件的大小) 

log4j.appender.ROLLING_FILE.MaxBackupIndex=1 

log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout(指定采用输出布局) 

log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定采用输出格式)

 

输出到Socket 

log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender(指定输出到Socket) 

log4j.appender.SOCKET.RemoteHost=localhost(远程主机) 

log4j.appender.SOCKET.Port=5001(远程主机端口) 

log4j.appender.SOCKET.LocationInfo=true 

log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout(布局) 

log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE} [DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n(输出格式) 

 

输出到邮件 

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定输出到邮件) 

log4j.appender.MAIL.Threshold=FATAL 

log4j.appender.MAIL.BufferSize=10 

log4j.appender.MAIL.From=chenyl@hollycrm.com(发件人) 

log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP服务器) 

log4j.appender.MAIL.Subject=Log4J Message 

log4j.appender.MAIL.To=chenyl@hollycrm.com(收件人) 

log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(布局) 

log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式) 

 

输出到数据库 

log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定输出到数据库) 

log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定数据库URL) 

log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定数据库driver) 

log4j.appender.DATABASE.user=root(指定数据库用户) 

log4j.appender.DATABASE.password=root(指定数据库用户密码) 

log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(组织SQL语句) 

log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(布局) 

log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式) 

 

5、日志类别补充 

有时我们需要对某个特定的部分指定有别于根类别的日志类别,可以指定某个包的优先级 

如: 

log4j.category.com.neusoft.mbip.dm.util=ERROR ,其中com.neusoft.mbip.dm.util为我们需要特别指定日志类别的部分。 

或者可以指定输出文件的优先级 

log4j.appender.Errorlog.Threshold=ERROR 

 

三、 常用log4j配置 

常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子: 

1、log4j.properties 

### 设置org.zblog域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ## 

log4j.category.org.zblog=ERROR,A1 

log4j.category.org.zblog=INFO,A2 

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

### 设置输出地A1,为ConsoleAppender(控制台) ## 

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

### 设置A1的输出布局格式PatterLayout,(可以灵活地指定布局模式)## 

log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n 

### 配置日志输出的格式## 

log4j.appender.A2=org.apache.log4j.RollingFileAppender 

### 设置输出地A2到文件(文件大小到达指定尺寸的时候产生一个新的文件)## 

log4j.appender.A2.File=E:/study/log4j/zhuwei.html 

### 文件位置## 

log4j.appender.A2.MaxFileSize=500KB 

### 文件大小## 

log4j.appender.A2.MaxBackupIndex=1 

log4j.appender.A2.layout=org.apache.log4j.HTMLLayout 

##指定采用html方式输出 

 

本文转自 zhouhaipeng 51CTO博客,原文链接:http://blog.51cto.com/tianya23/746996,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注