【问题标题】:Application-specific accesslog in tomcat?Tomcat中特定于应用程序的访问日志?
【发布时间】:2011-10-04 17:37:25
【问题描述】:

我正在尝试在 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)

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

【问题讨论】:

  • 这是哪个版本的Tomcat?
  • 版本 6.0.32。在 jdk1.6.0_26 上运行

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


【解决方案1】:

我怀疑您正在处理的是类加载器问题:复制上下文 xml 的类加载器可能无法使用阀门类。我不认为会是这种情况,但是如果您从 META-INF 中删除 context.xml 文件并将其复制到 conf/Catalina/localhost/Stubby.xml 中,阀门是否可以正常工作?

【讨论】:

  • 从 META-INF 中删除 xml 文件并将其保留在 conf/Catalina/localhost 上不再产生异常,但应用程序仍然没有写入任何日志...
【解决方案2】:

愚蠢的错误......它在哪里阅读

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

应该是

<Valve className=...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 2019-06-05
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多