我正在尝试使用链接在 Logback 中创建自定义布局,
我成功创建了日志文件。
问题是当我像这样在 logback.xml 的编码器标签中应用“模式”标签时,
<appender name="appLogFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>C:/tmp.log</fileNamePattern>
</rollingPolicy>
**<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern>
<layout class="com.dces.util.LoggingConsoleLayout" />
</encoder>
</appender>**
它不适用于创建的日志文件,并且我得到的内容没有日期和时间,如下所示。
-- [错误]main.java.com.srccodes.log.LogbackHello - 欢迎使用 Logback 的 HelloWorld 示例。 -- [ERROR]main.java.com.srccodes.log.LogbackHello - 虚拟错误消息。
实际上,如果我删除编码器标记中的 class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" ,模式可以正常工作,但我的自定义布局无法正常工作。
我想在编码器标签上应用 pattern 标签以及自定义 layout 标签。可以吗?
有人可以帮我吗?
正如您从链接中看到的,默认编码器是
PatternLayoutEncoder
,它支持模式。如果您确实想拥有这两种功能,您可以尝试子类化 LayoutWrappingEncoder
并自己添加模式功能(或者可能使用一些巧妙的组合)。
您需要在布局内有图案
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.dces.util.LoggingConsoleLayout" />
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</layout>
</encoder>