我将logging.properties放在tomcat
的WEB-INF / classes目录中我想登录两个不同的文件。例如:org.pkg1转到一个文件,org.pkg2转到一个单独的文件。
我可以配置一个文件,但不能配置两个。这可能吗?
答案 0 :(得分:11)
我终于弄明白了。在tomcat中,它们扩展了java util logging(“JULI”)以启用此功能。这是我放在WEB-INF目录中的一个logging.properties文件,它终于完成了我以后......:
handlers=1console.java.util.logging.ConsoleHandler, 2jsp.org.apache.juli.FileHandler, 3financials.org.apache.juli.FileHandler
.handlers=1a.java.util.logging.ConsoleHandler
jsp.level=ALL
jsp.handlers=2jsp.org.apache.juli.FileHandler
org.apache.jasper.level = FINE
org.apache.jasper.handlers=2jsp.org.apache.juli.FileHandler
org.apache.jsp.level = FINE
org.apache.jsp.handlers=2jsp.org.apache.juli.FileHandler
com.paypal.level=ALL
com.paypal.handlers=3financials.org.apache.juli.FileHandler
3financials.org.apache.juli.FileHandler.level=ALL
3financials.org.apache.juli.FileHandler.directory=${catalina.base}/logs
3financials.org.apache.juli.FileHandler.prefix=financials.
2jsp.org.apache.juli.FileHandler.level=ALL
2jsp.org.apache.juli.FileHandler.directory=${catalina.base}/logs
2jsp.org.apache.juli.FileHandler.prefix=jsp.
1console.java.util.logging.ConsoleHandler.level=FINE
1console.java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
答案 1 :(得分:6)
说到logging.properties配置,我没有找到任何机制来使用更多的appender。我做了一个适合我的简单解决方法。
public class CustomAFileHandler extends FileHandler {
public DebugFileHandler() throws IOException, SecurityException {
super();
}
}
public class CustomBFileHandler extends FileHandler {
public DebugFileHandler() throws IOException, SecurityException {
super();
}
}
我的logging.properties
...
handlers=<pkg_name>.CustomAFileHandler, <pkg_name>.CustomBFileHandler, java.util.logging.ConsoleHandler
<pkg_name>.CustomAFileHandler.level=ALL
<pkg_name>.CustomAFileHandler.pattern=%h/A%u.log
<pkg_name>.CustomAFileHandler.limit=50000
<pkg_name>.CustomAFileHandler.count=1
<pkg_name>.CustomAFileHandler.formatter=java.util.logging.SimpleFormatter
<pkg_name>.CustomBFileHandler.level=ALL
<pkg_name>.CustomBFileHandler.pattern=%h/B%u.log
<pkg_name>.CustomBFileHandler.limit=50000
<pkg_name>.CustomBFileHandler.count=1
<pkg_name>.CustomBFileHandler.formatter=java.util.logging.SimpleFormatter
...
答案 2 :(得分:1)
使用具有不同参数的java.util.logging类,没有简单的方法可以获得两个相同类型的处理程序。可能最简单的方法是在logging.properties中创建一个FileHandler子类,它传递相应的参数以启用日志记录,例如:
org.pkg1.handlers=java.util.logging.FileHandler
org.pkg2.handlers=org.pkg2.FileHandler
java.util.logging.FileHandler.pattern="org_pkg1_%u.%g.log"
org.pkg2.FileHandler.pattern="org_pkg2_%u.%g.log"
组织/ pkg2的/ FileHandler.java:
package org.pkg2;
import java.util.logging.*;
public class FileHandler extends java.util.logging.FileHandler {
public FileHandler() {
super(LogManager.getLogManager().getProperty("org.pkg2.FileHandler.pattern"));
}
}
答案 3 :(得分:0)
也可以使用纯jdk(尝试使用jdk 7或jdk 8)。
只需创建自定义文件处理程序;使用类似于&#34; java.util.logging.FileHandler&#34;。
public class JULTestingFileHandler extends FileHandler {
public JULTestingFileHandler() throws IOException, SecurityException
{
super();
}
}
用户属性文件;
com.xxx.handlers = com.xxx.JULXXXFileHandler
com.xxx.JULXXXFileHandler.pattern = ./logs/test1_test2.%u.%g.log
答案 4 :(得分:0)
我自己与java.util.logging
有同样的问题并且对给定的答案不太满意,我刚刚在the documentation找到了:
2.2更改配置
这是一个动态调整日志记录的小程序 配置将输出发送到特定文件并获得大量 关于袋熊的信息。模式&#34;%t&#34;系统是暂时的 。目录
public static void main(String[] args) {
Handler fh = new FileHandler("%t/wombat.log");
Logger.getLogger("").addHandler(fh);
Logger.getLogger("com.wombat").setLevel(Level.FINEST);
...
}
因此,您似乎无法仅从.properties文件中执行此操作,因为无法实例化多个appender,但您可以通过编程方式执行此操作。也应该可以使用LoggerManager