java 使用 JULI 登录 tomcat 7 的特定应用程序?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15750564/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 20:44:08  来源:igfitidea点击:

Application specific log in tomcat 7 using JULI?

javatomcatlogging

提问by user364902

I'm using java system logging in tomcat 7, but no logging statements get written to the log. I've added this file to my WEB-INF/classes. The log file "new-xyz-test" gets created (so I have at least some of the config right) but its empty - no log statements get printed to it.

我正在使用 java 系统登录 tomcat 7,但没有将日志语句写入日志。我已将此文件添加到我的 WEB-INF/classes.xml 文件中。日志文件“new-xyz-test”被创建(所以我至少有一些配置正确)但它是空的 - 没有日志语句被打印到它。

handlers=java.util.logging.ConsoleHandler, org.apache.juli.FileHandler

org.apache.juli.FileHandler.level=ALL
org.apache.juli.FileHandler.directory=${catalina.base}/logs
org.apache.juli.FileHandler.prefix=new-xyz-test-

java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

com.xyz.level=ALL
com.xyz.handlers=org.apache.juli.FileHandler

回答by Paul Vargas

To configure JULI in the web applications you need have a logging.propertiesfile in the WEB-INF/classesdirectory. If you use the default handlers, you may lose messages. You need to specify a prefix for the handler in your file.

要在 Web 应用程序中配置 JULI,您需要logging.propertiesWEB-INF/classes目录中有一个文件。如果您使用默认处理程序,您可能会丢失消息。您需要为文件中的处理程序指定前缀。

handlers=1FILE.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers=java.util.logging.ConsoleHandler

1FILE.org.apache.juli.FileHandler.level=FINEST
1FILE.org.apache.juli.FileHandler.directory=/app-logs
1FILE.org.apache.juli.FileHandler.prefix=file-1

java.util.logging.ConsoleHandler.level=FINE
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

com.xyz.level=INFO
com.xyz.handlers=1FILE.org.apache.juli.FileHandler

com.abc.level=INFO
com.abc.handlers=java.util.logging.ConsoleHandler

A handler prefix (e.g. 1FILE.) starts with a number, then has an arbitrary string, and ends with a period (.).

处理程序前缀(例如1FILE.)以数字开头,然后是任意字符串,并以句点 (.) 结尾。



Arguments in the JVM

JVM 中的参数

If you are not running the Tomcat from the startup.shor startup.bat, you need to specify:

如果您不是从startup.sh或运行 Tomcat,则startup.bat需要指定:

  1. The location of the general logging.propertiesfor Tomcat (in the confdirectory of Tomcat)
  2. The manager org.apache.juli.ClassLoaderLogManager. This is important because allows you to configure for each web application different loggin options. By default, a JVM process can only have a single configuration file.) ,
  1. 一般logging.properties为Tomcat的位置(在confTomcat目录下)
  2. 经理org.apache.juli.ClassLoaderLogManager。这很重要,因为允许您为每个 Web 应用程序配置不同的登录选项。默认情况下,一个 JVM 进程只能有一个配置文件。),

Similar to the next (I'm using eclipse):

类似于下一个(我正在使用 eclipse):

-Djava.util.logging.config.file="C:\Users\Paul\workspaces\utils\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\logging.properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

By default, java.util.loggingread the file that is included in the JDK or JRE, e.g.:

默认情况下,java.util.logging读取 JDK 或 JRE 中包含的文件,例如:

"C:\Software\jdk1.7.0_17\jre\lib\logging.properties"

回答by Doron

are you sure that you write to the correct logger , i.e. Logger.getLogger("com.xyz")?

你确定你写的是正确的记录器,即Logger.getLogger("com.xyz")

I think that you may got wrong when you wrote in logging.properties:com.xyz.level=ALL com.xyz.handlers=org.apache.juli.FileHandlerin the case that you actually write to the logger Logger.getLogger(com.xyz.YourClass.class), that because in the logging properties file you should write the logger name which is in your case com.xyz.YourClass

我认为您在 logging.propertiescom.xyz.level=ALL com.xyz.handlers=org.apache.juli.FileHandler中写入时可能会出错:在您实际写入 logger 的情况下Logger.getLogger(com.xyz.YourClass.class),因为在日志记录属性文件中,您应该写入符合您情况的记录器名称com.xyz.YourClass