问题标签 [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.
logging - 为库(或公共 jar)配置单独的附加程序
我正在为我的客户开发一个图书馆,我还需要一些方法来了解消费者如何使用图书馆并获取有关其使用分析的信息。在我的库中,我想使用 Logstash Appender,这样如果我记录任何指标信息,它就会被发送到我们的 logstash 管道。
我应该如何支持这个额外的日志记录(用于我们的分析),这样它就不会干扰库使用者的日志记录设置。slf4j、log4j、logback-classic、util.logging 等日志库是否支持这样的用例,我可以从库内部配置单独的附加程序?
java - 当两个 logback.xml 在 Websphere 服务器上运行时,日志被合并
我面临的问题是,我有一个应用程序使用包含 logback.xml 的 jar 文件(jar1)(其日志文件具有目标文件夹),另一个应用程序也使用包含另一个 logback.xml 的 jar 文件(jar2) (其日志文件具有不同的目标文件夹)。对于第一个应用程序,我使用了一个带有 jar1 共享文件配置的类加载器。现在在这种情况下,日志正在合并。在第二个应用程序的第一个目标文件夹中创建了一些日志,反之亦然。我正在使用 WebSphere9。有没有办法在其特定的目标文件夹中创建日志文件,而不合并日志?
保留第一个类加载器,我尝试将第二个类加载器与 jar2 共享文件配置用于第二个应用程序。但在这种情况下,任何一个应用程序都可以工作。所以这个解决方案被排除了。
第一个应用程序的 logback.xml:
第二个应用程序的 logback.xml:
logging - 在 Docker 应用程序中使用 Logback 更改动态日志级别
Logback 具有扫描 logback.xml 中更改的功能(根据this) - 这是一个很棒的功能,它允许长时间运行的应用程序附带 INFO 作为默认级别,当必须简要调查某些内容时将其更改为 DEBUG。
但是在我最近的应用程序(作为 Docker 容器托管在我公司的 K8s 集群上)中,我无法使用上述功能,因为:
- 还没有提供托管外部卷的规定,我可以在其中放置我的 logback.xml(在调试期间由开发人员更改)
- 还没有规定在不重新启动的情况下更改正在运行的容器中的环境变量
- 没有 JNDI 服务器来映射日志变量
鉴于此,有没有一种方法可以让开发人员在运行时更改我的应用程序的日志记录级别,而无需重新启动应用程序/容器?
descriptor - 无法读取 ch.qos.logback:logback-classic:jar:1.2.3 的工件描述符
我得到以下错误 -
无法读取 ch.qos.logback:logback-classic:jar:1.2.3 的工件描述符 org.eclipse.aether.resolution.ArtifactDescriptorException: 无法读取 ch.qos.logback:logback-classic:jar:1.2 的工件描述符.3 在 org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:255)
spring - Logback 和 JsonLayout:无法传递自定义字段
我在我的 logback.xml 中有这个配置到一个 Spring Web 应用程序(没有 Spring Boot)。
JSON 布局工作正常,但自定义字段为 "appname": "foobar" 未打印:
我究竟做错了什么?
解决方案
我使用了错误的库来满足我的需要:
- logback-杰克逊
- logback-json-经典
因为我需要通过 Logstash 处理日志,所以我更正了我的配置,如下所示:
pom.xml
logback.xml
现在它工作正常。
logging - 使用 Logback 的 SiftingAppender 时压缩日志文件
我知道可以使用 RollingFileAppender 的 FixedWindowRollingPolicy 或 TimeBasedRollingPolicy 压缩日志文件。但是,我想知道仅使用 SiftingAppender 时是否可以进行压缩。我目前的配置如下:
我尝试在文件名末尾添加 .zip 和 .gz ,虽然它确实创建了一个压缩文件,但创建的文件无法打开。我想知道是否有解决方案?
logstash - Logback-classic 通过不同的依赖与 SLF4J 发生冲突
我有一个内部库,它已升级为使用logstash
,它具有强制依赖关系logback
,因此logback-classic
(它在其包内部有自己的 slf4j 附加程序,这意味着我不能在这里排除任何库)。
当我尝试将此依赖项用作任何其他遗留模块(它们都在使用slf4j-log4j12
)的 jar 时,我确实收到了日志依赖地狱消息:
但问题本身是我不能只排除 logback-classic,因为它是 logstash 的强制要求,而且我不能迁移我的应用程序以使用 logback,因为它们配置了 log4j.xml
有没有一种方法可以强制 slf4j 使用应用程序附加程序而不是来自 logback 库的附加程序,或者,是否有任何其他想法可以让一个给定的包使用附加程序,其余的使用其他?
java - Logback Java 中带有模式的 JSON 布局
我正在使用 logback 登录我的 Spring Boot 应用程序并使用以下模式:
现在我想转移到我的日志的 JSON 布局。但是我看不到将模式应用于我的日志的方法,因此上述许多信息都丢失了。
有什么替代方法可以达到同样的效果吗?
java - Logback - 在写入文件之前压缩日志行
我不确定是否有可能在日志行到达 logback appender 时基本上对它们进行 gzip,而不是在我们进行日志旋转时压缩文件。这是否可能,如果是这样,如何实现这一点,“即时”压缩而不是整个文件有很多好处吗?
logging - 如何在 logback 配置中为不同的 appender 共享相同的文件
我在 logback-spring.xml 中使用不同的附加程序,这是我的配置,
在这里,我为每个 appender 都有唯一的文件名和 fileNamePattern,所以这工作正常,但为每个 appender 创建每个新文件。
附加器 1:
附加器 2:
如果我只想为所有 appender 生成一个文件,那么如何实现。我试图为我遇到错误的所有附加程序设置相同的名称。
ch.qos.logback.core.rolling.RollingFileAppender[] 中的错误 - “文件”选项具有相同的值
是否可以在 logback 中的一个文件中共享日志消息。