与Log4J和java.util.logging相比,基于Java的程序的现代日志记录工具具有许多新功能。
这与排除从父pom继承的子pom中的依赖关系类似,只不过它与测试范围和编译范围有关。 我有一个父 POM,其中包含 org.slf4j:slf4j-api 依赖项...
如何在application.yml中配置SpringBoot logback设置?
我想在我的项目中指定我的 logback.xml 文件,并且在我的 SpringBoot 应用程序中我使用的是 application.yml,我只需添加 记录: 配置:logback.xml 但这对我不起作用,...
从 Spring Boot 2.7 升级到 Spring Boot 3.2.11 后启动应用程序时出现问题
我在将存储库从 spring 2.7 升级到 3.X 时遇到问题,我的应用程序构建得很好,但是当我启动它时,我每次都会收到相同的错误消息。我尝试过添加、删除、更新变量...
出现错误:LOGBACK:没有为 net.logstash.logback.LogstashFormatter 提供上下文
我尝试使用 Logback 和以下配置在 SpringBoot 应用程序中打印日志,但日志未打印。 使用 Spring-boot 版本 2.7.2 和 Java 版本 17。 ...
SLF4J 在 vertx 上找不到 logback-classic 的提供者
我正在尝试在 Vertx 项目上添加 Logback,但似乎 SLF4J 无法看到 logback,即使它本身来自 logback 依赖项。我使用了 Maven 依赖项 logback-classic,它可以传递导入...
SLF4J 在 vertx 上找不到 logback-classic 的提供者
我正在尝试在 Vertx 项目上添加 Logback,但似乎 SLF4J 无法看到 logback,即使它本身来自 logback 依赖项。我使用了 Maven 依赖项 logback-classic,它可以传递导入...
在编译时 springboot graalvm 原生镜像期间禁用 logback
在编译springboot graalvm原生镜像的过程中,会调用logback。 [信息] --- maven-surefire-plugin:3.5.0:test (默认测试) @ myproject --- [信息] 测试被跳过。 [信息] [...
我按照这篇文章设置了logback。 注意:我使用的是 logback,而不是 logback-android 项目依赖: 实现 'org.slf4j:slf4j-api:2.0.7' 实现 'ch.qos.logback:logback-cla...
Logback - 使用字符串日志和应用程序日志创建自定义 json 的正确方法
我正在尝试创建自定义日志格式,因为我的应用程序正在运行到 Wildfly,并且我已将其迁移到 SpringBoot。在 Wildfly 上,应用程序日志已经是 JSON 格式,但如果我使用 si...
Logback 颜色编码在 Grafana Loki 日志中不起作用
我有一个容器化的 Spring Boot 应用程序。以下是我的 Spring Boot 应用程序的 logback.xml , 我有一个容器化的 Spring Boot 应用程序。以下是我的 Spring Boot 应用程序的 logback.xml , <?xml version="1.0" encoding="UTF-8"?> <configuration> <property name="LOG_PATH" value="logs" /> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg %n </pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> </configuration> 我正在将日志从该容器推送到 Fluentd,并进一步推送到 Loki。但是当我在 grafana loki 中看到日志时,我的日志中出现了以下垃圾字符。 此外,日志级别的颜色编码也无法正常工作。 您看到的是 ANSI 控制序列。它们用于控制台上的颜色编码。正如您所注意到的,Graphana 不支持 ANSI 颜色,因为它有其他方式来分隔不同的日志级别。 要删除 Graphana 中的多余字符,唯一的选择是关闭日志中的颜色编码。如果您想要或需要在本地日志中进行颜色编码,则必须配置两种不同的附加程序,一种用于本地日志(带颜色编码),另一种用于 Graphana(不带颜色编码)。 问题在于序列的重置部分。由于某种原因,Grafana 解析器似乎不喜欢序列的 reset(关闭)部分中的 0; 或 1;。 例如: [0;32mINFO[0;32m 不起作用。 [0;32mINFO[32m 会起作用的。 您可以看到有些是如何工作的,有些则不在这里: 区别只是序列的重置(关闭)部分。
我一直在尝试在 Eclipse Equinox RT 应用程序中设置 logback 过滤器,如下所示: 我一直在尝试在 Eclipse Equinox RT 应用程序中设置 logback 过滤器,如下所示: <?xml version="1.0" encoding="utf-8" standalone="no"?> <configuration debug="true"> <appender name="myappender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./logs/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>./logs/myapp_%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>10</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>10MB</maxFileSize> </triggeringPolicy> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>return message.contains("buy: foo") || message.contains("sell: bar");</expression> </evaluator> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>%d{dd/MM/yyyy HH:mm:ss} | %-5level | %msg%n%ex{short}</pattern> </encoder> </appender> <root level="ALL"> <appender-ref ref="myappender"/> </root> </configuration> 我在 gradle 子项目中有此配置,我将其称为“osgi-log”,以供参考。 plugins { id 'java-library' version '1.0.0' } group 'myapp' version '2.0.0' dependencies { api group: 'org.slf4j', name: 'slf4j-api', version: '2.0.5' implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.5' implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.3.5' implementation group: 'org.codehaus.janino', name: 'janino', version: '3.1.12' implementation group: 'org.ow2.asm', name: 'asm', version: '5.2' implementation group: 'org.ow2.asm', name: 'asm-commons', version: '5.2' implementation group: 'org.ow2.asm', name: 'asm-util', version: '5.2' implementation group: 'org.apache.aries.spifly', name: 'org.apache.aries.spifly.dynamic.bundle', version: '1.3.5' } “osgi-log”正在其他 gradle 子项目中设置,如下所示: dependencies { implementation group: 'myapp', name: 'osgi-log' } 当我运行应用程序时,出现以下异常: ERROR in ch.qos.logback.classic.boolex.JaninoEventEvaluator@75243b22 - Could not start evaluator with expression [return message.contains("buy: foo") || message.contains("sell: bar");] org.codehaus.commons.compiler.CompileException: Line 1, Column 1: A class "ch.qos.logback.classic.Level" could not be found at org.codehaus.commons.compiler.CompileException: Line 1, Column 1: A class "ch.qos.logback.classic.Level" could not be found 观察: 如果删除过滤器,日志将按预期工作。正在抛出异常 然后我才添加过滤器。 正在通过系统环境加载配置文件-Dlogback.configurationFile=file:logback.xml。 这是一个java 8应用程序。 任何其他建议或更简单的方法来实现相同的结果,将受到欢迎 - 我想过滤事件并只注册那些匹配某些字符组的事件。 加: 如果有人能帮助我理解为什么 Apache SpiFly 不能动态解析 Janino 实现的所有依赖项,我将不胜感激? 我实际上找到了解决办法。 这似乎是 Janino 依赖端的一个已知问题。 为了使其工作,需要调整 MANIFEST.MF 和 janino 中的 commons-compiler 添加以下行: DynamicImport-Package: ch.qos.logback.*,org.slf4j 参考资料: https://github.com/qos-ch/logback-contrib/pull/29/files https://github.com/qos-ch/logback-contrib/issues/28
logback - 仅显示 catalina.out 中的错误
我有这个文件logback-spring.xml: 我有这个文件 logback-spring.xml: <configuration> <property name="DEV_HOME" value="./logs" /> <appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${DEV_HOME}/dana.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%black(%date{"yyyy-MM-dd HH:mm:ss.SSS", "Europe/Brussels"}) %highlight(%-5level) [%green(%X{sessionId})] %yellow(%logger{36}@%method\(%line\)) - %msg%n%throwable</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${DEV_HOME}/archive/dana.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="FILE-AUDITSPRING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${DEV_HOME}/springframework.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", Europe/Brussels} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${DEV_HOME}/archive/springframework.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="FILE-CATALINA" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${DEV_HOME}/catalina.out</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%black(%date{"yyyy-MM-dd HH:mm:ss.SSS", "Europe/Brussels"}) %highlight(%-5level) [%green(%X{sessionId})] %yellow(%logger{36}@%method\(%line\)) - %msg%n%throwable</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${DEV_HOME}/archive/catalina.out.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <root level="ERROR"> <appender-ref ref="FILE-CATALINA" /> </root> <appender name="FILE-AUDIT-WF" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${DEV_HOME}/activiti.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", Europe/Brussels} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${DEV_HOME}/archive/activiti.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" > <encoder> <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", Europe/Brussels} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="ERROR"> <appender-ref ref="CONSOLE" /> </root> <root level="ERROR"> <appender-ref ref="STDOUT" /> </root> <!--springProfile name="dev"--> <logger name="com.keuroa.em" level="error" additivity="true"> <appender-ref ref="FILE-AUDIT" /> </logger> <logger name="org.springframework" level="error" additivity="true"> <appender-ref ref="FILE-AUDITSPRING" /> </logger> <logger name="org.activiti" level="error" additivity="true"> <appender-ref ref="FILE-AUDIT-WF" /> </logger> <logger name="org.activiti5" level="error" additivity="true"> <appender-ref ref="FILE-AUDIT-WF" /> </logger> <!--/springProfile--> <springProfile name="prod"> <logger name="com.keuroa.em" level="WARN" additivity="false"> <appender-ref ref="FILE-AUDIT" /> </logger> <logger name="org.springframework" level="WARN" additivity="false"> <appender-ref ref="FILE-AUDITSPRING" /> </logger> <logger name="org.activiti" level="WARN" additivity="false"> <appender-ref ref="FILE-AUDIT-WF" /> </logger> <logger name="org.activiti5" level="WARN" additivity="false"> <appender-ref ref="FILE-AUDIT-WF" /> </logger> </springProfile> <logger name="org.springframework.security" level="ERROR" /> </configuration> 但是在{server}/logs/tomcat/catalina.out,我明白了 7:01:33.324 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.persistence.entity.TimerJobEntityImpl.selectTimerJobsToExecute - ==> Preparing: select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RU_TIMER_JOB RES where DUEDATE_ <= ? and LOCK_OWNER_ is null ) a where ROWNUM < ?) where rnum >= ? 17:01:33.325 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.persistence.entity.TimerJobEntityImpl.selectTimerJobsToExecute - ==> Parameters: 2024-11-07 17:01:33.324(Timestamp), 2(Integer), 1(Integer) 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.persistence.entity.TimerJobEntityImpl.selectTimerJobsToExecute - <== Total: 0 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.db.DbSqlSession - Flushing dbSqlSession 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.db.DbSqlSession - flush summary: 0 insert, 0 update, 0 delete. 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.db.DbSqlSession - now executing flush... 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.apache.ibatis.transaction.managed.ManagedTransaction - Closing JDBC Connection [Transaction-aware proxy for target Connection [ProxyConnection[PooledConnection[oracle.jdbc.driver.T4CConnection@65a0287e]]]] 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.springframework.orm.jpa.JpaTransactionManager - Initiating transaction commit 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.springframework.orm.jpa.JpaTransactionManager - Committing JPA transaction on EntityManager [org.eclipse.persistence.internal.jpa.EntityManagerImpl@7591a8b2] 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.springframework.orm.jpa.JpaTransactionManager - Closing JPA EntityManager [org.eclipse.persistence.internal.jpa.EntityManagerImpl@7591a8b2] after transaction 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor - --- AcquireTimerJobsCmd finished -------------------------------------------------------- 17:01:33.326 [activiti-acquire-timer-jobs] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor - 请查看关于日志分离的官方 logback 指南并应用其中描述的建议。
我有一个 spring-boot Web 应用程序,它利用 logback 的 MDC 上下文来用自定义数据丰富日志。我有以下实现,可以使用一些自定义数据
我正在使用 logback 0.9.21 。不幸的是,它将所有消息打印到单行,没有行结束符,甚至是错误的。 我已经正确设置了模式: %d{HH:mm:ss...
我们已将其中一项服务更新至最新的 Spring 版本。从那时起,我们就有了以下详细日志记录 09:30:10,622 |-ch.qos.logback.classic.util.ContextInitializer@62fe6067 中的信息 - H...
我想在我的日志中包含容器 ID。我正在使用 logback 作为日志记录工具。如何在logback-spring.xml配置中获取容器ID。我的想法,因为容器 ID 是 docker 中的主机名
Jetty下运行的MyServerClass使用Logback classic: 记录器 logger = (Logger) LoggerFactory.getLogger(MyServerClass.class);` 在 TestNG 和 Selenium Webdriver 的单独 Maven 模块中,我...
Logback 无法在 JLink 构建的 JavaFX 映像中工作
我有一个使用 Maven 构建的 JavaFX 应用程序,它使用 logback-classic 作为 SLF4J 提供程序。我正在使用 javafx-maven-plugin 来运行应用程序并构建 jlink 图像。 当我使用 mvn j 运行应用程序时...
在本地计算机上运行 Docker 容器时,“日志系统无法使用‘null’的配置进行初始化”
我有一个简单的 Spring Boot API 项目,当我在本地计算机上执行可启动的 jar 文件或 Google Kubernetes Engine 上的 docker 映像时,该项目运行良好,但在使用 docker run on 时会发出错误...
在 Spark StandAlone 上使用 Logback 进行日志记录
我们使用 Spark StandAlone 2.3.2 和 logback-core/logback-classic 以及 1.2.3 有非常简单的 Logback 配置文件,它允许我们将数据记录到特定目录,并且在本地我可以