当前位置: 首页 > 知识库问答 >
问题:

logback--两个不同级别的相同记录器

凌蕴藉
2023-03-14
    <logger name="com.mypack" level="info" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>
     
    <logger name="TrackingLog" level="info" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>
     
     
    <logger name="PostBackLog" level="info" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>
     
    <root level="error" includeLocation="true">
       <appender-ref ref="CLOUD" />
       <appender-ref ref="RollingFile" />
       <appender-ref ref="STDOUT" />
    </root>

我还希望com.mypack的级别“trace”与“info”的行为方式相同。到目前为止,我还没有取得任何成功。我需要像这样的东西

    <logger name="com.mypack" level="info" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>
     
    <logger name="com.mypack" level="trace" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="TrackingLog" level="info" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>
     
     
    <logger name="PostBackLog" level="info" additivity="false">
        <appender-ref ref="CLOUD" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="STDOUT" />
    </logger>
     
    <root level="error" includeLocation="true">
       <appender-ref ref="CLOUD" />
       <appender-ref ref="RollingFile" />
       <appender-ref ref="STDOUT" />
    </root>

感谢你的帮助。

共有1个答案

东方新霁
2023-03-14

使用if条件设置不同的日志记录级别。

首先,需要对Janino库进行条件日志记录。引用janino并将其添加到pom.xml

<dependency>
  <groupId>org.codehaus.janino</groupId>
  <artifactId>janino</artifactId>
  <version>3.1.6</version>
 </dependency>

第二,添加环境变量设置为不同的日志记录级别。

your_key=your_value
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <target>System.out</target>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{100} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- if exists your key in environment variable -->
    <if condition='isNull("your_key")'>
        <!-- if your key exists -->
        <then>
            <logger name="com.mypack" level='debug'>
                <appender-ref ref="STDOUT" />
            </logger>
        </then>
        <!-- if your key doesn't exist -->
        <else>
            <logger name="com.mypack" level='info'>
                <appender-ref ref="STDOUT" />
            </logger>
        </else>
    </if>
</configuration>
 类似资料:
  • 如何在SL4J中配置日志记录?我的项目有很多类:class1、class2、Class3....我想做两件事:将所有类记录到一个名为FILE1的文件追加器中,并具有警告级别(class1、class2、class3...)将一个名为class1的类记录到具有调试级别的名为FILE2的文件追加器中。 问题是,当我将class1的记录器配置为具有WARN级别的FILE1 appender时,我不知道如

  • 我们有两个不同的ASP.NET应用程序启用了Log4net日志记录。它们都有相同的log4net1.2.10.0版本。

  • 问题内容: 如何配置Logback以将记录器的不同级别记录到不同的目的地? 例如,给定以下Logback配置,Logback会将消息记录到并将消息记录到吗? (请注意,此示例是第3章:Logback配置中所示示例的变形)。 问题答案: 更新:有关使用Groovy的基于所有配置的方法,请参见DeanHiller的答案。 好的,这是我最喜欢的xml方法。我为Eclipse版本执行此操作,因此我可以 单

  • 问题内容: 我想在我的应用程序(Spring Integration)中有两个日志文件,debug.log和main.log。我想在INFO级别运行main.log,在DEBUG级别运行debug.log。这可以通过追加程序上的过滤器完成。我想根据源将不同级别记录到附加程序。换一种说法 总结一下: 弹簧记录器 主要->错误 调试->调试 com.myapp记录器 主要->信息 调试->调试 因此,

  • 问题内容: 我的logback.xml中有这个添加器 因此,目前我将所有日志保存到一个文件中。如何使它像一个文件仅保存错误日志,而另一个文件保存所有其他日志? 我想在代码中仅使用1个logger实例,如下所示: 问题答案: 开始寻找logback类别,找到过滤器。 只需将过滤器说明添加到您的附加程序即可:

  • 我正在使用2个appender-控制台和自定义appender,称为MyAppender,它应该忽略所有级别低于ERROR的消息(也就是说,它应该只支持ERROR和FATAL)。控制台应该能够支持所有级别。我尝试了几种方法来定义它,但似乎过滤器不适用于根级附加器。如何实现这一点?我当前的log4j2定义: