log4j向多个文件记录日志

关键配置,指定想要的日志级别信息输出到指定的日志文件中:

  1. log4j.appender.errorLogger.Threshold=ERROR
  2. #扩展,可指定只在子类自己的输出源中输出,不在父类的输出源中输出
  3. log4j.additivity.errorLogger=false

additivity配置例子参考log4j配置文件中的additivity属性,additivity配置详细log4j additivity解说

  1. log4j.logger.com.sgcc=debug, platform1
  2. log4j.additivity.com.sgcc.test.p2=false
  3. log4j.logger.com.sgcc.test.p1=debug, platform2
  4. log4j.logger.com.sgcc.test.p2=debug, platform3

完整配置:

# 定义缺省的日志级别和输出对象
  log4j.rootLogger=INFO,console,errorLogger,corLogger

  1. #制定logger的名字,用于外部获取此logger
  2. #log4j.logger.tracer=DEBUG,tracer
  3.  
  4. log4j.logger.errorLogger=ERROR,errorLogger
  5. log4j.logger.corLogger=INFO,corLogger
  6.  
  7. # 设定错误日志文件的输出模式
  8. log4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppender
  9. log4j.appender.errorLogger.File=${log.home}/core/error.log
  10. log4j.appender.errorLogger.Threshold=ERROR
  11. log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout
  12. log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
  13.  
  14. # 设定审计日志文件的输出模式
  15. log4j.appender.corLogger=org.apache.log4j.DailyRollingFileAppender
  16. log4j.appender.corLogger.File=${log.home}/core/cor.log
  17. log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout
  18. log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
  19.  
  20. # 设定跟踪日志文件的输出模式
  21. #log4j.appender.tracer=org.apache.log4j.DailyRollingFileAppender
  22. #log4j.appender.tracer.File=${log.home}/core/tracer.log
  23. #log4j.appender.tracer.layout=org.apache.log4j.PatternLayout
  24. #log4j.appender.tracer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n

  

可是上面,还是上面指定控制还不是完美控制的,因为log4j记录器默认可输出的级别在输出日志信息级别以上的话都会输出,因为ERROR比INFO、DEBUG等级别高,所以想要INFO级别的日志信息输出到info.log日志文件中、DEBUG级别的日志信息输出到debug.log日志文件中等这样的需要话。需要重写log4j appender类。看代码:

新建一个类:

  1. package com.core.util;
  2.  
  3. import org.apache.log4j.DailyRollingFileAppender;
  4. import org.apache.log4j.Priority;
  5.  
  6. public class ICoreDailyRollingFileAppender extends DailyRollingFileAppender {
  7.  
  8. @Override
  9. public boolean isAsSevereAsThreshold(Priority priority) {
  10.  
  11. return this.getThreshold().equals(priority);
  12. }
  13. }

再到log4j.porperties文件中配置:

  1. # 定义缺省的日志级别和输出对象
  2. log4j.rootLogger=INFO,console,errorLogger,corLogger
  3.  
  4. #制定logger的名字,用于外部获取此logger
  5. #log4j.logger.tracer=DEBUG,tracer
  6.  
  7. log4j.logger.errorLogger=ERROR,errorLogger
  8. log4j.logger.corLogger=INFO,corLogger
  9.  
  10. # 设定错误日志文件的输出模式
  11. log4j.appender.errorLogger=com.core.util.ICoreDailyRollingFileAppender
  12. log4j.appender.errorLogger.File=${log.home}/core/error.log
  13. log4j.appender.errorLogger.Threshold=ERROR
  14. log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout
  15. log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
  16.  
  17. # 设定审计日志文件的输出模式
  18. log4j.appender.corLogger=com.core.util.ICoreDailyRollingFileAppender
  19. log4j.appender.corLogger.File=${log.home}/core/cor.log
  20. log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout
  21. log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
  22.  
  23. # 设定跟踪日志文件的输出模式
  24. #log4j.appender.tracer=com.core.util.ICoreDailyRollingFileAppender
  25. #log4j.appender.tracer.File=${log.home}/core/tracer.log
  26. #log4j.appender.tracer.layout=org.apache.log4j.PatternLayout
  27. #log4j.appender.tracer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n

  OK,

参考: 

Log4j按级别输出日志到不同文件配置分析- http://blog.csdn.net/projava/article/details/7344839

