logback раздельное логирование проблема - все пишется вместе (нужно отдельно в консоль, и с другого места в файл)
У меня есть многомодульный проект, задача каждого модуля из которого - первого писать логи в файл, другого в консоль. Я вызываю их из внешнего класса. Для каждого у меня есть logback.xml(config) Должно быть, он читает первый попавшийся файл конфигурации с этим названием, в моем случае он из двух модулей записывает в файл, все вместе, но я хочу сделать так, чтобы один модуль логи писал в консоль, другой в файл. Подскажите, можно ли как-то программно сбросить файл конфигурации в коде и присвоить ему другой? например, сбросить с файлового и настроить на консоль, если изменить название одного файла конфига на какой-нибудь logback2.xml
Структура:
logconsole/logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
logfile/logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logfile/src/main/log/slf4jlogbackexample.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>slf4jlogbackexample.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>10</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
В каждом модуле есть класс с примитивной логикой главная задача которых просто записывать логи. Из внешнего главного класса я вызываю их так:
public class Main {
public static void main(String[] args) {
StupidFileClass fileClass = new StupidFileClass();
fileClass.someMethod();
StupidConsoleClass consoleClass = new StupidConsoleClass();
consoleClass.someMethod();
}
}
