log4j仅使用一个Logger记录到两个不同的文件

时间:2017-06-22 11:48:19

标签: java logging log4j

虽然所有帖子都在这里阅读,但我的问题重复了其他人的问题,但答案中的答案并非如此:

我有一个很大的项目,几乎每个班级都有一个记录器。我不会继续只使用这一个Logger,我希望它能够创建 - 包含INFO和ERROR的日志文件 - 仅包含ERROR的单独日志文件

这是用于记录的代码:

static Logger log = Logger.getLogger(TestLogger.class);

public static void main(String[] args) {

    log.debug("debug");
    log.info("info");
    log.error("error");

}

这就是我认为我可以配置它,省略布局的东西。

log4j.rootLogger=INFO, stdout, file
log4j.logger.errors = ERROR, stdout, file, file2

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

...

log4j.appender.file=metaobjects.io.CustomFileAppender
log4j.appender.file.File=c:/temp/execution%timestamp/test.log

...

log4j.appender.file2=metaobjects.io.CustomFileAppender
log4j.appender.file2.File=c:/temp/execution%timestamp/error.log

有没有办法得到我想要或做的事情我在每个班级都需要两个Logger对象?

1 个答案:

答案 0 :(得分:0)

您需要创建具有不同阈值的多个appender。

请注意,debug会消耗error,并会消耗info日志记录。

尝试研究本教程 https://veerasundar.com/blog/2009/08/log4j-tutorial-additivity-what-and-why/