我有一个愚蠢的Java日志记录问题:我正在从我的应用程序配置文件中加载日志记录配置- 但在读取文件后,它只是不记录任何内容(这看起来很像您在网上可以找到的示例,除了其他应用程序配置- 删除此设置也无济于事。“正在初始化…”日志行似乎很好,但是“启动应用程序”和任何其他消息既未记录到控制台,也从未创建过日志文件。我在这里想念什么?
记录器代码如下所示:
... Logger log = Logger.getLogger("myApp"); log.setLevel(Level.ALL); log.info("initializing - trying to load configuration file ..."); Properties preferences = new Properties(); try { FileInputStream configFile = new FileInputStream("/path/to/app.properties"); preferences.load(configFile); LogManager.getLogManager().readConfiguration(configFile); } catch (IOException ex) { System.out.println("WARNING: Could not open configuration file"); System.out.println("WARNING: Logging not configured (console output only)"); } log.info("starting myApp"); ...
这是配置文件:
appconfig1 = foo appconfig2 = bar # Logging handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler .level = ALL # File Logging java.util.logging.FileHandler.pattern = %h/myApp.log java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter java.util.logging.FileHandler.level = INFO # Console Logging java.util.logging.ConsoleHandler.level = ALL
好吧,第一个直觉在这里:
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler .level = ALL
Java prop文件解析器并不是那么聪明,我不确定它会处理这个问题。但我会再去看一下文档…。
同时,请尝试:
handlers = java.util.logging.FileHandler java.util.logging.ConsoleHandler.level = ALL
更新资料
不,嗯,需要更多的咖啡。没关系。
虽然我想得更多,但是请注意,您可以使用Properties中的方法来加载和打印属性文件:可能值得编写一个最小的程序来查看java认为该文件读取了什么内容。
另一个更新
这行:
FileInputStream configFile = new FileInputStream("/path/to/app.properties"));
有一个额外的末尾。它不会编译。确保您正在使用自己认为的类文件。