【Java编程系列】log4j配置日志按级别分别生成日志文件

热门系列:


Log4j配置及说明

1.配置内容模板

说明:内容本人亲测使用并编辑分享。
 
#定义LOG输出级别
log4j.rootLogger=DEBUG,Console,D,I,E
#定义日志输出目的地为控制台
log4j.appender.Console.Threshold=DEBUG
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n


### 输出到日志文件(DEBUG级别) ###
log4j.appender.D = com.cams.util.Log4jAppender
###设置DatePattern,当天日志保存到log.log文件,前一天的日志文件名将被修改为
#debug.log + _yyyy-MM-dd.log
log4j.appender.D.File =logs/cams/debug.log
log4j.appender.D.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n


### 输出到日志文件(INFO级别) ###
log4j.appender.I = com.cams.util.Log4jAppender
###设置DatePattern,当天日志保存到log.log文件,前一天的日志文件名将被修改为
#info.log + _yyyy-MM-dd.log
log4j.appender.I.File =logs/cams/info.log
log4j.appender.I.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.I.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

### 保存异常信息到单独文件(ERROR级别) ###
log4j.appender.E = com.cams.util.Log4jAppender
###设置DatePattern,当天日志保存到error.log文件,前一天的日志文件名将被修改为
#error.log + _yyyy-MM-dd.log
log4j.appender.E.File =logs/cams/error.log
log4j.appender.E.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.E.Append = true
## 只输出ERROR级别以上的日志!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n


log4j.logger.org.springframework.jdbc=DEBUG
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
##log4j.logger.com.cams.dao=debug,A1


###显示mybatis的SQL语句部分,类似于hibernate在控制台打印sql语句那部分
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

注意点:当我们需要将日志按Error,Warn,Info,Debug等级别来单独生成日志文件时,仅配置log4j.propertites还不行。必须重写DailyRollingFileAppender类的isAsSevereAsThreshold方法。此方法中源代码是返回当前级别及以上。所以此处重写应范围与相应级别匹配;即如下

package com.cams.util;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;

public class Log4jAppender extends DailyRollingFileAppender{

  @Override
  public boolean isAsSevereAsThreshold(Priority priority) {
  // TODO Auto-generated method stub
  //只判断是否相等,而不判断优先级
  return this.getThreshold().equals(priority);
  }

}

 

2.具体配置项说明:

1.输出级别的种类
  • ERROR、WARN、INFO、DEBUG
  • ERROR 为严重错误 主要是程序的错误
  • WARN 为一般警告,比如session丢失
  • INFO 为一般要显示的信息,比如登录登出
  • DEBUG 为程序的调试信息
 
2.配置日志信息输出目的地
  • log4j.appender.appenderName = fully.qualified.name.of.appender.class
  • 1.org.apache.log4j.ConsoleAppender(控制台)
  • 2.org.apache.log4j.FileAppender(文件)
  • 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
  • 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
  • 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
 
3.配置日志信息的格式
  • log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  • 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  • 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  • 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  • 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
 
4.控制台选项
  • Threshold=DEBUG:指定日志消息的输出最低层次。
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  • Target=System.err:默认情况下是:System.out,指定输出控制台
 
FileAppender 选项
  • Threshold=DEBUF:指定日志消息的输出最低层次。
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  • File=mylog.txt:指定消息输出到mylog.txt文件。
  • Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

 

RollingFileAppender 选项

  • Threshold=DEBUG:指定日志消息的输出最低层次。
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  • File=mylog.txt:指定消息输出到mylog.txt文件。
  • Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
  • MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
  • MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
例:log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
 
5.日志信息格式中几个符号所代表的含义:
  •  -X号: 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字符,就从左边较远输出的字符截掉。
 
 
 

本博客皆为学习、分享、探讨为本,欢迎各位朋友评论、点赞、收藏、关注,一起加油!

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

善良勤劳勇敢而又聪明的老杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值