log4j和java util日志记录可以共存

时间:2018-03-21 00:55:32

标签: java.util.logging log4

我的应用程序使用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 params -Djava.util.logging.config.file="file://${BASE_DIR}/logging.properties"

但是我没有看到Filehandler指示的任何新文件夹被创建。谁知道为什么?

1 个答案:

答案 0 :(得分:1)

  

但是我没有看到Filehandler指示的任何新文件夹被创建。谁知道为什么?

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