当前位置: 首页 > 面试题库 >

如何使用属性文件设置Java日志记录?(java.util.logging)

司空祯
2023-03-14
问题内容

我有一个愚蠢的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"));

有一个额外的末尾。它不会编译。确保您正在使用自己认为的类文件。



 类似资料:
  • 问题内容: 我想通过请求中的项目填充日志记录上下文,例如:。我以为我可以在中间件的处理程序中覆盖Log类型。虽然它似乎不起作用,但我不确定为什么! 您能看到为什么在同一请求中对IIUC应该没有影响吗? 问题答案: 您需要对记录程序进行请求范围的检查。每当有新的连接进入时,就为整个处理程序全局设置它,这意味着您要进行数据争用以及通常不受欢迎的行为。 对于请求范围的上下文,请求中的嵌入是完美的。您可以

  • 为了使问题更加具体--我尝试的配置: 我想记录到这个单独性能日志的类位于com.myapp.common.logging下面...

  • 我使用Spring Boot和log4j2进行日志记录,因为我希望日志写在文件上而不是控制台上。所以我实现了log4j2.properties并将其保存在Spring Boot项目的资源文件夹下。

  • 我刚刚在EC2 Ubuntu 14.04 LTS上安装了我的第一个uWSGI服务器,使用以下配置:

  • 问题内容: 我还找不到关于如何使用Log4j的XML样式配置文件配置Hibernate日志记录的任何文档。 这是否有可能,或者我是否使用属性样式配置文件来控制Hibernate的日志记录? 如果有人有任何信息或文档链接,我们将不胜感激。 编辑: 只是为了澄清,我正在寻找控制Hibernate的实际XML语法的示例。 EDIT2: 这是我的XML配置文件中的内容。 日志记录工作正常,但是我正在寻找一

  • 问题内容: 知道Python日志语句存储在哪里的方法是什么? 即如果我这样做: 在哪里可以找到日志文件?另外,当我打电话时: 这与记录器的行为/保存方式有某种关系吗? 问题答案: 该模块使用附加到记录器的处理程序来决定最终存储或显示消息的方式,位置或方式。您可以默认配置为也写入文件。您应该真正阅读过文档,但是如果您将要写入消息的文件的名称调用到哪里(请注意,您必须在调用其他任何文件之前先执行此操作