java中Log4j消息只写入指定的Appender

有如下的log4j.properties配置

log4j.rootLogger=ERROR,STDOUT

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender

log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout

log4j.appender.STDOUT.layout.ConversionPattern=%d %-5p [%t] (%F:%L) - %m%n

log4j.appender.fileAppender1=org.apache.log4j.FileAppender

log4j.appender.fileAppender2=org.apache.log4j.FileAppender

#省略了fileAppender1和fileAppender2的layout和layout.ConversionPattern定义,和STDOUT一样的,如果你要测试,那么将STDOUT拷一份就好了

log4j.logger.org.springframework=info,fileAppender1

log4j.logger.org.springframework.web=info,fileAppender2

那么对于org.springframework.web包下的日志,会输出到STDOUT,fileAppender1,fileAppender2这三个appender中,如果只想输出到fileAppender2中,只需添加 log4j.additivity.org.springframework.web=false 就好了

参考源码

public void org.apache.log4j.Category.callAppenders(LoggingEvent event) {

int writes = 0;

for(Category c = this; c != null; c=c.parent) {

// Protected against simultaneous call to addAppender, removeAppender,...

synchronized(c) {

if(c.aai != null) {

writes += c.aai.appendLoopOnAppenders(event);

}

if(!c.additive) {

break;

}

}

}

if(writes == 0) {

repository.emitNoAppenderWarning(this);

}

}

时间: 2024-09-20 21:44:54

java中Log4j消息只写入指定的Appender的相关文章

java 文件输入输...-关于JAVA中文件的map写入操作

问题描述 关于JAVA中文件的map写入操作 想实现一个功能,首先有个map,不过只有一条数据.判断在指定路径是否有文件存在,如果没有则先创建再将map写入,如果指定路径有文件存在则直接写入或者,追加记录.谢谢了 解决方案 File.isFile方法可以判断文件是否存在: 写入的追加可以在申明输出流的时候加标志: 例如new FileOutputStream(File or filename, append) append为true表示追加写入: 如果要直接写入map,可以用序列化. 解决方案二

java中jar命令如何将指定的class文件更新到_指定的目录_

问题描述 java中jar命令如何将指定的class文件更新到_指定的目录_一定是指定的目录在网上查了一下,貌似是jarufeee.jarhhh.class这个只能将hhh.class这个文件更新到eee.jar的根目录,我想要的是如何将eee.jar更新到指定的目录. 解决方案 解决方案二:C:Userszz192672>jar用法:jar{ctxui}[vfm0Me][jar-file][manifest-file][entry-point][-Cdir]files...选项包括:-c创建新

Java中log4j控制写入日志开关

我们平时的日志一般使用最多的就是java.util.logger和log4j了. 这里因为要在外部灵活配置,所以我们采用log4j来控制. 首先我们需要log4j.jar和log4j.properties 现在我们在程序中写日志输出 引入import org.apache.log4j.Logger; Logger logger = Logger.getLogger("这里的名字随便取,一般是本类类名,这里是CheckUserServlet"); //Log4j中将要输出的Log信息定义

Java 中Log4j的使用详情

Log4j 真的很简单,简单到令人发指的地步.不是要记录日志吗?那就给你一个Log ,然后你用Log 来写东西就行了,先来一个完整类示例: package test; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class Test { static Log log = LogFactory.getLog (Test. class ); public voi

Java中JDBC事务与JTA分布式事务总结与区别_java

Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现.所以本文暂不讨论容器事务.本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务. JDBC事务 JDBC的一切行为包括事务是基于一个Connection的,在JDBC中是通过Connection对象进行事务管理.在JDBC中,

Java中Collection遍历中删除、合并元素

我的分词结果链表需要合并连续的数字和日期,所以需要熟悉一下Java Collection在遍历的过程中同时删除.合并元素的小trick.自己试验了一下,活用listIterator的previous()和next()方法就可以达到目的. 遍历中删除 数据集 List<Integer> integerList = new LinkedList<Integer>(); for (int i = 1; i <= 10; ++i) {     integerList.add(i);

深度解析VC中的消息(中)

队列消息和非队列消息 从消息的发送途径来看,消息可以分成2种:队列消息和非队列消息.消息队列由可以分成系统消息队列和线程消息队列.系统消息队列由Windows维护,线程消息队列则由每个GUI线程自己进行维护,为避免给non-GUI现成创建消息队列,所有线程产生时并没有消息队列,仅当线程第一次调用GDI函数数系统给线程创建一个消息队列.队列消息送到系统消息队列,然后到线程消息队列:非队列消息直接送给目的窗口过程. 对于队列消息,最常见的是鼠标和键盘触发的消息,例如WM_MOUSERMOVE,WM_

Java中的字符集编码入门(五) Java代码中的字符编码转换

如果你是JVM的设计者,让你来决定JVM中所有字符的表示形式,你会不会允许使用各种编码方式的字符并存? 我想你的答案是不会,如果在内存中的Java字符可以以GB2312,UTF-16,BIG5等各种编码形式存在,那么对开发者来说,连进行最基本的字符串打印.连接等操作都会寸步难行.例如一个GB2312的字符串后面连接一个UTF-8的字符串,那么连接后的最终结果应该是什么编码的呢?你选哪一个都没有道理. 因此牢记下面这句话,这也是Java开发者的共同意志:在Java中,字符只以一种编码形式存在,那就

路由器设置只让指定的人可以上网

在组建一个安全性不是很高的网络环境中,想只让指定的人可以上网应该怎么设置呢?相信这是不少人想要知道的问题,如何通过PPPOE来进行收费上网的设置,希望可以帮到大家. 一.PPPoE技术通过在局端设备与PC的两头分别增加PPPoE服务器和PPPoE客户端,使得在PPPoE服务器这里能对每个PC用户的流量进行识别,当在PPPoE服务器的后面再增添RADIUS服务器后,就可以实现对每个用户的认证.这样我们就可以在局端实现对用户端局域网每个宽带用户的认证计费统计功能. 二.通过把最经济的局域网技术-以太