2017-07-25 65 views
0

我已經配置了記錄分數,並試圖增加額外的處理程序特定日誌存儲在不同的文件中配置應用程序審計日誌,使用類別,通過尋找到答案How to log application auditing to separate file on Wildfly 8但適應Wildfly-Swarm流利的API。如何在Wildfly-羣一個單獨的文件

的代碼看起來是這樣的:

LoggingFraction loggingFraction = new LoggingFraction() 
      .consoleHandler(level, "COLOR_PATTERN") 
      .formatter("PATTERN", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("COLOR_PATTERN", "%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("AUDIT", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%c{1}) %s%e%n") 
      .periodicSizeRotatingFileHandler("FILE", h ->{ 
       h.level(level) 
         .namedFormatter("PATTERN") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
       Map<String,String> fileSpec = new HashMap<>(); 
       fileSpec.put("path", getLogsDirectory() + "/" + "application.log"); 
       h.file(fileSpec); 
      }) 
      .periodicSizeRotatingFileHandler("FILE_AUDIT_HANDLER", h ->{ 
       h.level(level) 
         .namedFormatter("AUDIT") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
         Map<String,String> fileSpec = new HashMap<>(); 
         fileSpec.put("path", getLogsDirectory() + "/" + "application-audit.log"); 
         h.file(fileSpec); 
      }) 
      .rootLogger(l -> { 
       l.level(level) 
         .handler("CONSOLE") 
         .handler("FILE") 
         ; 
      }) 
      .logger("FILE_AUDIT", l -> { 
       l.level(level) 
       .category("com.company.app.webservice") 
       .level(Level.INFO) 
       .handler("FILE_AUDIT_HANDLER") 
       ; 
      }) 
      ; 

然後,我在代碼中創建一個正常的記錄器添加日誌,就像這樣:

private static final Logger LOGGER_AUDIT = LoggerFactory.getLogger("com.company.app.webservice"); 
... 
LOGGER_AUDIT.info("Testing audit log") 

但它不工作。
我假設類別名稱只需要匹配Logger名稱,在某種程度上,該記錄器名稱類別名稱「開頭」,那麼它將被包括在內。我對嗎?
我不知道是否有什麼不對我的配置,或者是不應該的記錄儀就像使用。

回答

1

category屬性是有點遺產屬性。如果有道理,記錄器名稱就是真正的類別。在你的例子中,上面的記錄器將被命名爲FILE_AUDIT,這意味着你會匹配Logger.getLogger("FILE_AUDIT")

類似下面的可能是你想要的東西。

LoggingFraction loggingFraction = new LoggingFraction() 
      .consoleHandler(level, "COLOR_PATTERN") 
      .formatter("PATTERN", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("COLOR_PATTERN", "%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n") 
      .formatter("AUDIT", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%c{1}) %s%e%n") 
      .periodicSizeRotatingFileHandler("FILE", h ->{ 
       h.level(level) 
         .namedFormatter("PATTERN") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
       Map<String,String> fileSpec = new HashMap<>(); 
       fileSpec.put("path", getLogsDirectory() + "/" + "application.log"); 
       h.file(fileSpec); 
      }) 
      .periodicSizeRotatingFileHandler("FILE_AUDIT_HANDLER", h ->{ 
       h.level(level) 
         .namedFormatter("AUDIT") 
         .append(true) 
         .suffix(".yyyy-MM-dd") 
         .rotateSize(maxSize) 
         .enabled(true) 
         .encoding("UTF-8") 
         .maxBackupIndex(maxFiles); 
         Map<String,String> fileSpec = new HashMap<>(); 
         fileSpec.put("path", getLogsDirectory() + "/" + "application-audit.log"); 
         h.file(fileSpec); 
      }) 
      .rootLogger(l -> { 
       l.level(level) 
         .handler("CONSOLE") 
         .handler("FILE") 
         ; 
      }) 
      .logger("com.company.app.webservice", l -> { 
       l.level(level) 
       .level(Level.INFO) 
       .handler("FILE_AUDIT_HANDLER") 
       ; 
      }) 
      ; 

注意的唯一真正的變化是消除類(這是一個只讀屬性),並改變FILE_AUDITcom.company.app.webservice

+0

它的工作!謝謝。 – xsilmarx

相關問題