有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志的更多相关文章

  1. log4j设置,以及中文乱码,通过过滤器输出指定级别的日志,或者指定级别范围的日志

    配置文件为默认名字log4j.properties时,放在某个模块下的resources下即可,即使有多个模块的情况下,任意一个模块的resources下有这个默认名字的文件log4j.propert ...

  2. Log4j 配置某个类中某个方法的输出日志到指定文件

    我们在项目中使用log4j开发的时候,会遇到一些特殊的情况,比如:要输出某个类中某个方法的日志信息到文件中,方便以后查看 可以使用如下配置: log4j.rootLogger=info,stdout ...

  3. springboot输出日志到指定目录,简单粗暴,springboot输出mybatis日志

    springboot官方文档地址https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot- ...

  4. SiftingAppender logback 动态 输出 日志 到指定日志文件

    SiftingAppender https://www.mkyong.com/logging/logback-different-log-file-for-each-thread/

  5. (转)log4j(二)——如何控制日志信息的输出?

    一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 1 先看栗子再来下结论 import org.apache.log4j.*; import test.log4j.bean ...

  6. log4j(二)——如何控制日志信息的输出?

    一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 二:先看栗子再来下结论 import org.apache.log4j.*; import test.log4j.bean ...

  7. log4j不输出日志错误分析

    1.rootLogger不输出 代码如下: 配置文件代码: log4j.rootLogger=info, R,userLog log4j.appender.R=org.apache.log4j.Rol ...

  8. 解决Flink输出日志中时间比当前时间晚8个小时的问题

    Flink安装在CentOS7上,默认时间是UTC时间,查看Flink日志,发现输出时间比当前时间晚8个小时. 通过如下命令,调整成北京时间 cp /usr/share/zoneinfo/Asia/S ...

  9. ASP.NET Core 集成测试中通过 Serilog 向控制台输出日志

    日志是程序员的雷达,不仅在生产环境中需要,在集成测试环境中也需要,可以在持续集成失败后帮助定位问题.与生产环境不同,在集成测试环境中使用控制台输出日志更方便,这样可以通过持续集成 runner 执行 ...

随机推荐

  1. Linux命令缩写来由

    A 命令 全称 功能 备注 apt AdvancedPackaging Tool APT用来自动下载,配置,安装二进制或者源代码格式的软件包   awk Aho Weiberger and Kerni ...

  2. C#操作AD及Exchange Server总结(一)

    这篇博客的目的:根据亲身项目经历,总结对AD及Exchange Server的操作,包括新建AD用户,设置密码,为AD用户创建邮箱等. 本文完全原创,转载请说明出处,希望对大家有用. 文档目录: 测试 ...

  3. 【Type】类型 ParameterizedType

    Type 接口[重要] Type接口完整的定义: public interface java.lang.reflect.Type { /** * Returns a string describing ...

  4. 如何实现JS函数的重载

    javascript不能支持函数的重载,如下: function f(length) { alert("高为:"+length); } function f(length,widt ...

  5. Element table使用技巧详解

    1.控制table某些行数不显示 下载附件的需求,有些行有附件,有些没有,所以需要过滤,重点是:Array.filter()使用 <el-card :body-style="{ pad ...

  6. scala多线程

    object Test { def main(args: Array[String]) { //创建线程池 val threadPool:ExecutorService=Executors.newFi ...

  7. 使用 Shell 脚本自动化 Linux 系统维护任务

    如果一个系统管理员花费大量的时间解决问题以及做重复的工作,你就应该怀疑他这么做是否正确.一个高效的系统管理员应该制定一个计划使得其尽量花费少的时间去做重复的工作.因此尽管看起来他没有做很多的工作,但那 ...

  8. Qtcreator中常用快捷键总结

    F1        查看帮助F2        跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2    声明和定义之间切换F4        头文件和源文件之间切换Ctrl+1     ...

  9. C# GDI+技术

    C# GDI+技术 GDI+概述         GDI+是GDI(即Windows早期版本号中附带的Graphics Device Interface)的后继者.它是一种构成Windows XP操作 ...

  10. HTML代码 CSS

    第一步.编写横向菜单的HTML代码架构 请将以下代码添加到HTML文档的导航栏区域中. <ul id="menu"> <li><a href=&quo ...