簡體   English   中英

使用 java.util.logging 的 Commons 日志記錄

[英]Commons logging to use java.util.logging

我正在嘗試使用公共日志記錄並希望使用 java.util.logging 作為底層機制。

日志測試程序

import org.apache.commons.logging.*;

public class LogTest { 

        public static void main(String args[]) {
            System.setProperty("java.util.logging.config.file","log.properties");
            Log logger = LogFactory.getLog(LogTest.class);
            logger.trace("trace msg");
        }
}

我有 src/main/resources/log.properties(我正在使用 maven 項目)

handlers=java.util.logging.ConsoleHandler

# Default global logging level.
# Loggers and Handlers may override this level
.level=ALL

我看不到任何輸出。 請告訴我如何以編程方式設置 log.properties 以利用 java 日志記錄。

您需要指定一個實現 Log 接口的記錄器。 在這種情況下, Jdk14Logger

查看如何將“Apache Commons Logging”與“Java SE Logging”結合使用? 更多細節。

除了來自鏈接:

將“ commons-logging.properties ”文件放在應用程序的類路徑中。 這個文件的內容應該是這樣的: org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger設置這個屬性會指示 Commons-Logging 使用 JDK Logger(即 Java SE Logger)作為日志執行。

然后將log-config.properties放在您的類路徑中並進行相應配置。

如果您決定在將來更改 impls, 則可以使用更多開箱即用的記錄器

在您的類路徑中創建commons-logging.properties

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

在 Logger 實例之前設置java.util.logging.config.file

System.setProperty("java.util.logging.config.file","log.properties");

然后 JDK 日志記錄將追加所有由 org.apache.commons.logging.* 使用的日志;

例如:spring、hibernate、struts 等。

# Loggers and Handlers may override this level

嘗試在 log.properties 中添加java.util.logging.ConsoleHandler.level=ALL

雖然 Snekse 的回答基本上是正確的,但有一點需要糾正/澄清:

  1. 正確:commons-logging 從類路徑中搜索其屬性文件。 因此,必須在類路徑中找到 commons-logging.properties
  2. 不正確:JDK 記錄器(JUL 記錄器)通過 FileInputStream(它適用於文件系統對象而不是類路徑)加載其配置。 請參閱 java.util.logging.LogManager.readConfiguration()。 因此,“java.util.logging.config.file”的 System-Property 值必須是絕對路徑或相對於實際執行目錄的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM