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