有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,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向多个文件记录日志的更多相关文章
- log4j设置,以及中文乱码,通过过滤器输出指定级别的日志,或者指定级别范围的日志
配置文件为默认名字log4j.properties时,放在某个模块下的resources下即可,即使有多个模块的情况下,任意一个模块的resources下有这个默认名字的文件log4j.propert ...
- Log4j 配置某个类中某个方法的输出日志到指定文件
我们在项目中使用log4j开发的时候,会遇到一些特殊的情况,比如:要输出某个类中某个方法的日志信息到文件中,方便以后查看 可以使用如下配置: log4j.rootLogger=info,stdout ...
- springboot输出日志到指定目录,简单粗暴,springboot输出mybatis日志
springboot官方文档地址https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot- ...
- SiftingAppender logback 动态 输出 日志 到指定日志文件
SiftingAppender https://www.mkyong.com/logging/logback-different-log-file-for-each-thread/
- (转)log4j(二)——如何控制日志信息的输出?
一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 1 先看栗子再来下结论 import org.apache.log4j.*; import test.log4j.bean ...
- log4j(二)——如何控制日志信息的输出?
一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 二:先看栗子再来下结论 import org.apache.log4j.*; import test.log4j.bean ...
- log4j不输出日志错误分析
1.rootLogger不输出 代码如下: 配置文件代码: log4j.rootLogger=info, R,userLog log4j.appender.R=org.apache.log4j.Rol ...
- 解决Flink输出日志中时间比当前时间晚8个小时的问题
Flink安装在CentOS7上,默认时间是UTC时间,查看Flink日志,发现输出时间比当前时间晚8个小时. 通过如下命令,调整成北京时间 cp /usr/share/zoneinfo/Asia/S ...
- ASP.NET Core 集成测试中通过 Serilog 向控制台输出日志
日志是程序员的雷达,不仅在生产环境中需要,在集成测试环境中也需要,可以在持续集成失败后帮助定位问题.与生产环境不同,在集成测试环境中使用控制台输出日志更方便,这样可以通过持续集成 runner 执行 ...
随机推荐
- 数学图形之Boy surface
这是一个姓Boy的人发现的,所以取名为Boy surface.该图形与罗马图形有点相似,都是三分的图形.它甚至可以说是由罗马曲面变化而成的. 本文将展示几种Boy曲面的生成算法和切图,使用自己定义语法 ...
- 阿里的STORM——JSTORM
看介绍文档貌似挺好:https://github.com/alibaba/jstorm 阿里拥有自己的实时计算引擎 类似于hadoop 中的MR 开源storm响应太慢 开源社区的速度完全跟不上A ...
- C语言条件编译
使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 下面转自:http://blog ...
- [leetcode]Sort List @ Python
原题地址:http://oj.leetcode.com/problems/sort-list/ 题意:链表的排序.要求:时间复杂度O(nlogn),空间复杂度O(1). 解题思路:由于题目对时间复杂度 ...
- 13个可实现超棒数据可视化效果的Javascript框架
随着商业及其相关需求的发展,数据成为越来越重要的元素之一,为了更加直观和明显的展示商业潜在的趋势和内在的特性,我们需要使用图表和图形的方式来直观动态的展示数据内在秘密,在今天的这篇文章中我们推荐12款 ...
- Android 当修改一些代码时,使用什么编译命令可以最有效率
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- URAL 1748
题目大意:找出T组不大于ni(i=1,2,3,...,T)的因子数最多的数mi(i=1,2,3,...,T),有多个数时输出最小的. KB 64bit IO Format:%I64d & ...
- Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...
- 数据需求统计常用awk命令
原文:http://www.5iops.com/html/2013/script_0418/267.html 1.将时间转换为时间戳 select unix_timestamp('2009-10-26 ...
- IStat Menus 5.02 5.03 的注册码
1574-5977-7956-8062-0000 6015-5448-3282-4975-0000 9665-5955-6856-2071-0000 2447-9517-7939-5221-0000