2017-09-19 46 views
0

我使用Tomcat(7.0.70)+哨兵(包括sentrysentry-spring)+ JUL具有以下logging.properties文件中WEB-INF/classesSentry.io + Tomcat的+ JUL:所有日誌發送到崗哨

handlers = java.util.logging.FileHandler,java.util.logging.ConsoleHandler,io.sentry.jul.SentryHandler 

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

#Format 
java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$-8s --- %2$-100s : %5$s%6$s%n 

# Handlers 
# ----------------------------------------- 

# --- ConsoleHandler --- 
# Override of global logging level 
java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

# --- FileHandler --- 
java.util.logging.FileHandler.level = FINE 
java.util.logging.FileHandler.pattern = ${catalina.base}/logs/application.%g.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

io.sentry.jul.SentryHandler.level = SEVERE 

我的問題是所有日誌都發送到哨兵,而不是隻有SEVERE。我也注意到,如果我改變了全球.level了關於該日誌被送到哨兵(即,如果我將它設置爲WARNING,只有警告記錄併發送至放哨)的影響。

你有任何想法,我做錯了什麼?

謝謝!

回答

0

你有任何想法,我做錯了什麼?

如果我在尋找合適的source code,它不試圖讀取來自LogManager的設置。您可以擴展SentryHandler並從LogManager中讀取子類並設置級別。或者您需要創建代碼來查找SentryHandler並設置關卡。

如果可能,儘量設置一些配置中$CATALINA_BASE/conf而不是WEB-INF/classes

如果你看看source code,記錄器級別只在addLogger方法中設置一次。 WEB-INF/classes將被裝入readConfiguration(ClassLoader)。如果任何類加載觸發記錄器創建,它可能發生在readConfiguration(ClassLoader)之前。在這種情況下,logger.properties不會更改記錄器級別。

您應該能夠聲明$CATALINA_BASE/conf中的某些記錄器級別以及WEB-INF/classes中的處理程序安裝。

Try printing the logger tree從應用程序類加載器。這可以很簡單,只需在應用程序中包含一個servlet即可打印記錄器樹。也許有些東西是重置你的配置或者沒有在處理程序上設置關卡。

+0

有趣。我做了一些測試,並在'$ CATALINA_BASE/conf'中將'io.sentry.jul.SentryHandler.level = SEVERE'聲明添加到'logging.properties'中,但無濟於事(無變化)。定義處理程序有點棘手,因爲Tomcat在其類路徑中沒有'sentry'罐。我會嘗試加入他們,雖然我會拉着一個很大的依賴性 –

+0

添加所有的依賴會導致啓動錯誤'拋出java.lang.ClassNotFoundException的:因爲有一些嵌入式庫發生衝突的可能javax.servlet.ServletContainerInitializer'? –

+0

我嘗試了大多數不同的組合 - 聲明除了'base'中的所有內容外,還有'web-inf'中的其他內容,但無濟於事。 –