【问题标题】:Tomcat 6 log4j - linux - safely remove catalina.outTomcat 6 log4j - linux - 安全删除 catalina.out
【发布时间】:2012-03-09 15:41:58
【问题描述】:

在 tomcat 6.0.x 中添加 log4j [1] 会强制 tomcat 在“catalina”文件中生成日志。但是,仍会生成默认的 catalina.out 并填充日志。所以,问题:

删除 catalina.out 文件是否安全(在服务器运行时)? 如果是,是否可以将此删除添加到 tomcat 启动脚本中?如果是,任何人都可以指出文件和所需的脚本吗? tomcat 是否有可能停止创建 catalina.out,因为它不再需要?

  1. http://tomcat.apache.org/tomcat-6.0-doc/logging.html

提前感谢大家!

【问题讨论】:

    标签: linux tomcat log4j


    【解决方案1】:

    Tomcat 将其标准输出和标准错误重定向到 catalina.out。所以直接输出/错误写入和 log4j ConsoleAppender 消息将转到 catalina.out。有关详细信息,请参阅catalina.sh file。要完全禁用它,您可以将 stdout 和 stderr 重定向到 /dev/null 设置 CATALINA_OUT 环境变量:

    export CATALINA_OUT=/dev/null
    

    但我建议禁用 ConsoleAppender 以减少 catalina.out 大小并定期监视它以查找错误消息,这些错误消息可能会绕过 log4j 进入 stdout。

    【讨论】:

    • 您建议禁用 ConsoleAppender,但没有提及如何执行此操作。
    • .handlers = 1catalina.org.apache.juli.AsyncFileHandler
    【解决方案2】:

    您是否有理由要删除 catalina.out 文件?似乎它可能会导致可能丢失重要的事件消息。也许考虑只设置

    org.apache.catalina.level=INFO

    否则,如果您删除它,我想不出它会对容器的功能产生负面影响的原因。在 *nix 安装上,它仍然写入与 inode 断开连接的文件的文件描述符(否则无法访问),而在 Windows 上,它不会让您删除它,因为容器将具有文件锁。

    logging docs - 一个快速的 rtfm,看起来您应该能够从 logging.properties 中删除处理程序以停止生成此文件

    【讨论】:

    • 删除catalina.out的原因是因为使用了log4j,tomcat日志现在生成在另一个文件“catalina”中。所以我们有两次相同的日志。此外,catalina.out 变得非常大。
    • 您应该参考文档,但根据我的经验,有些消息似乎只能进入 catalina。特别是与类路径问题和致命容器错误相关的那些。我建议减少 catalina 日志记录设置的详细程度。
    • 请注意,我不想减少冗长,此外,正如我之前提到的,您所指的那些日志现在也生成在另一个文件中,因此 catalina.out 没用(因为 Im对服务器的标准输出不感兴趣)
    • 阅读我的更新。我认为您可以从 logging.properties 中删除文件处理程序,它会停止将这些日志记录事件附加到文件中。
    • 你的建议是不可能的。从 tomcat 文档中,关于 tomcat 与 log4j 的集成:“删除 $CATALINA_BASE/conf/logging.properties 以防止 java.util.logging 生成零长度日志文件”。
    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2016-05-20
    • 2017-01-16
    • 2012-05-13
    • 2015-03-18
    • 2012-08-02
    相关资源
    最近更新 更多