【问题标题】:Different logging appender on LOG4JLOG4J 上的不同日志记录附加程序
【发布时间】:2013-10-21 11:15:53
【问题描述】:

我正在使用 log4j 1.2,我需要:

  • 将所有内容(包括来自引用库的日志记录)记录到控制台
  • 从我的代码记录到文件(也可能是控制台)

使用以下代码:

log4j.rootLogger=DEBUG, CONSOLE
log4j.com.mypackage=ALL, CONSOLE, CSV

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.err
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

log4j.appender.CSV=org.apache.log4j.FileAppender
log4j.appender.CSV.File=./myfile.csv
log4j.appender.CSV.Append=false
log4j.appender.CSV.layout=org.apache.log4j.PatternLayout
log4j.appender.CSV.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

未创建日志文件。

我做过的其他尝试:

  • 如果我将 CSV 附加程序添加到 rootLogger,则会创建并填充文件。
  • 如果我将 CSV appender 添加到 rootLogger 并禁用它,那么该文件就是刚刚创建的。
  • 如果我只将我的记录器记录到控制台...它工作正常

你有什么想法要解决吗?

谢谢

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    你错过了一个重要的部分。

    值必须是

    log4j.logger.com.mypackage
    

    请注意,您在日志定义中缺少记录器

    【讨论】:

    • 谢谢...但我的代码也可以在没有“记录器”的情况下工作。问题是它不登录文件,只能在控制台上。
    • 这是可以理解的。记录器使调试变得容易,它在应用程序功能中不起任何作用。如果您希望日志语句在文件中,请按照帖子中的说明更改属性文件。
    • 谢谢,但请再次阅读我的问题、我的需求和我所做的尝试... :)
    • 我知道你做了什么。你试过我的建议了吗?此更改仅适用于客户记录器,不适用于根记录器。
    • 是的...我也尝试了您的建议。顺便说一句,问题是它在控制台上登录,但不在文件上……如果我在根记录器上移动文件附加程序,它就可以工作。我将使用 log4j.xml 方法。
    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多