【发布时间】:2014-07-23 11:40:37
【问题描述】:
我想要 1 个配置文件,其中包含有关特定类中的记录器如何/在哪里/什么记录器应该记录的信息。
例子:
类Foo
package myApp;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
class Foo {
static final Logger logger = Logger.getLogger(Foo.class.getName());
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("C:\\path\\to\\myApp.log.properties");
LogManager.getLogManager(). readConfiguration(fis);
logger.log(Level.INFO, "Msg message");
Bar obj = new Bar();
obj.doSth();
}
类栏
package myApp;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Bar {
static final Logger logger = Logger.getLogger(Bar.class.getName());
public Bar() {
}
public void doSth() {
logger.log(Level.WARNING, "Msg message");
}
}
文件 myApp.log.properties
handlers =
config =
myApp.Foo.handlers = java.util.logging.ConsoleHandler
myApp.Foo.useParentHandlers = false
myApp.Foo.level = INFO
myApp.Bar.handlers = java.util.logging.ConsoleHandler
myApp.Bar.useParentHandlers = false
myApp.Bar.level = INFO
输出:
Jul 23, 2014 1:27:12 PM myApp.Bar doSth
WARNING: Msg message
如您所见,Foo 的日志记录丢失了,我猜这是因为 logger 是静态的,并且是在加载和设置 LogManager 的配置之前创建的。
您能否建议为 Foo 的记录器打印日志记录的解决方案?还带有静态记录器并且没有在程序执行时使用命令行参数-D configFile?
【问题讨论】:
-
@Abbey 这是很好的来源,但我已经阅读了整个教程