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 МБ.
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. Просеивание
Отправлять журналы в отдельный файл журнала, имя файла журнала определяется во время выполнения через 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. Программно установить имя файла журнала
Задайте имя файла журнала${log.name} программно, черезSystem.setProperty
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