LoginSignup
3
3

More than 5 years have passed since last update.

log4j2でコンソールとファイルで別のレベルを出力させる

Posted at

log4j2で、コンソールはINFOレベル、ファイルはTRACEレベルのような形で表示したいときがよくわからなかったので調べた結果。
AppenderRefにそれぞれのlevelを追加するとできるみたい。
ただし、上の層のRootでINFOレベルにしてしまった場合はDEBUGレベルやTRACEを下の層で指定しても表示できないので注意。

log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off" name="Module" packages="">
  <Properties>
    <Property name="ConsoleLoglayout">%d %highlight{%p - %m}{TRACE=blue}%n</Property>
    <Property name="FileLoglayout">%d %p %c{1.} [%t] %m%n</Property>
  </Properties>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="${ConsoleLoglayout}"/>
    </Console>
    <RollingFile name="File" fileName="app.log" filePattern="app-%d{yyyy-MM-dd}-%i.gz">
      <PatternLayout pattern="${FileLoglayout}"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="20 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="3"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <AppenderRef ref="Console" level="info"/>
      <AppenderRef ref="File" level="trace"/>
    </Root>
  </Loggers>
</Configuration>
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3