簡體   English   中英

log4j2 class 使用除 root 之外的多個記錄器時的名稱

[英]log4j2 class name when using multiple loggers besides root

我正在使用 log4j2。 我已經定義了多個記錄器,因此,我的 log4j2.xml 看起來像:

   <Property name="LOG_PATTERN">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</Property>
   ...
   ...
   <Loggers>
        <Logger name="trace" level="INFO" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="error" level="ERROR" additivity="false">
            <AppenderRef ref="errorLog" />
        </Logger>
        <Logger name="warn" level="WARN" additivity="false">
            <AppenderRef ref="warnLog" />
        </Logger>
   </Loggers>

然后我從代碼中調用它們。 片段:

Class myclass{
...

    Logger LOGGER1 = LogManager.getLogger("trace");
    Logger LOGGER2 = LogManager.getLogger("error");
...
     LOGGER1.trace("whatever message");

我的問題是,據我所知,從代碼調用記錄器時,我可以從 log4j2.xml 中指定記錄器。 例如,如果我想使用“trace logger”,我可以編寫 LogManager.getLogger("trace")

然后,當“打印日志”時,%c{1} 不再是類名,而是記錄器名......在這個例子中,log4j2 將打印為 %c “trace” 而不是 “myclass”(即我想要的是)。

我想知道,有沒有可能:

  • 選項 1. 調用具體記錄器,同時打印“真實”類名(不是在 getLogger 方法中作為參數傳遞的類名),
  • 選項 2. 在 gerLogger 方法中使用類名,並將此記錄器從代碼映射到來自 log4j2.xml 的記錄器

提前感謝您的線索。

在 log4j2.xml 文件中,定義日志模式時,您可以使用兩個不同的東西:“c”(小寫)和“C”(大寫)。

  1. “c”將作為記錄器名稱記錄,並且
  2. “C”將作為 class 記錄在其中創建記錄器(執行 %M 的類)。

包括第二個的可能模式如下所示:

<Property name="LOG_PATTERN">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%C][%M] - %msg%n</Property>

更多信息在這里: http://logging.apache.org/log4j/2.x/manual/usage.html#LoggerVsClass

不管怎樣,之前https://stackoverflow.com/users/1709216/rgoers提出的文章,都是金礦。

您的問題聽起來好像您還沒有閱讀 log4j 文檔或閱讀任何有關如何使用它的文章。 特別是,您應該查看:

<Property name="LOG_PATTERN">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%C][%M] - %msg%n</Property>

c - 用於 output 日志事件的類別。 例如,對於類別名稱“abc”,模式 %c{2} 將為 output “bc”。

C - 用於 output 發出記錄請求的調用者的完全限定 class 名稱。 例如,對於 class 名稱“org.apache.xyz.SomeClass”,模式 %C{1} 將為 output“SomeClass”。

暫無
暫無

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

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