log4j appender问题 - 无法打印调试,错误级别

时间:2015-01-19 10:14:59

标签: java log4j

我正在使用log4j进行日志记录。

这就是我的log4j.properties的样子

# Root logger option
log4j.rootLogger=info, debug, error file


# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender


#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log

log4j.appender.file.File=C:\\Users\\raj_sanpui\\Desktop\\Automation\\test.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我的每个Java文件构造函数都有这个调用:

public class IMGOperations {

    private org.apache.log4j.Logger log;
    private String hostname;
    private String sysid;
    private String dicomfilepath;

    public IMGOperations(String hostname, String sysid, String dicomfilepath)
    {
        this.hostname=hostname;
        this.sysid=sysid;
        this.dicomfilepath=dicomfilepath;

        PropertyConfigurator.configure(mainConfig.LOG4JCONFPATH);
        log = Logger.getLogger(mainConfig.class);
    }

我在运行Java程序时收到此错误:

log4j:ERROR Could not find value for key log4j.appender.debug
log4j:ERROR Could not instantiate appender named "debug".
log4j:ERROR Could not find value for key log4j.appender.error file
log4j:ERROR Could not instantiate appender named "error file".
log4j:ERROR Could not find value for key log4j.appender.debug

我基本上是一个C / C ++人,谁知道Core Java,而且几乎就是这个东西的菜鸟。所以请原谅我,如果你发现它太基本了。

2 个答案:

答案 0 :(得分:8)

问题在于你的第二行,它应该是:

# Root logger option
log4j.rootLogger=INFO, stdout, file

这意味着您将登录INFO级别,并为stdout和文件实例化log4j appender。不用说,INFO可以切换到任何其他日志记录级别(TRACE,DEBUG,INFO,WARN,ERROR,FATAL)。

修改

log4j.rootLogger有两个或更多参数。第一个参数是日志记录级别,以下是log4j appender的名称。您看到了在问题中出现的错误,因为" debug"的名称没有appender。或"错误文件",如以下行所述:

log4j:ERROR Could not find value for key log4j.appender.debug
log4j:ERROR Could not find value for key log4j.appender.error file

编辑2:

鉴于以下配置文件:

# Root logger option
log4j.rootLogger=info, debug, error file


# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender


#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log

log4j.appender.file.File=C:\\Users\\raj_sanpui\\Desktop\\Automation\\test.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Log4j希望为" debug"定义appender。和"错误文件"但是,您只为"文件"定义了一个追加器。你已经定义了你的appender:

log4j.rootLogger=info, file
 log4j.appender.file=org.apache.log4j.RollingFileAppender

要使用名为" debug"的追加器,您需要另一个类似的行:

log4j.rootLogger=info, debug
log4j.appender.debug=org.apache.log4j.RollingFileAppender

在log4j.rootLogger属性中声明的appender和appender定义之间应该存在一对一的映射。

如果你想到这样的每个属性,它可能会有所帮助:

log4j.appender.file => create new file appender object
log4j.appender.file.File => set the file property of the file appender
log4j.appender.file.MaxFileSize => set the max file size of the file appender
log4j.appender.file.MaxBackupIndex => set the max backup index property of the file appender
log4j.appender.file.layout => set the layout of the file appender
etc...

答案 1 :(得分:1)

您在rootLogger中遇到问题,您应该只有一个日志记录级别,例如DEBUG, INFO, ERROR etc..,如果您有多个日志记录级别,第二件事您没有声明filerootLogger中的appender,但您在其余的片段中使用了它。

# Root logger option log4j.rootLogger=info, debug, error file

上面的代码段应该像log4j.rootLogger= INFO, file

一样

看看这个link