无法在logback.xml中应用<pattern>

问题描述 投票:0回答:2

我正在尝试使用链接在 Logback 中创建自定义布局,

在 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 标签。可以吗?

有人可以帮我吗?

java xml logging customization logback
2个回答
1
投票

正如您从链接中看到的,默认编码器是

PatternLayoutEncoder
,它支持模式。如果您确实想拥有这两种功能,您可以尝试子类化
LayoutWrappingEncoder
并自己添加模式功能(或者可能使用一些巧妙的组合)。


0
投票

您需要在布局内有图案

<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>
© www.soinside.com 2019 - 2024. All rights reserved.