Sentry.io + Tomcat + JUL:所有日志都发送到岗哨

时间:2017-09-19 07:01:58

标签: tomcat java.util.logging sentry

我正在sentry使用Tomcat(7.0.70)+哨兵(sentry-springlogging.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,则只记录警告并发送给哨兵。

你知道我做错了什么吗?

谢谢!

1 个答案:

答案 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来打印记录器树。也许有些东西正在重置您的配置,或者没有在处理程序上设置级别。