【问题标题】:Logback -custom level input in layout patternLogback - 布局模式中的自定义级别输入
【发布时间】:2016-10-08 06:03:23
【问题描述】:

我正在使用 logback 进行日志记录,并且在 logback.xml 中我有 控制台追加器作为

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>

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

我正在努力实现这样的目标......

time  thread  |-**CUSTOMLOGLEVEL**  xyz.class - Message.

为什么?我想通过定义日志级别轻松过滤消息 或其他一些指标。

例如:搜索日志级别为“CUSTOMLOGLEVEL”的日志。 有没有办法给出自定义日志级别或任何其他指示这是自定义生成的日志而不是某些框架生成的日志..

我进入了创建自定义类的方向。

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
         <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.logging.CustomLayout">
                             <param name="argument1" value="1" />
                             <param name="argument2" value="2" />

            </layout>
        </encoder>
    </appender>

但我不确定如何从外部输入这些参数。

如果我不清楚,请告诉我。

【问题讨论】:

  • 您可能希望使用 Markers 而不是自定义日志级别

标签: java logging logback appender


【解决方案1】:

SLF4J/Logback 用一个叫做 Markers 的特性解决了“我想做比日志级别更复杂的事情”的问题。

例如,将一些日志标记为“有趣”:

Marker interesting = MarkerFactory.getMarker("INTERESTING");
Logger logger = LoggerFactory.getLogger(getClass());
…
logger.info(interesting, "Something happened: {}", value)

在 PatternLayout 中,可以使用%marker 来记录与日志条目关联的标记。 (见%marker in the documentation。)

这类似于 a SLF4J FAQ entry 中关于为什么他们没有“致命”级别以及如何使用标记的内容。

另一个选项(因为您专门询问过滤以查看它是否是“自定义生成的日志而不是某些框架生成的日志”)是确保您的自定义日志都在一个名为您想要的记录器中(也许从com.yourcompany.custom.) 开始,只使用普通的记录器过滤。虽然以记录器所在的类命名通常非常方便,但有时为不同的记录器使用不同的名称更准确地表示您要记录的内容,并且还可以轻松过滤和搜索。

【讨论】:

  • 使用标记我可以将标记的日志记录到新的附加程序中。但是我们是否可以选择避免将那些标记的日志记录在用于休息的附加程序中?
  • @KarthikaiselvanR:我想您可能想就您正在处理的问题提出自己的新问题,包括您尝试使用的 logback 配置的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2020-12-29
  • 1970-01-01
  • 2015-09-21
相关资源
最近更新 更多