【问题标题】:Can log4j and java util logging coexistlog4j和java util logging可以共存吗
【发布时间】:2018-03-21 00:55:32
【问题描述】:

我的应用程序使用 log4j 但 OkHttpClient 使用 java util 日志记录。所以除了 log4j.properties,我还创建了一个 logging.properties 文件,内容如下:

handlers=java.util.logging.FileHandler

.level=FINE

okhttp3.internal.http2.level=FINE

java.util.logging.FileHandler.pattern = logs/%hjava%u.log

java.util.logging.FileHandler.limit = 50000

java.util.logging.FileHandler.count = 1

java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

java.util.logging.ConsoleHandler.level = FINE

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

然后我将此添加到用于启动应用程序的 jvm 参数-Djava.util.logging.config.file="file://${BASE_DIR}/logging.properties"

但是我没有看到文件处理程序指示的任何新文件夹正在创建。有人知道为什么吗?

【问题讨论】:

    标签: java.util.logging log4j


    【解决方案1】:

    但是我没有看到文件处理程序指示的任何新文件夹正在创建。有人知道为什么吗?

    FileHandler 不会创建任何new folders。在 FileHandler 创建文件之前必须创建一个目录。

    系统属性需要位于文件系统上的文件路径。它不会使用美元符号语法扩展系统属性或环境变量。

    您可以使用基于工作目录的相对路径,或者您必须使用 logging.properties 的绝对路径。日志记录属性不能打包在存档中。

    如果您想解决此限制,那么您需要创建a custom config class 并将java.util.logging.config.class 属性与java.util.logging.config.file 属性结合使用。然后编写一个读取file://${BASE_DIR}/logging.properties 的类,并执行所需的转换为文件路径。然后 update the configuration 如果您使用的是 JDK9 或更高版本。在旧版本上,您需要使用 readConfiguration 并添加代码才能工作 work around limitations of the LogManager

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2019-10-17
      相关资源
      最近更新 更多