首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这段代码只在trace-log中追加,而不在其他日志中追加。我该如何纠正这个问题呢?

为什么这段代码只在trace-log中追加,而不在其他日志中追加。我该如何纠正这个问题呢?
EN

Stack Overflow用户
提问于 2016-06-17 19:34:19
回答 1查看 25关注 0票数 0
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
        <Property name="log-path">logs</Property>
    </Properties>
  <Appenders>
   <Console name="console-log" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
    </Console>
  <File name="trace-log" fileName="${log-path}/trace.log" immediateFlush="true" append="true">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
<File name="error-log" fileName="${log-path}/error.log" immediateFlush="true" append="true">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
<File name="debug-log" fileName="${log-path}/debug.log" immediateFlush="true" append="true">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
<File name="info-log" fileName="${log-path}/info.log" immediateFlush="true" append="true">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
  </Appenders>
  <Loggers>

    <Root level="error">
      <AppenderRef ref="error-log"/>
<AppenderRef ref="console-log"/>
    </Root>
<Root level="info">
      <appender-ref ref="info-log"/>
<AppenderRef ref="console-log"/>
    </Root>
<Root level="debug">
      <AppenderRef ref="debug-log"/>
<AppenderRef ref="console-log"/>
    </Root>
<Root level="trace">
      <AppenderRef ref="trace-log"/>
<AppenderRef ref="console-log"/>
    </Root>

  </Loggers>
</Configuration>

我上面写的代码只将所有内容附加到trace-log中。实际上,名为last的root只获取存储的所有日志信息。我该如何纠正这个问题呢?我希望所有的日志文件都能直观地工作。

EN

回答 1

Stack Overflow用户

发布于 2016-07-10 06:22:48

这里有几个问题:

  1. 您只能有一个根记录器。你有几个。Log4j只会使用其中的一个。
  2. 看起来你只想要一个特定的级别去访问每个文件。level属性表示“允许记录此级别或更高级别的事件”。因此,level=为“error”的根记录器将允许错误或致命级别的事件。info上的根记录器将允许级别为info、error或fatal的事件。

您可以尝试这样做:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Properties>
    <Property name="log-path">logs</Property>
  </Properties>
  <Appenders>
    <Console name="console-log" target="SYSTEM_OUT">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
    </Console>
    <File name="trace-log" fileName="${log-path}/trace.log" immediateFlush="true" append="true">
        <ThresholdFilter level="debug" onMatch="DENY" onMismatch="ACCEPT"/>
        <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
    <File name="error-log" fileName="${log-path}/error.log" immediateFlush="true" append="true">
        <Filters>
          <ThresholdFilter level="error" onMatch="NEUTRAL" onMismatch="DENY"/>
          <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="ACCEPT"/>
        </Filters>
        <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
    <File name="debug-log" fileName="${log-path}/debug.log" immediateFlush="true" append="true">
        <Filters>
          <ThresholdFilter level="debug" onMatch="NEUTRAL" onMismatch="DENY"/>
          <ThresholdFilter level="info" onMatch="DENY" onMismatch="ACCEPT"/>
        </Filters>            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
    <File name="info-log" fileName="${log-path}/info.log" immediateFlush="true" append="true">
        <Filters>
          <ThresholdFilter level="info" onMatch="NEUTRAL" onMismatch="DENY"/>
          <ThresholdFilter level="warn" onMatch="DENY" onMismatch="ACCEPT"/>
        </Filters>
        <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <AppenderRef ref="error-log"/>
      <AppenderRef ref="info-log"/>
      <AppenderRef ref="debug-log"/>
      <AppenderRef ref="trace-log/>
      <AppenderRef ref="console-log"/>
    </Root>
  </Loggers>
</Configuration>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37880557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档