我们有一个给定的系统上的web应用,我们正在尝试外部化到tomcat的水平,而不是试图在单个Web应用程序的级别来处理之间的一些常见的日志记录配置。 正在使用的web应用java.util.logging
被证明是颇具挑战性,因为我们有一个自定义的处理程序,似乎没有成为一个明显的方式来获取自定义的处理与Tomcat的类加载器发挥很好。 这是所有在此刻的原型阶段。
初步:Tomcat的7.0.32,爪哇6.默认的Tomcat 7安装与部署一个REST服务,并没有在配置搞笑。
首先, 大致按照这个答案的建议 ,我创建的自定义处理程序,并放在罐子$CATALINA_HOME/lib
,并证实说,目录是在正确的目录,而且common.loader
列入此目录:
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
然后我修改了logging.properties
文件,并添加了处理程序:
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler, my.custom.Handler
当我运行./startup.sh
,不过,我得到以下几点:
[Loaded java.io.PrintWriter from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.util.logging.StreamHandler from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
[Loaded java.util.logging.ConsoleHandler from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar]
Handler error
java.lang.ClassNotFoundException: my.custom.Handler
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:521)
at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:464)
at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:288)
at java.util.logging.LogManager$2.run(LogManager.java:267) [...]
(这与JAVA_OPTS=-verbose:class
)。
我看到以后加载相关的类,但这并不似乎是一致的,很可能是上述REST服务(这是用它直接)的神器。
我可以,如果我的jar添加到一切正常工作CLASSPATH
直接,但这似乎相对于修改装载机被普遍劝阻。
有没有办法,我在如何干净地添加自定义思念的东西特别java.util.logging.Handler
(以及后来的格式化)的类加载器之前logging.properties
读?
或者,如果我平找错了树,我会采取与多个web应用之间共享的日志记录配置的问题的一个更好的办法java.util.logging
。