В Logback легко программно задать имя файла журнала:
- В
logback.xml
, объявляет переменную типа${log.name}
- В Java установите переменную через
System.setProperty("log.name ", "азбука")
1. Полный пример
1.1 Файл обратного входа, мы установим ${log.name }
переменная позже.
${USER_HOME}/${log.name}.error %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n ${USER_HOME}/${log.name}-${bySecond}.log %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n
1.2 В Java просто задайте имя файла через System.setProperty
package com.mkyong.core; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AntRunApp { private final Logger logger = LoggerFactory.getLogger(AntRunApp.class); public static void main(String[] args) { //Set this before the logger start. System.setProperty("log.name", "mkyong"); AntRunApp obj = new AntRunApp(); obj.start(); } private void start() { logger.debug("------ Starting Ant------"); //... } }
Выход
Debug log file path /home/mkyong/ant/logs/mkyong-20150323.221959.log Error log file path /home/mkyong/ant/logs/mkyong.error
2. Выход
2.1 Распространенная ошибка, обычно она вызвана статическим регистратором
. Например.
package com.mkyong.core; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AntRunApp { // static, this logger will be initialized before the program is run. // All logs will be redirected to log.name.rir_IS_UNDEFINED.log private static final Logger logger = LoggerFactory.getLogger(AntRunApp.class); private void start() { System.setProperty("log.name", "mkyong"); logger.debug("------ Starting Ant------"); //... } }
Чтобы исправить это , просто удалите статический
тип.
2.2 Если вы войдете в систему до System.setProperty
, это также вызовет общую переменную обратного входа НЕОПРЕДЕЛЕННУЮ
ошибку.
package com.mkyong.core; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AntRunApp { private final Logger logger = LoggerFactory.getLogger(AntRunApp.class); private void start() { //Please set the log name first! logger.debug("------ Starting Ant------"); System.setProperty("log.name", "mkyong"); } }
Рекомендации
- Logback.xml примеры
- Обратный вход – отдельный файл журнала для каждого потока
- Вход в систему – документация MDC
Оригинал: “https://mkyong.com/logging/logback-set-log-file-name-programmatically/”