「@ Slf4j」注釈付きクラスを使用したSpringブートプロジェクトでは、特定のクラスについては別のファイルにログを記録します。しかし、その方法を理解できませんでした。次のようにプロパティファイルから参照されるlogback-spring.xmlファイルが1つあります。
logging.config= path/to/logback-spring.xml
logging.file=myCurrentLogFile.log
今すぐ別のlogback-spring.xmlファイルを作成する必要がありますか?または、現在のファイルで構成できます。その場合、どのロガーをいつ使用するかを選択できます。
別のロガーとアペンダーを追加するだけです。たとえば、次のlogback.xml
を使用しました
<property name="LOGS_HOME" value="/var/applications/myProject/applogs/" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}myProject_log.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS_HOME}myProject_log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}myProject_audit.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss};%msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS_HOME}myProject_audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="com.myCompany.myProject" level="info" additivity="false">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="audit-log" level="info" additivity="false">
<appender-ref ref="FILE-AUDIT" />
<appender-ref ref="STDOUT" />
</logger>
<root level="error">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
コードでは、次の方法でロガーにアクセスできます。
private static Logger audit = LoggerFactory.getLogger("audit-log");
これはaudit-log
ロガーを取得し、FILE-AUDIT
アペンダーを使用します。
「standart」アペンダーは、指定されたパッケージ内にあるすべてのクラスで使用されます。
private static Logger logger = LoggerFactory.getLogger(MyApplication.class);
これは<logger name="com.myCompany.myProject" level="info" additivity="false">
を使用し、明らかにFILEアペンダーを使用します。
2つの異なるファイルが必要な場合は、<appender>
タグの下に次のコードを追加する必要があります。
<File name="FILE-AUDIT-SUIVI" fileName="${LOGS_HOME}myProject_audit.log">
<PatternLayout>
<pattern>
${LOGS_HOME}
</pattern>
</PatternLayout>
</File>
<RollingFile name="FileAppender" fileName="${LOGS_HOME}archived/myProject_audit.log"
filePattern="${LOGS_HOME}archived/myProject_audit.%d{yyyy-MM-dd}.%i.log">
<PatternLayout>
<Pattern>${LOGS_HOME}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB" />
</Policies>
<DefaultRolloverStrategy max="1" />
</RollingFile>