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