有效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 执行 ...
随机推荐
- poj 1469 COURSES 题解
COURSES Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21515 Accepted: 8455 Descript ...
- multiple definition of 问题解决方法
在最近的项目里,由于我想重载结构体的==操作符,然而大意的我把重载的过程写在了头文件里,所以导致了multiple definition of的错误.现在总结下解决方法: 首先,最关键的,不要把全局变 ...
- Android 时间日期Widget 开发详解
桌面Widget其实就是一个显示一些信息的工具(现在也有人开发了一些有实际操作功能的widget.例如相机widget,可以直接桌面拍照).不过总的来说,widget主要功能就是显示一些信息.我们今天 ...
- python 抓取alexa数据
要抓取http://www.alexa.cn/rank/baidu.com网站的排名信息:例如抓取以下信息: 需要微信扫描登录 因为这个网站抓取数据是收费,所以就利用网站提供API服务获取json信息 ...
- Pylons架构网站开发从0到1
首先说明下这里的从0到1指的是从没有听说过pylons到开发出一个看上去还不错的网站.一个月前,我没有听说过也不知道什么是pylons,HTML只知道一些标签,JavaScript也不怎么懂,由于只倾 ...
- Linux上磁盘挂载
Linux磁盘挂载 一. 磁盘分区 在终端输入fdisk –l 命令查看整个系统的分区情况. 能够看到另一个32G的/dev/vdb磁盘没有挂载使用 watermark/2/text/aHR0c ...
- easyui加入自己定义图标
近期用easyui发现图标挺少的,事实上能够另外加入一个css样式,只是我偷懒,直接在easyui的css里面加入了. 以下是文件夹: icon.css是easyui的默认样式文件.ext_icons ...
- “/”应用程序中的server错误
前几天敲ASP.NET有关验证控件的样例的时候,出现了这个问题: 可是对于这个问题我们应该都不陌生,之前敲牛腩的时候也出现过,当时的解决方法是: 在web.config中找 <a ...
- Opera Unite如何架设自己的网站
1使用Opera的File Sharing可以共享你的文件 2使用Opera的Stream media可以共享你的视频,有些格式甚至可以直接在浏览器端打开(比如MOV,但是需要安装Quicktime的 ...
- berkelydb学习
http://www.oracle.com/technetwork/cn/java/seltzer-berkeleydb-sql-085418-zhs.html 官网中文学习网址