【问题标题】:Apache tomcat 8.5 access log with log4j2Apache tomcat 8.5 使用 log4j2 访问日志
【发布时间】:2018-04-13 05:53:34
【问题描述】:

我尝试使用log4j2 更改Apache Tomcat 8.5 日志。我可以成功地实现它。

但是,我无法使用log4j2 记录一种日志类型,即localhost_access_log

此日志是在server.xml 文件中设置的

<Valve className="org.apache.catalina.valves.AccessLogValve" 
       directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />

我怎样才能改变它,让它也被log4j2记录?

【问题讨论】:

    标签: java tomcat logging log4j2


    【解决方案1】:

    Tomcat 8.5 Documentation:中所述

    访问记录是一个相关但不同的功能,它是 实现为阀门。它使用自包含的逻辑来写它的日志 文件。访问日志的基本要求是处理一个 具有低开销的大连续数据流,因此它只使用 Apache Commons Logging 用于自己的调试消息。这个实现 方法避免了额外的开销和潜在的复杂性 配置。请参阅阀门文档了解更多信息 有关其配置的详细信息,包括各种报告格式。

    同时检查Access Log Valve的文档

    因此说 - 由于有时对将所有请求记录到 tomcat 实例而不减慢它(很多)施加的极端性能要求,这些并不意味着由默认的日志记录实现来控制。

    如果您绝对需要也能够使用 log4j2 进行配置并且知道自己在做什么,那么您始终可以通过实现 org.apache.catalina.AccessLog 并在你的Tomcat配置。

    【讨论】:

    • 这里给出了一些实现stackoverflow.com/a/40174290/7748072
    • 嗨 Jan,实际上我已经用另一种方式解决了这个问题。我使用 log4j2 的原因是在文件名中滚动没有日期模式的文件名。阅读文档后,我发现 renameOnRotate="true" 可以在阀门标签中设置。所以我的问题已经解决了=D
    猜你喜欢
    • 2020-05-22
    • 2018-01-14
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多