logback.xml Example
これは、共有のためだけに、私のプロジェクトで使用されているいくつかのlogback.xmlの例です。
P.S Tested with Logback 1.2.3
1. コンソールにログを送信
すべてのロギングはコンソールにリダイレクトされます。
logback.xml
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
2. ログをファイルに送信+ファイルを回転
2.1 All logging will be redirected to a file logs/app.log. さらに、このログファイルは毎日、またはファイルサイズが10 MBを超えるとアーカイブされます。
logback.xml
${HOME_LOG} logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz 10MB 20GB 60 %d %p %c{1.} [%t] %m%n
2.2 Below SizeAndTimeBasedFNATP example is deprecated, it may still work, but it is better to use the above new SizeAndTimeBasedRollingPolicy example.
logback.xml
${DEV_HOME}/debug.log %d{yyyy-MM-dd HH:mm:ss} - %msg%n ${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log 10MB
3. エラーログをメールで送信する
logback.xml
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n smtp.mailgun.org 25 123 123 TO_EMAIL RO_ANOTHER_EMAIL FROM_EMAIL TESTING: %logger{20} - %m
メールを送信するには、このjavax.mailが必要です
pom.xml
com.sun.mail javax.mail 1.6.2
5. 非同期ログ
これにより、ロギングが高速になります。
logback.xml
6. SiftingAppender
ログを別のログファイルに送信します。ログファイル名は実行時にMDCを介して定義されます。
logback.xml
logFileName head0 ${DEV_HOME}/${logFileName}.log %d{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{35} - %msg%n ${DEV_HOME}/${logFileName}.%i.log.zip 1 10 10MB
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
//...
public void run() {
MDC.put('logFileName', "head1");
logger.debug("hello");
MDC.remove('logFileName');
}
Note
この完全なLogback
SiftingAppender exampleを参照してください
7. プログラムでログファイル名を設定する
System.setPropertyを介して、プログラムでログファイル名${log.name}を設定します
logback.xml
${USER_HOME}/${log.name}.error %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n ${USER_HOME}/${log.name}.log %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n
TestRunApp.java
package com.example.core;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestRunApp {
//No static, else log.name.IS_UNDEFINED.log
private final Logger logger = LoggerFactory.getLogger(TestRunApp.class);
public static void main(String[] args) {
//Set this before the logger start.
System.setProperty("log.name", "abcdefg");
TestRunApp obj = new TestRunApp();
obj.start();
}
private void start() {
logger.debug("------ Starting Ant------");
//...
}
}
出力
Debug log file path /home/example/ant/logs/abcdefg.log Error log file path /home/example/ant/logs/abcdefg.error
Note
この完全な例を参照してくださいLogback – Set
log file name programmatically