Log4J配置详解

来源:互联网 发布:淘宝店铺售假多久恢复 编辑:程序博客网 时间:2024/06/06 19:31

先看一个配置文

log4j.rootLogger=DEBUG, stdout , Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%nlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=d://log//FTASWorkFlow.loglog4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n</span>

rootLogger也可以写作rootCategory

rootLogger value的含义

第一个逗号前表示log的级别,FATAL,ERROR,WARN,INFO,DEBUG,级别依次降低,开发的时候一般选作DEBUG,上线前期可以INFO或者DEBUG,版本稳定了可以WARN或者ERROR。稳定以后可以每天将日志发送到你的邮箱(至于怎么发,看最下面的Appender),这样就不需要每天去看检查上线的项目有没有异常。


第一个逗号后面的表示你定义的appender,比如我们这里定义了stdout和R,这个名字可以随便定,和下面的对应就好了。这里的stdout代表控制台输出,上线的时候别忘记关掉,直接在rootLogger里去掉stdout就好了。


Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

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

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

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

ConsoleAppender和DailyRollingFileAppender以及RollingFileAppender用的比较多,后面两个用哪个看需求。


不同的Appender有不同的属性,但是Appender都会有一个属性layout,layout又有一个属性PatternLayout 

log4j提供以下4种布局样式:

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

org.apache.log4j.PatternLayout(可以灵活地指定布局模式,就是可以自定义输出样式),

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

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


再看一下PatternLayout的值代表的什么意思

%d 输出日志时间点的日期或时间,紧跟一对花括号进行自定义格式

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

%c 输出所属的类目,通常就是所在类的全名

%l  输出行号

%m 输出代码中指定的消息

%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”,也就是一跳消息占用一行

      所以%m%n基本都是一起用

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

   我们经常会看到[%-5p]这样的用法,就是对%p进行格式化,占用几个字符空间,因为INFO,DEBUG他们有的占用4个有的占用5个,日志看起来不对其,进行一个格式化而已。

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%x 输出对齐


再看看appender的其他属性

log4j.appender.FILE.File=D:/logs/log4j.log      --------定义输出文件的位置及文件名

log4j.appender.FILE.MaxFileSize=1MB             --------定义每个文件的大小,超过这个大小,则新建一个文件,注意单位 MB 或 KB

log4j.appender.D.Threshold = DEBUG              --------输出DEBUG级别以上的日志


输出到邮件
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(格式)


0 0