log4j 使用示例

1.配置默认的 logger :rootLogger

#config root logger, this is the default logger
log4j.rootLogger = DEBUG,stdout,rolling_file


# Console Appender #
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.encoding=UTF-8
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n
log4j.appender.stdout.Threshold=WARN


# Rolling File  #
log4j.appender.rolling_file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rolling_file.Threshold=WARN
log4j.appender.rolling_file.encoding=UTF-8
log4j.appender.rolling_file.File=data/logs/server.log
# create one file every hour
log4j.appender.rolling_file.DatePattern='_'yyyy-MM-dd_HH
log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling_file.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n


作用:在类中获取 logger 的实例时,如果整个项目只配置了一个 rootLogger,那么在使用

private static Logger logger = Logger.getLogger(XXX.class);

的时候,默认获取的是 rootLogger


2.配置指定名称的 logger

# create logger for specified log
log4j.logger.cookieUser=INFO,cookieUser
# dont append info to rootLogger
log4j.additivity.cookieUser = false
log4j.appender.cookieUser=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.cookieUser.File=data/logs/cookieUser.log
log4j.appender.cookieUser.DatePattern='_'yyyy-MM-dd_HH
log4j.appender.cookieUser.layout=org.apache.log4j.PatternLayout 
log4j.appender.cookieUser.layout.ConversionPattern=%m%n


作用:有时候我们可能想把不同的日志输出到不同的日志文件中去,这个时候我们就想使用指定名称的 logger

private static Logger cookieUserlogger = Logger.getLogger("cookieUser");

之后的所有此 logger 输出内容都会被输出到 data/logs/cookieUser.log 文件中


3.为指定包配置默认的 logger

# create logger for specified class
log4j.logger.com.log.test1=INFO,crowdInfoRefresher
log4j.additivity.crowdInfoRefresher = false
log4j.appender.crowdInfoRefresher=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.crowdInfoRefresher.File=data/logs/test1.log
log4j.appender.crowdInfoRefresher.DatePattern='_'yyyy-MM-dd
log4j.appender.crowdInfoRefresher.layout=org.apache.log4j.PatternLayout 
log4j.appender.crowdInfoRefresher.layout.ConversionPattern=%m%n


作用:有时候我们想把指定包里面的日志输出到指定的文件里面,这个时候我们就需要用到这个配置了。

这个时候通过

private static Logger logger  = Logger.getLogger(XXX.class); 

获取的 logger 将不再是 rootLogger 而是为指定包配置的 logger

当然你如果想要在此使用 rootLogger 那么你就需要使用

private static Logger logger  = Logger.getRootLogger();

来获取 rootLogger。


参数解释:

DailyRollingFileAppender:按照天生成日志,需要配合 DatePattern 参数来指定是按照天生成日志还是安装小时生成日志。

按照天:log4j.appender.crowdInfoRefresher.DatePattern='_'yyyy-MM-dd

按照小时:log4j.appender.cookieUser.DatePattern='_'yyyy-MM-dd_HH



示例:log4j.properties 文件

[plain]  view plain  copy
  1. #config root logger, this is the default logger  
  2. log4j.rootLogger = DEBUG,stdout,rolling_file  
  3.   
  4. # Console Appender #  
  5. log4j.appender.stdout = org.apache.log4j.ConsoleAppender  
  6. log4j.appender.stdout.encoding=UTF-8  
  7. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
  8. log4j.appender.stdout.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n  
  9. log4j.appender.stdout.Threshold=WARN  
  10.   
  11. # Rolling File  #  
  12. log4j.appender.rolling_file=org.apache.log4j.DailyRollingFileAppender  
  13. log4j.appender.rolling_file.Threshold=WARN  
  14. log4j.appender.rolling_file.encoding=UTF-8  
  15. log4j.appender.rolling_file.File=data/logs/server.log  
  16. # create one file every hour  
  17. log4j.appender.rolling_file.DatePattern='_'yyyy-MM-dd_HH  
  18. log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout  
  19. log4j.appender.rolling_file.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n  
  20.   
  21. # create logger for specified log  
  22. log4j.logger.cookieUser=INFO,cookieUser  
  23. # dont append info to rootLogger  
  24. log4j.additivity.cookieUser = false  
  25. log4j.appender.cookieUser=org.apache.log4j.DailyRollingFileAppender   
  26. log4j.appender.cookieUser.File=data/logs/cookieUser.log  
  27. log4j.appender.cookieUser.DatePattern='_'yyyy-MM-dd_HH  
  28. log4j.appender.cookieUser.layout=org.apache.log4j.PatternLayout   
  29. log4j.appender.cookieUser.layout.ConversionPattern=%m%n  
  30.   
  31. # create logger for specified class  
  32. log4j.logger.com.log.test1=INFO,crowdInfoRefresher  
  33. log4j.additivity.crowdInfoRefresher = false  
  34. log4j.appender.crowdInfoRefresher=org.apache.log4j.DailyRollingFileAppender   
  35. log4j.appender.crowdInfoRefresher.File=data/logs/test1.log  
  36. log4j.appender.crowdInfoRefresher.DatePattern='_'yyyy-MM-dd  
  37. log4j.appender.crowdInfoRefresher.layout=org.apache.log4j.PatternLayout   
  38. log4j.appender.crowdInfoRefresher.layout.ConversionPattern=%m%n  


测试类:LogUtils.Java

[java]  view plain  copy
  1. package com.log.test;  
  2.   
  3. import org.apache.log4j.Logger;  
  4.   
  5. public class LogUtils {  
  6.       
  7.     /** 
  8.      * 获取 RootLogger 
  9.      * 此 logger 的输出目的地就是 rootLogger 配置的目的地 
  10.      */  
  11.     private static Logger roorInfoLogger = Logger.getRootLogger();  
  12.       
  13.     /** 
  14.      * 获取默认的 logger,如果此包没有配置默认的 logger,那么获取的 logger 
  15.      * 将会是 rootLogger,如果此包配置了 默认的 logger,那么获取的将会是配置的默认的 logger 
  16.      */  
  17.     private static Logger logger = Logger.getLogger(LogUtils.class);  
  18.       
  19.     /** 
  20.      * 获取指定的名称的 logger 
  21.      */  
  22.     private static Logger cookieUserlogger = Logger.getLogger("cookieUser");  
  23.       
  24.     public static void main(String[] args){  
  25.         // 在此 roorInfoLogger 跟 logger 其实用的同一个 logger  
  26.         roorInfoLogger.info("哈哈哈哈:roorInfoLogger:info");  
  27.         roorInfoLogger.warn("哈哈哈哈:roorInfoLogger");  
  28.         cookieUserlogger.info("哈哈哈哈:cookieUser");  
  29.         logger.warn("啦啦啦啦啦");  
  30.         System.out.println("aaaaa");  
  31.     }  
  32. }  


测试类:

[java]  view plain  copy
  1. package com.log.test1;  
  2.   
  3. import org.apache.log4j.Logger;  
  4.   
  5. public class Test1 {  
  6.     /** 
  7.      * 如果 log4j 为本类所在的包配置了 logger,那么 logger 获取的是配置的那个 logger 
  8.      * 如果没有为此类所在的包配置 logger 那么 logger 获取的将会是 rootLogger 
  9.      */  
  10. //  private static Logger logger  = Logger.getRootLogger();  
  11.     private static Logger logger  = Logger.getLogger(Test1.class);   
  12.     public static void main(String[] args) {  
  13.         logger.warn("Test1:haha");  
  14.     }  
  15. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值