log4j2 と logback の設定ファイルメモ

今更、サンプルとしてメモしておきたかったので。。。
log4j2
Maven pom.xml の記述

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.36</version>
</dependency>

Log4j 1.2 → Log4j2 の為に、log4j-1.2-api を使う。
Commons Logging → Log4j2 の為に、log4j-jcl を使う。
SLF4J → Log4j2 の為に、log4j-slf4j-impl

(参考)https://howtodoinjava.com/log4j2/maven-gradle-config/

slf4j-api を使うなら、1.7.36 でないと
以下のメッセージが出てしまう。

SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier.
SLF4J: Ignoring binding found at [jar:file:/C:/Users/xxxxx/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.20.0/log4j-slf4j-impl-2.20.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See https://www.slf4j.org/codes.html#ignoredBindings for an explanation.

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off">
  <Properties>
    <Property name="format1">[%d{yyyy-MM-dd HH:mm:ss.SSS}],[%-5p],[%c#%M]-%L, %m%n</Property>
  </Properties>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout>
        <pattern>${format1}</pattern>
      </PatternLayout>
    </Console>
    <RollingFile name="File" fileName="/var/log/sample.log" filePattern="/var/log/sample.%d{yyyy-MM-dd}.log">
      <PatternLayout>
         <pattern>${format1}</pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy interval="12" modulate="true" />
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="DEBUG">
      <AppenderRef ref="Console" level="INFO"/>
    </Root>
    <Logger name="software.amazon.awssdk" level="WARN" />
    <Logger name="software.amazon.awssdk.request" level="INFO" />
    <Logger name="org.apache.ibatis.transaction" level="WARN" />
    <Logger name="org.mybatis.guice.transactional" level="WARN" />
    <Logger name="org.labo" level="DEBUG">
       <AppenderRef ref="File"/>
    </Logger>
  </Loggers>
</Configuration>

logback
Maven pom.xml の記述

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-core</artifactId>
   <version>1.4.6</version>
</dependency>
<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>1.4.6</version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>2.0.7</version>
</dependency>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
   <Target>System.out</Target>
   <encoder>
      <Pattern>%-23d{yyyy/MM/dd HH:mm:ss.SSS} %-5p[%thread][%class#%method]%m%n</Pattern>
   </encoder>
</appender>
<appender name="STDOUT_DEBUG" class="ch.qos.logback.core.ConsoleAppender">
   <Target>System.out</Target>
   <encoder>
      <Pattern>%-23d{yyyy/MM/dd HH:mm:ss.SSS} %-5p[%thread][%class#%method:%line]%m%n</Pattern>
   </encoder>
</appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <File>/var/log/sample.log</File>
   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>/var/log/sample.%d{yyyy-MM-dd}.log</FileNamePattern>
      <maxHistory>12</maxHistory>
   </rollingPolicy>
   <encoder>
      <charset>UTF-8</charset>
      <Pattern>%-23d{yyyy/MM/dd HH:mm:ss.SSS} %-5p[%thread][%class#%method:%line]%m%n</Pattern>
   </encoder>
</appender>

<root level="OFF">
    <appender-ref ref="STDOUT" />
</root>

<logger name="org.abc" level="info" />
<logger name="org.labo">
   <level value="debug" />
   <appender-ref ref="FILE" />
</logger>

</configuration>

root の level を OFF にすることで下記 logger でレベルを override