tomcat - tomcat 中特定于应用程序的访问日志?

标签 tomcat logging context.xml access-log tomcat-valve

我正在尝试在 tomcat 中为我的 .war 应用程序配置独立的访问日志,但我无法找出失败的原因。

目的是对发送到我的应用程序的请求进行单独的访问日志记录,而不必依赖 tomcat 的全局访问日志。

我知道为此我应该创建自己的上下文配置文件,并使用 AccessLogValve 指定我将写入的位置。

我在应用程序的 WAR 文件中创建了 META-INF/context.xml,其内容为:

<Context path="/Stubby">
    <Valve class="org.apache.catalina.valves.AccessLogValve"
                    rotatable="true"
                    directory="/var/SP/log/stubby"
                    prefix="access.log_"
                    suffix=""
                    fileDateFormat="yyyyMMdd_HH"
                    pattern="combined"
                    buffered="false"
                    resolveHosts="false"
                    />
</Context>

启动 tomcat 时,我看到该文件被复制到 conf/Catalina/localhost/Stubby.xml,但在应用程序加载例程期间出现解析错误:

SEVERE: Begin event threw exception
java.lang.NullPointerException
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
(...)
Jul 13, 2011 6:16:12 PM org.apache.catalina.startup.ContextConfig processContextConfig
SEVERE: Parse error in context.xml for /Stubby
java.lang.NullPointerException
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806)
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1359)

这里出了什么问题?我在声明中是否遗漏了任何强制属性?

最佳答案

愚蠢的错误......它读到的地方

<Valve class="org.apache.catalina.valves.AccessLogValve"

应该是

<Valve className=...

此修复后,配置按预期工作,从 META-INF 部署。

关于tomcat - tomcat 中特定于应用程序的访问日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683419/

相关文章:

tomcat - java.lang.ClassNotFoundException : servlet. FileServlet 使用 BalusC FileServlet

tomcat - 无法运行 hello world servlet

c# - ASP.Net Core Serilog 如何在运行时读取日志文件

java - 找不到 “http://java.sun.com/jsp/jSTL/core” 的标记库描述符

tomcat - IntelliJ + Maven + Tomcat 中的 Clojure Webapp

logging - 如何在hadoop中查询日志文件

c++ - 使此代码线程安全的最有效方法是什么?

eclipse - 在 Eclipse 中哪里修改 JNDI 的 xml?

mysql - 错误消息 : Unable to get connection, 数据源无效: "java.sql.SQLException: Cannot create JDBC driver of class ' ' 对于连接 URL 'null' ”

java - 从 jndi 注入(inject)属性