簡體   English   中英

如何在 logging.properties 中為每個日志添加唯一標簽

[英]How to add a unique tag to each log in logging.properties

我的標准配置Tomcat 8.5把日志拆分成

  • 卡特琳娜,
  • 經理,
  • 本地主機,
  • 主機管理器

我的任務是為每個文件添加唯一的標簽:CatalinaTag、mngTag、localTag、hostMngTag

我試圖在 inte.net 上找到解決方案,但沒有成功。

我對 logging.properties 的看法是這樣的:

handlers = 1catalina.mypackage.CatalinaConsoleHandler, 2localhost.mypackage.LocalhostConsoleHandler, 3manager.mypackage.ManagerConsoleHandler, 4host-manager.mypackage.LocalhostConsoleHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.mypackage.CatalinaConsoleHandler, java.util.logging.ConsoleHandler

1catalina.mypackage.CatalinaConsoleHandler.directory = /.../logs
1catalina.mypackage.CatalinaConsoleHandler.prefix = catalina.
1catalina.mypackage.CatalinaConsoleHandler.formatter = mypackage.CatalinaFormatter
mypackage.CatalinaFormatter.format = [CatalinaTag %1$tF %1$tT] [%4$-7s] %5$s %n

2localhost.mypackage.LocalhostConsoleHandler.directory = /.../logs
2localhost.mypackage.LocalhostConsoleHandler.prefix = localhost.
2localhost.mypackage.LocalhostConsoleHandler.formatter =mypackage.LocalhostFormatter
mypackage.LocalhostFormatter.format = [localhostTag %1$tF %1$tT] [%4$-7s] %5$s %n

3manager.mypackage.ManagerConsoleHandler.directory = /.../logs
3manager.mypackage.ManagerConsoleHandler.prefix = manager.
3manager.mypackage.ManagerConsoleHandler.formatter =mypackage.ManagerFormatter
mypackage.ManagerFormatter.format = [manager %1$tF %1$tT] [%4$-7s] %5$s %n

4host-manager.mypackage.LocalhostConsoleHandler.directory = /.../logs
4host-manager.mypackage.LocalhostConsoleHandler.prefix = host-manager.
4host-manager.mypackage.LocalhostConsoleHandler.formatter =mypackage.HostManagerFormatter
mypackage.HostManagerFormatter.format = [manager %1$tF %1$tT] [%4$-7s] %5$s %n

############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.mypackage.LocalhostConsoleHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.mypackage.ManagerConsoleHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.mypackage.LocalhostConsoleHandler

這是 *ConsoleHandler 的示例

package mypackage;

import java.util.logging.ConsoleHandler;

public class CatalinaConsoleHandler extends ConsoleHandler {
}

這里有一個 *Formatter 的例子

package mypackage;

import java.util.logging.SimpleFormatter;

public class CatalinaFormatter extends SimpleFormatter {
}

但到目前為止,我做不到。 你知道為什么嗎?

感謝您的任何幫助!

如果您使用的是原始的java.util.logging ,那么多次子類化ConsoleHandler (或者更確切地說是FileHandler )和SimpleFormatter的方法是正確的:JUL 只允許每個HandlerFormatter class 的一個實例。這種方法可行,但是您需要將mypackage.CatalinaConsoleHandler和 company 添加到系統類加載器(參見 Tomcat 類加載器)。

然而,有一個更簡單的方法:Tomcat 有自己的 JUL 擴展(參見文檔),它允許您:

  • 為每個處理程序名稱添加一個前綴,並創建多個相同的處理程序 class。前綴必須以數字開頭(例如1catalina. )。 帶前綴的屬性僅適用於特定的處理程序,而不帶前綴的屬性適用於所有處理程序。
  • 使用屬性占位符${...}將替換為適當的 Java 系統屬性。 還有三個特殊屬性( classloader.serverNameclassloader.hostNameclassloader.webappName )分別解析引擎、主機和上下文的名稱。

因此你可以使用:

# List of all handler names:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler
# Handlers attached to the root logger:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler

# These properties apply to all handlers
org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter

# These properties apply only to `1catalina.org.apache.juli.AsyncFileHandler`
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.java.util.logging.SimpleFormatter.format = [CatalinaTag %1$tF %1$tT] [%4$-7s] %5$s %n

# These properties apply only to `2localhost.org.apache.juli.AsyncFileHandler`
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.java.util.logging.SimpleFormatter.format = [LocalhostTag %1$tF %1$tT] [%4$-7s] %5$s %n

暫無
暫無

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

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