log4j分级输出(嵌套代码中)

 

log4j在java开发中常用的日志工具包,对程序日常运行时信息的信息进行记录,方便程序调试、跟踪、维护等,下面我将和大家分享我如何将程序中各种类型的运行信息分类输出到不同日志的方法。

 

说实例之前先看看简单了解下log4j配置文件中常用参数

 

(1). 输出方式appender一般有5种:

      org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
      org.apache.log4j.ConsoleAppender (控制台)  
      org.apache.log4j.FileAppender (文件)
      org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
      org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

 

(2). 日记记录的优先级priority,优先级由高到低分为 
      OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
      Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。

 

(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
      %c        输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
      %d       输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
      %l        输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
      %n       换行符
      %m      输出代码指定信息,如info(“message”),输出message
      %p       输出优先级,即 FATAL ,ERROR 等
      %r        输出从启动到显示该log信息所耗费的毫秒数
      %t        输出产生该日志事件的线程名

 

 

log4j将日志信息分类输出以不同日志文件实例:

1、引入log4j

 

2、log4j.properties配置文件内容(配置文件放在src目录下):

 

#Debug

log4j.logger.debug=debug,debugAppender

#输出到控制台

log4j.appender.debugAppender=org.apache.log4j.RollingFileAppender

log4j.appender.debugAppender.File=D:/logs/debug.log

log4j.appender.debugAppender.MaxFileSize=10240KB

log4j.appender.debugAppender.MaxBackupIndex=3

#设置输出样式

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

#自定义样式

log4j.appender.debugAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.debugAppender = false

 

#Info

log4j.logger.info=debug,infoAppender

#输出到控制台

log4j.appender.infoAppender=org.apache.log4j.RollingFileAppender

log4j.appender.infoAppender.File=D:/logs/info.log

log4j.appender.infoAppender.MaxFileSize=10240KB

#最多保存几个备份文件

log4j.appender.infoAppender.MaxBackupIndex=3

#设置输出样式

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

#自定义样式

log4j.appender.infoAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.infoAppender = false

 

#Error

log4j.logger.error=debug,errorAppender

#输出到控制台

log4j.appender.errorAppender=org.apache.log4j.RollingFileAppender

log4j.appender.errorAppender.File=D:/logs/error.log

log4j.appender.errorAppender.MaxFileSize=10240KB

log4j.appender.errorAppender.MaxBackupIndex=3

#设置输出样式

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

#自定义样式

log4j.appender.errorAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.errorAppender = false

 

3.写一个工具类LogUtil

public class LogUtil {

 

private Logger loggerDebug = null;

private Logger loggerError = null;

private Logger loggerInfo = null;

 

private LogUtil() {

 

}

 

public static LogUtil getLogUtil(Object message) {

return new LogUtil();

}

 

public void debug(Object message) {

if (loggerDebug == null) {

loggerDebug = Logger.getLogger("debug");

}

loggerDebug.debug(message);

}

 

public void error(Object message) {

if (loggerError == null) {

loggerError = Logger.getLogger("error");

}

loggerError.error(message);

}

 

public void info(Object message) {

if (loggerInfo == null) {

loggerInfo = Logger.getLogger("info");

}

loggerInfo.info(message);

}

 

}

 

4.测试输出

public class Test {

 

public static void main(String[] args) {

LogUtil myLog = LogUtil.getLogUtil(Test.class);

myLog.debug("调试信息咆哮体...");

myLog.info("日志信息有木有...");

myLog.error("错误信息你伤不起...");

}

 

}

 

此方法可以实现日志的分级输出,但是会嵌套在代码里,或许可以用拦截器来记录日志...

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值