与Log4J和java.util.logging相比,基于Java的程序的现代日志记录工具具有许多新功能。
我一直在尝试在 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 配置文件,它允许我们将数据记录到特定目录,并且在本地我可以
当配置文件不是“本地”时,我想登录以打印文件中的日志消息,如果配置文件是本地的,那么我希望它打印到控制台和文件。 我的 logback.xml 如下。 当配置文件不是“本地”时,我想登录以打印文件中的日志消息,如果配置文件是本地的,那么我希望它打印到控制台和文件。 我的logback.xml如下。 <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- logger name="org.springframework.jdbc.core" level="debug" --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M %line - %msg%n</Pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_FILE}</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern> <!-- each file should be at most 10MB, keep 60 days worth of history, but at most 20GB --> <maxFileSize>10MB</maxFileSize> <maxHistory>10</maxHistory> <totalSizeCap>2GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35}.%M %line - %msg%n</pattern> </encoder> </appender> <logger name="com.mycom.name" level="info" additivity="false"> <appender-ref ref="FILE"/> <springProfile name="local"> <appender-ref ref="STDOUT"/> </springProfile> </logger> <logger name="com.mycom.name" level="debug" additivity="false"> <appender-ref ref="STDOUT"/> </logger> <!-- <root level="info"> <springProfile name="local"> <appender-ref ref="STDOUT"/> </springProfile> <appender-ref ref="FILE"/> </root> <springProfile name="local"> <root level="debug"> <appender-ref ref="STDOUT"/> </root> </springProfile> --> <root level="error"> <appender-ref ref="FILE" /> </root> </configuration> 我看到它忽略了 springProfile 标签并且根本不打印到控制台。 或者我错过了什么?? 我的日志中也有同样的错误: 忽略未知属性 [springProfile] 正如@Gremi64提到的,为了使带有springProfile标签的logback工作,你必须将其从logback.xml命名为logback-spring.xml。 更多详细信息请参见spring官方文档。
有没有办法为failsafe/surefire Maven 插件的每个分支编写单独的日志?
我们使用maven-failsafe-plugin与同时运行集成测试,因此我们将在不同进程中拥有多个JVM并行运行测试。 故障安全插件...
我在我的项目中使用SLF4J(1.6.1)+ logback(1.1.2)。在进行构建时,我注意到在获得“将当前配置注册为安全回退点”后,此日志记录了我的构建服务器...
使用 LoggingEventCompositeJsonEncoder 进行 Logback 在添加可抛出对象时不记录事件
我正在使用 Spring boot/Spring Cloud Stream 项目 我使用 Logback 进行日志记录,并使用 ConsoleAppender 和 LoggingEventCompositeJsonEncoder 作为编码器 当我尝试记录错误时,万一...
如何配置 slf4j 和 logback 以允许一个类记录到单独的文件?
我有一个多线程的 Java 类,我希望它记录到一个单独的文件中。我正在使用 Dropwizard,它使用 logback 并在我的 YAML 文件中进行配置,如下所示: 记录: # 默认值
我正在使用 logback 登录我的 Spring Boot 应用程序并使用以下模式: “%d [%thread] %-5p [%c] [%F:%L] [trace=%X{X-B3-TraceId:-},span=%X{X-B3-SpanId:-}] - %msg%n" 不...
当 logback.xml 位于 .war 包中时,使用 -Dlogback.configurationFile 设置特定的 logback.xml 文件
我有一个 logback.xml 文件,我想将其拆分为每个环境,例如 dev、prod。 我发现:如何在单个项目中使用带有 logback 的多个配置? 我发现我可以通过 -
所以我(尝试)开发一个 kotlin 控制台应用程序,用户可以在其中使用电子邮件注册,为了验证此电子邮件,我使用 dnsjava 库,但这需要我使用 slf4j a...
有没有办法禁用可爱但非常明显的 ASCII Spring boot 徽标: 。 ____ _ __ _ _ /\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ ...
Spring Boot 3.3.2:java.lang.ClassNotFoundException:ch.qos.logback.core.util.StatusPrinter2
我已将Spring Boot版本从3.2.2升级到3.3.2。 运行应用程序时,我遇到以下错误: 引起原因:java.lang.ClassNotFoundException:ch.qos.logback.core.util.