您的位置:首页 > 编程语言 > Java开发

springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

2016-02-24 16:39 836 查看
Log4j由三个重要的组件构成:

日志信息的优先级

日志信息的输出目的地

日志信息的输出格式

日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;

日志信息的输出目的地指定了日志将打印到控制台还是文件中;

而输出格式则控制了日志信息的显示内容。

Log4j支持两种配置文件格式

一种是XML格式的文件,一种是Java特性文件(键=值)。

下面我们介绍使用Java特性文件做为配置文件的方法:

1.配置根Logger,其语法为:

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

比如我们的就是

log4j.rootLogger=DEBUG,stdout,D

appenderName就是一个名字哈,你可以定义你自己的,不是说就要这样子的,不过要跟下面使用的时候对应上就好了

其中,level是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。

比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。

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

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

log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1=value1
…
log4j.appender.appenderName.option=valueN

其中,Log4j提供的appender有以下几种:

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

(1)ConsoleAppender选项:

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Target=System.err:默认值是System.out。

(2)FileAppender选项:

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。

File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。

(3)DailyRollingFileAppender选项:

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。

File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。

DatePattern='.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。

另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:

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:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。

File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。

MaxFileSize=100KB:后缀可以是KB,MB或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。

MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。

我们的

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

就是指定到控制台的=左边的stdout就是我们定义的名字,后面就是类型嘛

说白了就是

log4j.appender.appenderName=appender的类型

这样子就指定了输入的目的地了

3.配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1=value1
…
log4j.appender.appenderName.layout.option=valueN

其中,Log4j提供的layout有以e几种:

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

(1)HTMLLayout选项:

LocationInfo=true:输出java文件名称和行号,默认值是false。

Title=MyLogging:默认值是Log4JLogMessages。

(2)PatternLayout选项:

ConversionPattern=%m%n:设定以怎样的格式显示消息。

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:%m输出代码中指定的消息

%p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r输出自应用启动到输出该log信息耗费的毫秒数
%c输出所属的类目,通常就是所在类的全名
%t输出产生该日志事件的线程名
%n输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyMMMddHH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921
%l输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)


说到这个地方,来点总结性的

我们以我们的例子说

###输出到控制台###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

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

log4j.appender.stdout.layout.ConversionPattern=[%-5p]%d{yyyy-MM-ddHH:mm:ss,SSS}method:%l%n%m%n

其实就相当于你定义了一个方式,这个方式你自己要有一个名字

他就是最开始

log4j.rootLogger=DEBUG,stdout,D这个地方的,第一个逗号后面的这些个名字,他就是appenderName

你需要,指定他的输出目的

也即是

log4j.appender.stdout=目的地

然后是剩下的一些参数,配置一下

就这样子而已

具体的参数,以及参数的值,查查文档,百度一下就出来了

再啰嗦一点几个参数

比如说你想某种方式只是输出某种级别,比如说你想只是把error输出到文件

那么你可以指定

log4j.appender.D.Threshold=ERROR##只输出ERROR级别以上的日志!!!

这个Threshold就控制了这个

#附:Log4j比较全面的配置




#Log4j配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。


log4j.rootLogger=DEBUG,console,dailyFile,im


log4j.additivity.org.apache=true


#控制台(console)


log4j.appender.console=org.apache.log4j.ConsoleAppender


log4j.appender.console.Threshold=DEBUG


log4j.appender.console.ImmediateFlush=true


log4j.appender.console.Target=System.err


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


log4j.appender.console.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n




#日志文件(logFile)


log4j.appender.logFile=org.apache.log4j.FileAppender


log4j.appender.logFile.Threshold=DEBUG


log4j.appender.logFile.ImmediateFlush=true


log4j.appender.logFile.Append=true


log4j.appender.logFile.File=D:/logs/log.log4j


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


log4j.appender.logFile.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n


#回滚文件(rollingFile)


log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender


log4j.appender.rollingFile.Threshold=DEBUG


log4j.appender.rollingFile.ImmediateFlush=true


log4j.appender.rollingFile.Append=true


log4j.appender.rollingFile.File=D:/logs/log.log4j


log4j.appender.rollingFile.MaxFileSize=200KB


log4j.appender.rollingFile.MaxBackupIndex=50


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


log4j.appender.rollingFile.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n


#定期回滚日志文件(dailyFile)


log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender


log4j.appender.dailyFile.Threshold=DEBUG


log4j.appender.dailyFile.ImmediateFlush=true


log4j.appender.dailyFile.Append=true


log4j.appender.dailyFile.File=D:/logs/log.log4j


log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd


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


log4j.appender.dailyFile.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n


#应用于socket


log4j.appender.socket=org.apache.log4j.RollingFileAppender


log4j.appender.socket.RemoteHost=localhost


log4j.appender.socket.Port=5001


log4j.appender.socket.LocationInfo=true


#SetupforLogFactor5


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


log4j.appender.socket.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n


#LogFactor5Appender


log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender


log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000


#发送日志到指定邮件


log4j.appender.mail=org.apache.log4j.net.SMTPAppender


log4j.appender.mail.Threshold=FATAL


log4j.appender.mail.BufferSize=10


log4j.appender.mail.From=xxx@mail.com


log4j.appender.mail.SMTPHost=mail.com


log4j.appender.mail.Subject=Log4JMessage


log4j.appender.mail.To=xxx@mail.com


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


log4j.appender.mail.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n


#应用于数据库


log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender


log4j.appender.database.URL=jdbc:mysql://localhost:3306/test


log4j.appender.database.driver=com.mysql.jdbc.Driver


log4j.appender.database.user=root


log4j.appender.database.password=


log4j.appender.database.sql=INSERTINTOLOG4J(Message)VALUES('=[%-5p]%d(%r)-->[%t]%l:%m%x%n')


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


log4j.appender.database.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n




#自定义Appender


log4j.appender.im=net.cybercorlin.util.logger.appender.IMAppender


log4j.appender.im.host=mail.cybercorlin.net


log4j.appender.im.username=username


log4j.appender.im.password=password


log4j.appender.im.recipient=corlin@cybercorlin.net


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


log4j.appender.im.layout.ConversionPattern=[%-5p]%d(%r)-->[%t]%l:%m%x%n


spring原理实践解析-简单的helloworld

spring原理案例-基本项目搭建01springframework下载官网下载springjar包

spring原理案例-基本项目搭建02springjar包详解springjar包的用途

spring原理案例-基本项目搭建03创建工程运行测试springioc原理实例示例

springmvc整合mybatis完整项目示例

springmvc项目完整示例01需求与数据库表设计简单的springmvc应用实例web项目

springmvc项目完整示例02项目创建-eclipse创建动态web项目配置文件junit单元测试

springmvc项目完整示例03小结

springmvc项目完整示例04整合mybatismybatis所需要的jar包mybatis配置文件sql语句mybatis应用

springmvc项目完整示例05日志--log4j整合配置log4j属性设置log4j配置文件log4j应用

springmvc项目完整示例06日志–log4j参数详细解析log4j如何配置

springmvc项目完整示例07设置配置整合springmvcspringmvc所需jar包springmvcweb.xml文件配置

springmvc项目完整示例08前台页面以及知识点总结

maven项目整合springmvc整合mybatis

eclipse创建maven项目动态web工程完整示例

eclipse创建maven项目动态web工程完整示例maven整合springmvc整合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: