log4j向多个文件记录日志

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

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

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

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

完整配置:

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

#制定logger的名字,用于外部获取此logger
#log4j.logger.tracer=DEBUG,tracer log4j.logger.errorLogger=ERROR,errorLogger
log4j.logger.corLogger=INFO,corLogger # 设定错误日志文件的输出模式
log4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorLogger.File=${log.home}/core/error.log
log4j.appender.errorLogger.Threshold=ERROR
log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定审计日志文件的输出模式
log4j.appender.corLogger=org.apache.log4j.DailyRollingFileAppender
log4j.appender.corLogger.File=${log.home}/core/cor.log
log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定跟踪日志文件的输出模式
#log4j.appender.tracer=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.tracer.File=${log.home}/core/tracer.log
#log4j.appender.tracer.layout=org.apache.log4j.PatternLayout
#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类。看代码:

新建一个类:

package com.core.util;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority; public class ICoreDailyRollingFileAppender extends DailyRollingFileAppender { @Override
public boolean isAsSevereAsThreshold(Priority priority) { return this.getThreshold().equals(priority);
}
}

再到log4j.porperties文件中配置:

# 定义缺省的日志级别和输出对象
log4j.rootLogger=INFO,console,errorLogger,corLogger #制定logger的名字,用于外部获取此logger
#log4j.logger.tracer=DEBUG,tracer log4j.logger.errorLogger=ERROR,errorLogger
log4j.logger.corLogger=INFO,corLogger # 设定错误日志文件的输出模式
log4j.appender.errorLogger=com.core.util.ICoreDailyRollingFileAppender
log4j.appender.errorLogger.File=${log.home}/core/error.log
log4j.appender.errorLogger.Threshold=ERROR
log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定审计日志文件的输出模式
log4j.appender.corLogger=com.core.util.ICoreDailyRollingFileAppender
log4j.appender.corLogger.File=${log.home}/core/cor.log
log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定跟踪日志文件的输出模式
#log4j.appender.tracer=com.core.util.ICoreDailyRollingFileAppender
#log4j.appender.tracer.File=${log.home}/core/tracer.log
#log4j.appender.tracer.layout=org.apache.log4j.PatternLayout
#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. ubuntu/wireshark: There are no interfaces on which a capture can be done.故障解决

    [转载]http://blog.csdn.net/ccwwff/article/details/6697258 在ubuntu安装wireshark, 在启动程序启动wireshark. 点captr ...

  2. 国庆大礼包:2014年最全的ANDROID GUI模板和线框图免费下载

    距离上次分享GUI模板有很长时间了,这段时间里设计趋势不断变化,谷歌推出了最新的Android L以及全新的界面设计,UI设计师又有得忙了,今天收集了一组实用的GUI模板和线框图,包含最新的Andro ...

  3. 利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览

    我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者Web游戏外挂.而C#中封装好的WebClient可以在某些要求不算搞的场景实现Http的Post和Get.具体请见代码: ...

  4. Cognos Report Studio 链接查询需要注意的地方2

    在Report Studio里面用SQL设计报表,查询2,查询3 要链接一般按条件  a1=b1 在选择链接方式需要注意的地方: 默认链接 外部链接 需要设置打开FM,打开报表设计引用的数据包(FM- ...

  5. 关于COM的Unicode string的精彩论述

    I need to make a detour for a few moments, and discuss how to handle strings in COM code. If you are ...

  6. [Debug] Debug Node.js Application by using Chrome Dev tools

    For example you have a server.js file, and you want to debug some problems; What you can do is: node ...

  7. CSS种让border-bottom大道text-decoration一样的效果,甚至要比它的效果更理想一些!

    <p style="width:300px;line-height: 30px;margin:0 auto;text-indent: 24pt;word-break:break-all ...

  8. 鼠标增强软件StrokeIt使用方法

    1 可以从以下网址下载该软件,解压之后有两个文件 http://dl.pconline.com.cn/html_2/1/65/id=7185&pn=0.html 2 先安装英文版的,再安装中文 ...

  9. 【Linux】关于Linux的部分细节与配置文件

    文章对Linux的启动过程 进行了讲解,摘录一些要点,(摘自:https://www.ibm.com/developerworks/cn/linux/l-linuxboot/)如下: 当系统首次引导时 ...

  10. 天气预报的Ajax效果

    最近在网站上看了很多显示实时天气预报的,挺实用而且用户体验也不错.对用户的帮助也比较大,用户可以通过你的网站了解到实时的天气信息.感觉比较有意思,于是自己钻研了一下其中的实现方法.于是决定把代码分享给 ...