标签: logback

在 logback.xml 中禁用 DEBUG 级别日志,保留 INFO 和 ERROR 级别日志

我的 logback.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <jmxConfigurator/>
  <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>

  <property name="LOG_DIR" value="/tmp/logs"/>
  <springProperty name="appName" source="spring.application.name"/>
  <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>
        some pattern
      </Pattern>
    </layout>
  </appender>

  <logger additivity="false" level="DEBUG"
    name="xyz">
    <appender-ref ref="STDOUT"/>
  </logger>
  <root level="ERROR">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我试图从整个应用程序禁用调试日志,但找不到方法。我想打印 INFO、ERROR 级别的日志。

spring log4j logback slf4j disable

2
推荐指数
1
解决办法
7866
查看次数

在使用 Logback 记录计算数据时,我们应该使用 isDebugEnabled() 吗?

尽管在一些教程中,例如这里参数化日志记录部分),说Logback消息{}参数化帮助我们避免日志记录数据中不必要的计算 (如果日志记录级别不是DEBUG):

logger.debug("The bonus for employee {} is {}", 
   employee.getName(), employeeService.calculateBonus(employee));
Run Code Online (Sandbox Code Playgroud)

我测试(在 logback 版本上1.2.3)该优化仅适用于不必要的toString()参数对象 - 因为这适用log4j

Logback文档不包含此细节。

那么,我们必须使用 isDebugEnabled() 来处理所有“昂贵”的日志记录,不是吗?

java logging logback

2
推荐指数
1
解决办法
3604
查看次数

如何将 PrettyPrintingJsonGeneratorDecorator 和 MaskingJsonGeneratorDecorator 结合在一起?

我尝试将logstash-logback-encoder版本配置6.4为打印漂亮的 JSON 格式

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

输出pretty print如预期。然后我继续进行配置,屏蔽为

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
            <defaultMask>XXXX</defaultMask>
            <path>password</path>
        </jsonGeneratorDecorator>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

输出marked也符合预期。

无论如何,当我将这两者结合在一起时,它只做一件事,或者pretty printmasked

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
        <jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
            <defaultMask>XXXX</defaultMask>
            <path>password</path>
        </jsonGeneratorDecorator>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

它只做masked, 但是not pretty print.

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
            <defaultMask>XXXX</defaultMask>
            <path>password</path>
        </jsonGeneratorDecorator>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
    </encoder> …
Run Code Online (Sandbox Code Playgroud)

java logback logstash logstash-logback-encoder

2
推荐指数
1
解决办法
3555
查看次数

检测到 Logback 配置错误:[springProfile] 没有适用的操作,当前 ElementPath 是 [[configuration][springProfile]]

我有一个带有 Logback 的 Springboot 应用程序。这场战争正在 Docker 容器中的 Liberty Web 服务器中运行

版本:Springboot 2.5.3 Logback 1.2.3

我看到一个奇怪的行为,如果我在 Mac 或 Redhat 上运行此容器,应用程序会正常启动并按预期记录。但是,当在 Ubuntu 中运行相同的 docker 容器时,我从 Logback 的 Joran 解释器中看到以下错误:

...
08:07:53,308 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework] to WARN
08:07:53,308 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.hibernate] to WARN
08:07:53,308 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [springfox] to WARN
08:07:53,313 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@88:32 - no applicable action for [springProfile], current ElementPath  is [[configuration][springProfile]]
08:07:53,313 |-ERROR …
Run Code Online (Sandbox Code Playgroud)

java ubuntu logback spring-boot

2
推荐指数
2
解决办法
3453
查看次数

尝试使用 logback 打印堆栈跟踪,但堆栈跟踪未打印

我使用以下代码来打印 try catch 块中发生的任何异常,但是当异常发生时 logback 不会打印完整的堆栈跟踪,而是写入一行错误(没有明确说明导致它的原因. 如何在 logback 输出中打印出完整的堆栈跟踪?

Try 捕获异常的 catch 块

            try {
                // Create JMS objects
                context = cf.createContext();
                destination = context.createQueue("queue:///" + QUEUE_NAME);
                ((MQDestination)destination).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);
            } catch (Exception e) {
                // catch any exception occurred while trying to connect to the destination queue Manager
                e.printStackTrace();
                LOGGER.info(e.toString());
                return "Unable to connect to the destination queue Manager '"+QMGR +"'";
            
            }
