【问题标题】:Logback can't write in consoleLogback 无法在控制台中写入
【发布时间】:2018-01-12 02:43:00
【问题描述】:

我在我的 Spring Boot 应用程序中使用 Logback。

问题是 logback 不要在 'eclipse' 控制台中为我的 2 个包 daoweb 打印我的记录器消息。

日志文件写入没有任何问题,并打印我的记录器消息。

我是 root,所以我可能应该在控制台中看到我的记录器消息。

  • logger.info("Page X INFO");
  • logger.debug("Page X 调试");

这是我的 logback.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- Send debug messages to System.out -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Send debug messages to a file at "C:/logs/Log.log" -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>C:/logs/Log.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>C:/logs/Log.%i.log.zip</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <logger name="package.web" level="INFO" >
            <appender-ref ref="FILE" />
    </logger>
    <logger name="package.dao" level="DEBUG" >
            <appender-ref ref="FILE" />
    </logger>

    <!-- By default, the level of the root level is set to DEBUG -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
         <appender-ref ref="FILE" />
    </root>
</configuration>

【问题讨论】:

  • 如何获得记录器? LoggerFactory.getLogger( Classname.class ) 或明确的getLogger( "package.web" )?
  • 我正在使用这个:private final Logger logger = LoggerFactory.getLogger(this.getClass());然后我写我的消息,比如 logger.info("Page X INFO");
  • 您可以尝试改用getLogger( WhatEverClassName.class )。如果您收到重复条目,请从 logger 配置中删除 appender refs。正如我在更新中所写,我希望附加程序是从根目录继承的。此外,您可以将 private final static 设为推荐模式。

标签: java spring-mvc logging spring-boot logback


【解决方案1】:
<logger name="package.web" level="INFO" >
        <appender-ref ref="FILE" />
</logger>

您需要添加控制台附加程序。

<logger name="package.web" level="INFO" >
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
</logger>

更新:我刚刚重新阅读了 logback 配置文件。实际上,这两个应该从根继承两个附加程序。因此,您可以尝试不指定任何 appender-ref 并查看会发生什么。如果没有输出写入文件,那么也没有 - 那么有一些很奇怪的东西。如果可加性标志设置为 false,我会期望这种行为。但是默认是appender累积。

【讨论】:

  • 它可以工作,正如你所说的,它们应该从根继承。 谢谢
  • 我最后的代码是:
猜你喜欢
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多