log4j配置参数

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
473 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
27天前
|
SQL
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
44 5
|
2月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
3月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
88 3
|
3月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
3月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
48 1
|
3月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
234 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
5月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
5月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决