`

log4j 关于rootLogger以及一些问题

阅读更多




今天遇到的一些问题。

package com.lj.basic.util;

import org.apache.log4j.Logger;


/**
 * 这里把log4j.properties放到了basic-common中,此时如果调用basic-common的maven项目中没有log4j.properties文件<br/>
 * 那么就会调用这里的log4j.properties来读取信息<br/>
 * 但是如果maven项目中建立了log4j.properties,那么程序就不会再读取这里的property文件了。
 * @author Administrator
 *
 */
public final class MyLog4jLogger
{
	private static Logger logger=Logger.getLogger(MyLog4jLogger.class);
	
	private MyLog4jLogger(){}
	
	public  static void debug(Object obj){
		logger.debug( obj);
		 
		
	}
	
	
	public static void info(Object obj){
		logger.info(obj);
	}
	
	public static void warn(Object obj){
		logger.warn(obj);
	}
}


1. 这个类是想拿来随处使用的, 不必在每个类中都new一个Logger对象。
但是似乎问题很多。 比如这样一来就没法显示调用logger方法的类了。(会一律被显示为这个MyLog4jLogger。)

2. 自定义包的问题。
如上图所示,

#log4j.logger.com.lj.cms.web=debug,cms
#log4j.logger.com.lj.core.dao=debug,cms
log4j.logger.com.lj=debug,cms


只有第三行是有效的,原因其实很简单。
因为Mylog4jLogger.java的位置在com.lj.basic.util里面。
log4j并不会管我在哪里调用的MyLog4jLogger的方法, 它只管这个类的位置在哪里。

因此上面改为:
log.4j.logger.com.lj.basic.util, 就可以了。


3. rootLogger的问题

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout


这个rootLogger似乎要屏蔽掉才行。
不然会导致我上面所有的debug信息输出两遍。

这里让我很不解。
难道我自定义了包路径以及级别, 不应该覆盖掉rootLogger的输出才对么?
  • 大小: 398.3 KB
分享到:
评论

相关推荐

    log4j jar包

    log4j.rootLogger=INFO, FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=/var/log/app.log log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE....

    log4j.properties

    设置log4j的根目录,值为 日志等级(DEBUG,INFO,WARN,ERROR,FATAL) , 输出目标名称 log4j.rootLogger=DEBUG,A1 设置输出方式,常用的有: ConsoleAppender 在控制器中输出信息 RollingFileApperder 在文件中输出...

    log4j配置文件

    log4j.rootLogger=info, stdout, log, errorlog log4j.Logger=search,Test ###Console ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j....

    log4j日志报错解决办法

    log4j.rootLogger=WARN, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%...

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    log4j.rootLogger=DEBUG, Console, File # 控制台Appender log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out log4j.appender.Console.layout=org.apache.log4j....

    SSM整合中的Log4j日志的配置详情

    log4j.rootLogger=DEBUG,console,file log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.Threshold=DEBUG log4j.appender.console....

    log4j-控制指定类,包的日志级别:log4j-demo.zip

    在这个配置中,`log4j.rootLogger`定义了全局的日志级别,这里是DEBUG。`log4j.logger.com.example.MyClass`则指定了`com.example.MyClass`这个类的日志级别为WARN,这意味着只有WARN、ERROR和FATAL级别的日志会被...

    Spring项目中怎么配置log4j

    log4j.rootLogger=DEBUG, stdout, R ``` 2. **定义输出目的地**:上述配置中,`stdout`表示控制台输出,`R`则代表一个名为`R`的appender。接下来,我们需要定义`R`的细节: ``` log4j.appender.R=org.apache....

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j....

    SpringBoot框架配置log4j和log4j2的配置代码

    log4j.rootLogger=DEBUG, stdout, file log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j....

    tomcat下的log4j日志配置

    log4j.rootLogger=INFO, A1 log4j.appender.A1=org.apache.log4j.FileAppender log4j.appender.A1.File=/path/to/log/file.log log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1....

    log4j.jar.rar

    这个压缩包“log4j.jar.rar”包含的是Log4j的核心库文件“log4j.jar”,这是一个Java Archive (JAR) 文件,用于封装和分发Java类、资源以及元数据。Log4j的目的是提供一种灵活且高性能的方式来处理应用程序中的日志...

    log4j日志配置以及配置文件详解

    log4j.rootLogger=DEBUG, console, file ``` 这行配置表示设置根logger的级别为DEBUG,并将日志输出到控制台(console)和文件(file)。 2. **Appender**: 定义日志输出的目标,如控制台、文件、数据库等。例如,...

    log4j示例项目

    log4j.rootLogger=DEBUG, stdout, FILE log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j....

    log4j.properties(完整版) log4j.properties(精简版)

    - **全局日志级别设置**:`log4j.rootLogger=DEBUG, stdout, FILE`,其中`DEBUG`是日志级别,`stdout`和`FILE`是Appender的名称。 - **定义Appender**:例如`log4j.appender.stdout=org.apache.log4j....

    log4j需要的jar以及properties文件

    1. **日志级别配置**:例如`log4j.rootLogger=DEBUG, Console, File`,这定义了日志的默认级别为DEBUG,并将日志输出到控制台(Console)和文件(File)。 2. **Appender配置**:Appender是日志输出的目的地。例如...

    log4j乱码问题解决办法

    ### log4j乱码问题解决办法 #### 一、引言 在开发过程中,日志记录是必不可少的一个环节。良好的日志系统可以帮助开发者快速定位问题并进行调试。Log4j作为一款广泛使用的Java日志框架,在很多项目中扮演着重要...

    log4j配置文件说明(完整版)

    其语法为:log4j.rootLogger = [level], appenderName, appenderName, …其中,level 是日志记录的优先级,appenderName 是指定日志信息输出到哪个地方。 例如:log4j.rootLogger = DEBUG, stdout, R 四、配置 ...

    log4j.properties配置文件

    - `log4j.rootLogger`: 定义了根日志记录器(root logger)的默认级别和使用的Appender。 - `debug`: 设置根日志记录器的默认级别为DEBUG。 - `,stdout`: 表示日志消息将被输出到名为“stdout”的Appender。 #### 五...

    log4j-1.2.17.jar下载

    log4j.rootLogger=INFO, Console, File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j...

Global site tag (gtag.js) - Google Analytics