tomcat - log4j2 能否每天生成 std​​out/stderr 日志文件?

标签 tomcat logging log4j log4j2

如标题所述,我想通过使用 log4j2 日志配置每天生成我的 stdout.logstderr.log 文件。有没有办法在不重新启动 Tomcat 服务器的情况下生成它?或者它仍然像 log4j 版本 1 一样不能完成我上面提到的任务?

我的示例 log4j.properties:

og4j.rootLogger = INFO,MANAGER,CONSOLE
log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}/logs/manager.
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd-HH-mm'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %n %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.File = $(catalina.base)/logs/stdout.log
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =%n %d [%t] %-5p %c- %m%n

最佳答案

您引用了 stdout.log 和 stderr.log。 Stdout 和 Stderr 通常由 ConsoleAppender 处理,根本不会路由到文件。如果你想在文件中输出,你可以使用某种文件附加程序。日志事件从来没有被应用程序专门定向到 stdout 或 stderr,只有配置,所以我对你的问题有些困惑。

Log4j 1 有一个 RollingFileAppender,可以让你每天滚动文件,所以我不太确定你为什么说它不能执行任务。 Log4j 2 也有一个 RollingFileAppender,虽然有点不同,它也可以每天滚动文件。

您真的想知道如何让 Tomcat 将其日志事件定向到 Log4j 2 吗?

关于tomcat - log4j2 能否每天生成 std​​out/stderr 日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36995708/

相关文章:

Apache Tomcat 9 无法访问管理器 webapp

java - Tomcat ServletContext实现的getAttribute()方法可以不同步调用吗?

java - 对 JBoss web.xml 的更改无效

node.js - 如何为 Azure 上的 Node.js Api 应用程序启用 BLOB 日志记录?

elasticsearch - 如何排除journalbeat中的日志/事件

java - 记录错误时 Log4j 无法发送电子邮件

java - 是否有可能让 `mvn tomcat6:run` 与过滤后的 web.xml 一起正常工作?

Python 日志记录 - 仅适用于自己导入的模块

java - log4j - 动态压缩日志文件到 gz

java - 无法将自定义转换器添加到 log4j