问题标签 [logback-classic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2821 浏览

logging - slf4j 的多个绑定和不匹配版本

我正在尝试使用 slf4j-api 和 log4j-over-slf4j,但我遇到了以下警告

我试图了解这些多个绑定的来源。logback-classic如果我通过排除spring-boot-starter-logging,我会得到如下链接错误

这是我通过 gradle for slf4j-api 的依赖关系树

不知道我还应该尝试解决这些警告

0 投票
1 回答
1474 浏览

java - 关于 slf4j 和 logback-classic 传递依赖的明确答案

我真的很努力将 logback-classic 加载为传递依赖问题。我遵循在 stackoverflow 上找到的建议,但是,它不断重复发生。

我使用 maven 排除来尝试控制它,它根本没有出现在我的 pom 依赖层次结构中。然而它仍然被加载!

这是我的运行时跟踪

部分问题是 Kontraktor 框架覆盖了 StaticLoggerBinder.getLoggerFactoryClassStr 方法。但是很容易确保它首先被加载,然后从正在加载它的石英中排除 logback-classic,如下所示:

此时 slf4j 仅由 kontraktor 加载。logback-classic 在依赖项中无处出现:tree

这么简单的问题,logback-classic 是如何加载的,谁在加载它?

0 投票
1 回答
519 浏览

javafx - 使用 slf4j 记录器保护 Javafx 应用程序

我之前构建了一个 Javafx 应用程序,并在使用 java.util.Logger 时成功地用 proguard 包装了它。但是,我需要从 java.util.Logger 切换到 slf4j 提供的 Logger 并使用 qos-logback。当我对它使用 proguard 时,我遇到了一系列警告,这些警告都是由 slf4j 或 qos-logback 库生成的。一些(MANYYY)警告是:

  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletRequest
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletRequest
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletRequest
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:org.slf4j.MDC:在程序类 org.slf4j.impl.StaticMDCBinder 中找不到引用的方法 'org.slf4j.impl.StaticMDCBinder getSingleton()'
  • 警告:org.slf4j.MarkerFactory:在程序类 org.slf4j.impl.StaticMarkerBinder 中找不到引用的方法 'org.slf4j.impl.StaticMarkerBinder getSingleton()'
  • 注意:ch.qos.logback.classic.gaffer.GafferUtil 动态访问构造函数'(ch.qos.logback.classic.LoggerContext)'

如果您注意到,某些警告甚至会重复出现。如果有人能帮助我解决这个问题,我将非常感激,即使它只是为我指明了正确的方向,因为我已经坚持了一段时间。提前谢谢了。

0 投票
1 回答
1239 浏览

java - 在 logback 中动态添加 Appender

我有一个来自 slf4j 的记录器实例。该记录器已经记录到控制台。我想向它添加一个额外的附加程序,它将为每个线程分别记录到一个文件中。所以我想使用SiftingAppender

我创建了以下 utils 类来向记录器实例添加一个附加程序。

我正在尝试在这里测试日志:

控制台上的输出如下:

但是,实际上没有任何记录器信息打印在控制台或文件中。如果我不添加siftingAppender. 如何以SiftingAppender编程方式添加?

我不允许更改logback.xml

启用登录 logback 后,我得到以下信息:

编辑

删除此行后,日志将打印在控制台上logger.setAdditive(false);。但是,我看不到文件被创建。

0 投票
1 回答
3836 浏览

spring - Logback 不记录 INFO 和 ERROR

我需要在单独的文件中记录信息和错误。我尝试了以下配置。虽然我得到了 CACHE-AUDIT 和 SERVICE_AUDIT 的日志,但没有打印任何信息和错误日志。我在这里缺少一些配置吗?

logback.xml

0 投票
1 回答
2274 浏览

java - 回退条件不起作用

我正在尝试定义一个 logback.xml,它在 PROD 环境中将 loglevel 设置为 INFO,将所有其他环境设置为 DEBUG。因此,我们有一个环境变量 ENV,它在 PROD 环境中设置为“PROD”。我的 logback.xml 看起来像这样:

如果 ENV 设置为 PROD,则应将属性“logLevel”设置为 INFO。不幸的是,这不起作用 - 无论我是在环境级别(windows:SET ENV = PROD)还是使用-D在java vm级别设置属性。

知道我做错了什么吗?

更新:我发现根据文档,janino 库必须在类路径中。添加 a 并查看日志也证明这似乎是问题所在:

不幸的是,即使我将它添加到我的 gradle 依赖项中,此消息也会不断出现。这是我的 build.gradle:

知道为什么在类路径上仍然找不到 janino 吗?

0 投票
2 回答
1116 浏览

logging - 抑制 logback 中的日志级别配置更改消息

当 logback 读取其配置时,它会为每个日志级别设置输出消息:

不幸的是,我们的(有些粗略的)警报系统发现了这些错误和警告。(我们不能安全地加强这一点,因为我们可能会错过配置错误日志模式的进程的问题)

有没有办法抑制这些级别更改消息?
将 ch.qos.logback.classic.joran.action.LoggerAction 和 ch.qos.logback.classic.jul.LevelChangePropagator 的日志级别设置为 OFF 或 ERROR 似乎没有效果。

我们将 logback-classic 与 jul-to-slf4j、log4j-over-slf4j 和 jcl-over-slf4j 一起使用,并且使 SLF4JBridgeHandler 能够从我们使用的各种不同的 3rd 方库中获取日志记录。

0 投票
1 回答
1392 浏览

eclipse - Tomcat logback 控制台附加程序仅遵循 ROOT 级别,而不是命名附加程序

我在 Eclipse 中使用 Tomcat。我最近升级到 Neon 并在那里重新创建了我的 Tomcat 服务器配置。从那时起,我就无法将我的 Web 应用程序正确地记录到 Eclipse 控制台。具体来说,如果我在 Web 应用程序附加程序中设置了 INFO 级别,它们将成功进入日志文件,而不是控制台。

奇怪的是,只有当我将 ROOT 级别从 WARN 更改为 INFO 时,控制台才会显示我的应用程序的 INFO 级别。但当然,这也将其他所有内容都放在 INFO 中,这使得它不是很有用。

我也通过 logback 发送所有 Tomcat 日志记录。对于我的启动配置,我在参数中使用:

-Dcatalina.base="C:\dev\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0" -Dcatalina.home="C:\dev\apache-tomcat-7.0.52" -Dwtp.deploy="C:\dev\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps" -Djava.endorsed.dirs="C:\dev\apache-tomcat-7.0.52\endorsed" -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" -Djava.util.logging.config.file="C:/dev/apache-tomcat-7.0.52/conf/logging.properties" -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true -Dlogback.configurationFile="C:/dev/apache-tomcat-7.0.52/lib/logback.xml"

在类路径中,我添加了tomcat-juli.jarand jul-to-slf4j-1.7.25.jar

这是我的 logback.xml:

这是我在启动 Tomcat 时得到的 Eclipse 控制台中的输出: 20:01:06,793 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [C:/dev/apache-tomcat-7.0.52/lib/logback.xml] at [file:/C:/dev/apache-tomcat-7.0.52/lib/logback.xml] 20:01:06,938 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 20:01:06,974 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [file:/C:/dev/apache-tomcat-7.0.52/lib/logback.xml] 20:01:06,975 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 10 seconds 20:01:06,980 |-INFO in ch.qos.logback.core.joran.action.StatusListenerAction - Added status listener of type [ch.qos.logback.core.status.OnConsoleStatusListener] 20:01:07,017 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 20:01:07,023 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE] 20:01:07,032 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 20:01:07,079 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 20:01:07,083 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [main] 20:01:07,086 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 20:01:07,100 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@391359742 - No compression will be used 20:01:07,103 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@391359742 - Will use the pattern C:/dev/apache-tomcat-7.0.52/logs/tomcat7.%d{yyyy-MM-dd}.log for the active file 20:01:07,111 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'C:/dev/apache-tomcat-7.0.52/logs/tomcat7.%d{yyyy-MM-dd}.log'. 20:01:07,111 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight. 20:01:07,119 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sun Jul 09 19:51:44 EDT 2017 20:01:07,124 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[main] - Active log file name: C:/dev/apache-tomcat-7.0.52/logs/tomcat7.log 20:01:07,124 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[main] - File property is set to [C:/dev/apache-tomcat-7.0.52/logs/tomcat7.log] 20:01:07,128 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.apache.struts2.util.TokenHelper] to ERROR 20:01:07,128 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.dbunit.dataset.AbstractTableMetaData] to ERROR 20:01:07,128 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework.mock.web.MockServletContext] to ERROR 20:01:07,128 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.w3c.tidy] to OFF 20:01:07,128 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.opensymphony.xwork2.DefaultActionProxy] to ERROR 20:01:07,129 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [ch.qos] to DEBUG 20:01:07,129 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sentrylink.web.product.Catalog] to INFO 20:01:07,129 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN 20:01:07,130 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT] 20:01:07,131 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [main] to Logger[ROOT] 20:01:07,131 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 20:01:07,132 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@14acaea5 - Registering current configuration as safe fallback point 20:01:07.606 [main] WARN (SetPropertiesRule.java:218) - [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:web' did not find a matching property. 20:01:10,298 |-INFO in ch.qos.logback.classic.servlet.LogbackServletContainerInitializer@55d16720 - Adding an instance of class ch.qos.logback.classic.servlet.LogbackServletContextListener to the current web-app 20:01:17,590 |-INFO in ch.qos.logback.classic.servlet.LogbackServletContainerInitializer@75b3fa82 - Adding an instance of class ch.qos.logback.classic.servlet.LogbackServletContextListener to the current web-app 20:01:24,547 |-INFO in ch.qos.logback.access.tomcat.LogbackValve[null] - filename property not set. Assuming [conf\logback-access.xml] 20:01:24,547 |-INFO in ch.qos.logback.access.tomcat.LogbackValve[null] - Could NOT configuration file [C:\dev\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\logback-access.xml] using property "catalina.base" 20:01:24,547 |-INFO in ch.qos.logback.access.tomcat.LogbackValve[null] - Found configuration file [C:\dev\apache-tomcat-7.0.52\conf\logback-access.xml] using property "catalina.home" 20:01:24,554 |-INFO in ch.qos.logback.access.joran.action.ConfigurationAction - debug attribute not set 20:01:24,554 |-INFO in ch.qos.logback.core.joran.action.StatusListenerAction - Added status listener of type [ch.qos.logback.core.status.OnConsoleStatusListener] 20:01:24,554 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 20:01:24,554 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE] 20:01:24,556 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1990676241 - No compression will be used 20:01:24,556 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1990676241 - Will use the pattern logs/data-access.%d{yyyy-MM-dd}.log for the active file 20:01:24,557 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/data-access.%d{yyyy-MM-dd}.log'. 20:01:24,557 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight. 20:01:24,558 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sat Jul 08 22:21:36 EDT 2017 20:01:24,558 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.access.PatternLayoutEncoder] for [encoder] property 20:01:24,572 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: logs/data-access.log 20:01:24,572 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [logs/data-access.log] 20:01:24,573 |-INFO in ch.qos.logback.access.joran.action.ConfigurationAction - End of configuration. 20:01:24,573 |-INFO in ch.qos.logback.access.joran.JoranConfigurator@783a197d - Registering current configuration as safe fallback point 20:01:24,573 |-INFO in ch.qos.logback.access.tomcat.LogbackValve[null] - Done configuring

此时,我加载了一个网页,该网页使用 INFO 日志记录触发 Catalog 类。它成功登录到上面列出的tomcat7.log 文件。但它不会出现在控制台中。

如果我将目录附加程序更改为 WARN 级别,则日志文件会正确遗漏 INFO 消息。如前所述,如果我将目录附加程序留在 INFO并将ROOT 附加程序更改为 INFO,它将与其他所有内容一起显示在控制台中。

我已经升级到最新版本的 logback 和 slf4j 并没有帮助。任何帮助表示赞赏。

0 投票
1 回答
2133 浏览

java - 文件名中带有时间戳的 Logback 文件未翻转

我正在为日志使用以下配置。当文件名中包含时间戳时,文件不会翻转。这是因为时间戳中使用了 timeReference 吗?如果我从文件名中删除时间戳,则文件会在达到 10KB 文件大小时滚动。

有没有办法在文件名中包含时间戳并同时使翻转工作?

0 投票
1 回答
426 浏览

spring-boot - 使用 Logback ServerSocketReceiver 缺少 Spring-boot 事件

症状:spring-boot 基本应用程序(没有 web,没有 jpa,没有插件)在 logback-spring.xml 中定义了一个接收器,但是远程 appender 事件永远不会到达本地 appender。

logback-spring.xml:

对于这个问题,crapAppender 被剥离为最基本的:

启动时,日志显示我的组件正在实例化:

我什至可以看到远程附加程序已连接到接收器端口(6004):

本地 appender 只发出本地事件;远程附加程序永远不会到达本地垃圾附加程序。

有人对阻止远程事件通过本地附加程序的原因有任何想法吗?