java-如何根据文件名登录到其他文件

我希望能够做到:

 

 

// A logger.
private static final Logger log = LoggerFactory.getLogger(Foo.class);
// Stats logger.
private static final Logger stats = LoggerFactory.getLogger("Stats");

每当我登录到stats(stats.info(…))时,我都希望日志条目进入一个名为Stats.log的文件.日志记录应正常运行.

我(可能是错误地)在Logback.xml中得到了以下内容:

 

A failed config that adds nothing to the question now ... removed.

我似乎找不到任何可以告诉我如何根据记录器名称选择附加器的信息.根据日志级别有很多选择.

添加

这是我最终得到的配置:

 

<configuration>

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>Log.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>Log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 1MB -->
        <maxFileSize>1MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!-- Check on startup too. -->
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>

    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender> 

  <appender name="STATS" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>Stats.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>Stats-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 1MB -->
        <maxFileSize>1MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!-- Check on startup too. -->
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>

    <encoder>
      <pattern>%date %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%level %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>

  <logger name="Stats" level="info">
    <appender-ref ref="STATS" />
  </logger>
</configuration>

它可以正常工作-尽管统计信息也记录到普通日志文件中,但我可能需要使用过滤器将其删除.

最佳答案

您需要将STATS Appender附加到Stats Logger并将其从根记录器中删除:

 

 

<root level="debug">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>

<logger name="Stats">
    <appender-ref ref="STATS" />
</logger>

那应该做.

另一种方法是在“ STATS” Appender上使用Filter.

过滤器实现一个为每个LoggingEvent调用的方法,并返回“是”,“否”或“不确定”(然后将执行链中的下一个过滤器)

基本上,您必须在“ STATS”附加程序上附加一个过滤器,该过滤器对统计记录器中的所有LoggingEvents表示“是”,对其他所有内容表示“否”.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值