代码之家  ›  专栏  ›  技术社区  ›  Henrique Ferreira

Logback是否可以读取记录器参数?

  •  0
  • Henrique Ferreira  · 技术社区  · 8 年前

    在logback中,我配置了我的logback。xml文件将调试和错误日志行分别放在单独的文件中进行调试。日志和错误。日志

    参数的想法是创建如下内容:

    logger.error("A new error occured with a param", 1);
    

    其中,1是传递给记录器的整数,应写入错误。类似日志:

    11:22:17.678 [main] ERROR c.j.example.logbackmavenexample.App - A new error occured with a param - 1
    

    我的logback。xml如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- System.out Appender -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
            </encoder>
        </appender>
    
       <appender name="debugFile" class="ch.qos.logback.core.FileAppender">
            <file>/Users/henriqueferreira/Desktop/separate-log/debug.log</file>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>DEBUG</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%ex{full}</pattern>
            </encoder>
       </appender>
    
       <appender name="errorFile" class="ch.qos.logback.core.FileAppender">
          <File>/Users/henriqueferreira/Desktop/separate-log/error.log</File>
               <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>ERROR</level>
                    <onMatch>ACCEPT</onMatch>
                    <onMismatch>DENY</onMismatch>
               </filter>
          <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%ex{full}</pattern>
          </encoder>
        </appender>
    
        <root level="DEBUG"><!-- Using the lowest level here -->
          <appender-ref ref="debugFile" />
          <appender-ref ref="errorFile" />
        </root>
    </configuration>
    

    是否可以在创建的日志文件中写入传递的参数?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Henrique Ferreira    8 年前

    多亏了@Bentaye,我才找到了答案。基本上,我可以传递一个标记,例如:

    Marker interesting = MarkerFactory.getMarker("INTERESTING");
    logger.debug(interesting, "something happened");
    

    它将按我的要求记录:

    12:37:59.060 [main] DEBUG c.j.example.logbackmavenexample.App - INTERESTING - something happened
    

    我只需要在logback中的文件模式中添加%标记。xml文件:

    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %marker - %msg%n%ex{full}</pattern>
    </encoder>