问题标签 [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 投票
3 回答
6826 浏览

java - 如何启用 logback 以每 x 分钟/5 分钟/30 分钟轮换一次日志文件?

我知道 logback.xml 可以轻松地每天、每小时或每周轮换我的日志。如何配置时间戳fileNamePattern以便每半小时或“x”分钟轮换一次日志?

或者这里是否需要进行代码级别的更改?如果是这样,对于高性能业务级应用程序来说,它是线程安全且高效的吗?

0 投票
0 回答
104 浏览

spring - Spring Boot以不同的顺序加载日志类

我不确定你们中有多少人对此很熟悉,但是在两个不同的环境中运行同一个应用程序会导致我的 Spring Boot 应用程序以不同的顺序加载其日志依赖项。我使用 logback-classic-1.1.7 和 slfj4j-log4j12-1.7.13 运行。

现在,我现在知道 logback 已经嵌入了 slfj(至少,现在我这样做了),它通常会显示一个多重绑定警告,然后它会继续。该应用程序将启动。

我读过,有时当 slf4j 发现多个绑定时,它有时会随机选择一个。我已经删除了其他不必要的依赖项,这解决了我的问题。我更感兴趣的是为什么同一个应用程序会通过在具有相同 linux 版本的不同服务器上运行来加载错误的记录器。在另一个环境中运行,当我尝试启动它时的结果是:

在这种环境中,它以相反的顺序加载两个竞争的记录器,然后应用程序无法启动。有谁知道更多关于 Spring 加载依赖项的行为以及为什么它会在不同的环境中以不同的顺序加载它们?这导致此错误在一段时间内未被注意到。两种环境都有相同的 linux 版本。

提前致谢

0 投票
0 回答
22 浏览

java - 为一个应用程序运行生成一个额外的空白日志文件

我为我的应用程序配置了记录器,并将日志文件名作为当前时间戳记,因此它希望创建一个名称为当前时间戳记的日志文件,但插入它创建一个具有当前时间戳记的日志文件和另一个空白的文件无法弄清楚为什么创建额外的文件??

我在我的应用程序中使用 Logback 记录器,这是我的 logback.xml 看起来我的应用程序是简单的核心 java 应用程序。我在哪里用户记录器记录语句

0 投票
1 回答
368 浏览

java - 有没有办法在压缩旋转的日志文件之前添加延迟

在压缩旋转的日志文件之前,我需要添加一些单位时间的延迟。我正在使用 logback-core,我的 xml 看起来像这样:-

有什么办法吗?我在这里看到了一种扩展滚动策略类的方法但不确定类似的方法是否可以在这里工作。

0 投票
1 回答
342 浏览

logging - 在 IDE 中运行时的 Logback 配置

有没有什么很酷的技巧可以让单一logback.xml配置改变 PROD 与在 IDE 中运行?

我想根据我是在我的 IDE 中运行还是在 jar 中的 PROD 中运行来使用不同的附加程序、模式和日志级别。

我目前在中使用 2 个不同的文件src/main/resources:logback.xml(在 PROD/jar 中使用)和 logback-dev.xml,在我的 IDE 中运行时使用。不理想的部分是每个开发人员都必须配置他们的 IDE 启动器以包含-Dlogback.configurationFile=path/to/logback-dev.xml. 换句话说,它在 git clone 之后不能开箱即用。我还试图避免在我的 VCS 中提交特定于 IDE 的启动器

我看到了<if>构造,但我不确定我可以使用什么条件来检测 IDE。if条件似乎非常严格:

条件是一个 Java 表达式,其中只能访问上下文属性或系统属性

我也尝试使用logback-test.xmlinsrc/test/resouces但这仅适用于单元测试,并且在正常启动应用程序时它不会被 maven 复制到类路径

如果有任何用处,我正在使用 IntelliJ、maven 和 git

0 投票
0 回答
1386 浏览

java - Logback 不适用于 Spring Boot 和 Tomcat

我正在尝试在 Tomcat 服务器上设置 Spring Boot 应用程序,但遇到了问题。我不断收到以下错误:

这是我的程序的主要类:

我一直注意到的是,我之前所说的错误似乎发生在 SpringBootServletInitializer 类中的这一行之后:

编辑:这是我的 POM 文件。

0 投票
1 回答
357 浏览

logback - slf4j, logback, 目标压缩文件名已经存在

登录 1.1.5 + slf4j 1.7.4。

半夜翻车

但几秒钟后,翻转再次开始

WLS 的 2 个虚拟服务器上有 2 个应用程序。这两个应用程序都使用带有您自己的 logback.xml 的单独主文件夹。

logback.xml 是

我能做些什么?

0 投票
1 回答
414 浏览

java - Logback 没有正确清理文件

我正在使用 Logback 来管理服务器上的日志。我用RollingFileAppender一个TimeBasedRollingPolicy

我设置maxHistory为 168 以将日志保留 7 天(每小时一个文件,每天 24 个文件 = 168 个文件)。

查看history文件夹,我希望找到过去 7 天的子目录和每个子目录中的 24 个压缩日志文件(除了当前的和最旧的)。

但是大约 4 个月前有 76 个文件夹。有几天没有文件夹,许多文件夹不包含每小时的 zip 文件。history但树中总共有 1000 多个 zip 文件。

所以有某种清理,但似乎有些文件很晚才被清理。我的配置有什么问题?我正在使用版本 logback-classic-1.2.3。

0 投票
1 回答
1064 浏览

logback - 在 SiftingAppender 中使用 RollingFileAppender 时不起作用

我有以下 logback 设置

鉴别器类通过解析 loggerName 返回一个值。密钥被定义为“fileName”。

当我只测试 RollingFileAppender (在用${fileName}静态值替换变量引用之后)时,日志翻转很好,但是当我将它嵌套在 SiftingAppender 下时,日志不会翻转。我测试了筛选附加程序,"FileAppender"它能够根据鉴别器创建正确的文件名。

我还使用鉴别器测试了相同的配置

并删除class标签。这会创建appname.log但不会翻转。

设置debug="true"没有将任何附加信息写入日志文件。

我在这里错过了什么吗?如何在 SiftingAppender 中实现 RollingFileAppender?

0 投票
1 回答
1963 浏览

spring-boot - ClassNotFoundException:org.slf4j.impl.StaticLoggerBinder

我正在使用 boot-starter-parent 版本将 spring 应用程序转换为 spring-boot:2.0.4.RELEASE。当我使用 mvn install 构建时,它运行良好,但是当我尝试使用 command: 运行应用程序mvn spring-boot:run -Dspring.profiles.active=dev时,我得到了这个异常: ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder

这是我的 pom 中的依赖项:

我已经尝试遵循这个问题的建议,并使用新旧版本的 logback(核心和经典)依赖项,并添加 'slf4j-log4j12' 和 'slf4j-simple' 但仍然出现异常。堆栈跟踪是:

java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext (LogbackLoggingSystem.java:285) 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize (LogbackLoggingSystem .java:102) 在 org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent (LoggingApplicationListener.java:170) 在 org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent (LoggingApplicationListener.java:191)。 springframework.context.event.SimpleApplicationEventMulticaster.invokeListener (SimpleApplicationEventMulticaster.java:167) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent (SimpleApplicationEventMulticaster.java:139) 在 org.springframework.boot.context.event.EventPublishingRunListener.starting (EventPublishingRunListener.java:68) 在 org.springframework.boot.SpringApplicationRunListeners 的 org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent (SimpleApplicationEventMulticaster.java:122) .starting (SpringApplicationRunListeners.java:48) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:316) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) 在 org.springframework.boot。 com.hbo.esp.MyApplication.main (MyApplication.java:17) 上的 SpringApplication.run (SpringApplication.java:1246) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)org.springframework.boot.SpringApplicationRunListeners.starting (SpringApplicationRunListeners.java:48) at org.springframework.boot.context.event.EventPublishingRunListener.starting (EventPublishingRunListener.java:68) 的 multicastEvent (SimpleApplicationEventMulticaster.java:122) .boot.SpringApplication.run (SpringApplication.java:316) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1246) 在 com。 hbo.esp.MyApplication.main (MyApplication.java:17) 在 sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)org.springframework.boot.SpringApplicationRunListeners.starting (SpringApplicationRunListeners.java:48) at org.springframework.boot.context.event.EventPublishingRunListener.starting (EventPublishingRunListener.java:68) 的 multicastEvent (SimpleApplicationEventMulticaster.java:122) .boot.SpringApplication.run (SpringApplication.java:316) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1246) 在 com。 hbo.esp.MyApplication.main (MyApplication.java:17) 在 sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)springframework.boot.SpringApplicationRunListeners.starting (SpringApplicationRunListeners.java:48) at org.springframework.boot.SpringApplication.run (SpringApplication.java:316) at org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) at org .springframework.boot.SpringApplication.run (SpringApplication.java:1246) at com.hbo.esp.MyApplication.main (MyApplication.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)springframework.boot.SpringApplicationRunListeners.starting (SpringApplicationRunListeners.java:48) at org.springframework.boot.SpringApplication.run (SpringApplication.java:316) at org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) at org .springframework.boot.SpringApplication.run (SpringApplication.java:1246) at com.hbo.esp.MyApplication.main (MyApplication.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)hbo.esp.MyApplication.main (MyApplication.java:17) 在 sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)hbo.esp.MyApplication.main (MyApplication.java:17) 在 sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)