我正在sentry
使用Tomcat(7.0.70)+哨兵(sentry-spring
和logging.properties
)+ JUL与以下WEB-INF/classes
文件:
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 :(得分:0)
你知道我做错了什么吗?
如果我正在查看右source code,则不会尝试从LogManager读取设置。您可以扩展SentryHandler并从LogManager读取子类并设置级别。或者您需要创建代码来查找SentryHandler并设置级别。
如果可能,请尝试在$CATALINA_BASE/conf
而不是WEB-INF/classes
中设置部分配置。
如果查看source code,则记录器级别仅在addLogger
方法中设置一次。 WEB-INF/classes
将加载readConfiguration(ClassLoader)
。如果任何类加载触发了记录器创建,则可能在readConfiguration(ClassLoader)
之前发生。在这种情况下,记录器级别永远不会被WEB-INF/classes
logging.properties更改。
您应该能够在$CATALINA_BASE/conf
中声明一些记录器级别,并在WEB-INF/classes
中声明处理程序安装。
Try printing the logger tree。这可以简单到只包含一个带有应用程序的servlet来打印记录器树。也许有些东西正在重置您的配置,或者没有在处理程序上设置级别。