Run Code Online (Sandbox Code Playgroud)

重新登录错误输出:

21:18:10.748 [http-nio-8010-exec-4] INFO  com.mqMessageHandler.Webcontroller - com.ibm.msg.client.jms.DetailedJMSRuntimeException: JMSWMQ0018: Failed to connect to queue manager 'KAU.TST' with connection mode 'Client' …
Run Code Online (Sandbox Code Playgroud)

java logback spring-boot

2
推荐指数
1
解决办法
5782
查看次数

springboot2.7.5启动错误 Caused by: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

我引入了spring-boot-starter-web,使用了自带的spring-boot-starter-logging框架,在yaml中指定了配置文件,启动报错yaml:

logging:
  level:
    root: info
    com.felix.flink.tutorial.api: debug
  config: classpath:logback-spring.xml
Run Code Online (Sandbox Code Playgroud)

行家:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.felix</groupId>
        <artifactId>flink-tutorial-component</artifactId>
        <version>${revision}</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

例外:

23:45:33.009 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@7abaedae
Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:293)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:118)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:238)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
    at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:79)
    at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:56)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
    at …
Run Code Online (Sandbox Code Playgroud)

java logging logback slf4j spring-boot

2
推荐指数
1
解决办法
1688
查看次数

登录配置文件

我是新登录用户,并且有一个一般性问题。我将在Eclipse中进行开发,并且想知道将配置文件放置在哪里。例如我的类Test.java位于ProjectName / src / default package / Test.java中

我在哪里放置配置文件?我需要创建一个新文件夹还是将其放置在同一位置?

logback slf4j

1
推荐指数
1
解决办法
3735
查看次数

Spring Boot Logback DB Appender属性

嗨,我想DBAppender在我的Spring Boot应用程序中使用A。我想从application.properties文件中检索数据库连接属性。但是,似乎无法识别它们。请记住,我正在使用,Spring Boot 1.2.x因此无法使用logback-spring.xml

我正在使用的配置如下:

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">

            <driverClass>${spring.datasource.driver-class-name}</driverClass>
            <url>${spring.datasource.url}</url>
            <user>${spring.datasource.username}</user>
            <password>${spring.datasource.password}</password>
        </connectionSource>
    </appender>
Run Code Online (Sandbox Code Playgroud)

java spring logback

1
推荐指数
1
解决办法
4136
查看次数

在Java中,使用logback框架,有一种方法可以为繁琐的日志消息动态配置限制

我们在现场部署了一个系统,该系统具有使用logback日志记录框架的Java服务.每个服务都有自己的logback配置文件.

我们发现每秒多次以WARN级别发出特定的日志消息.我们真的只对看到这个消息感兴趣,例如,一次/分钟,以便我们知道问题正在发生; 但是我们不想提高类的日志记录级别,以便丢弃INFO级别的其他消息.

修改代码不是一种选择,也不会对涉及重新启动违规服务的系统进行任何修改.但是,我们可以修改日志配置.

有没有办法在logback中通过XML配置文件来实现这种行为?

更新 消息类似,但不相同; 例如:

WARN The following ID will be dropped: 12345
WARN The following ID will be dropped: 54321
Run Code Online (Sandbox Code Playgroud)

java logback

1
推荐指数
1
解决办法
681
查看次数

SLF4J - 它如何知道要使用的日志类型

SLF4J是一个包装器/外观类,因此您可以使用许多不同的日志类型,例如logback,log4j等.假设我想使用logback和log4j,甚至第三个类似java.util.logging.当我写这样的日志:

    public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎么知道它使用哪个日志框架?假设我希望它使用logback进行此调用,我怎么知道它不使用另一个框架?

java logback slf4j

1
推荐指数
1
解决办法
642
查看次数