Простое приложение только с основным классом не видит logback.xml
Структура моего проекта:
Как вы можете видеть, я пытался поместить logback.xml везде.
Я хочу настроить уровень информации журнала для корневого регистратора.
logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<!-- Send logs to both console and file audit -->
<logger name="kafka_test" level="info">
<appender-ref ref="STDOUT" />
</logger>
</configuration>
У меня есть следующий код:
public class Consumer {
private static final String name = "consumer_1";
private static Logger logger = LoggerFactory.getLogger(Consumer.class);
public static void main(String[] args) throws InterruptedException {
logger.debug("Consumer {} started", name);
...
И это печатает
17:51:45.096 [main] DEBUG kafka_test.Consumer - Consumer consumer_1 started
в консоль.
Что я не прав?
PS
Я пытался напечатать:
System.out.println(Consumer.class.getClassLoader().getResource("kafka_test/Consumer.class"));
Это печатает:
file:/D:/work/kafka_samples/out/production/classes/kafka_test/Consumer.class
я кладу logback.xml
в
D:\work\kafka_samples\out\production\classes\kafka_test
Но это все еще не работает
Решение:
Я положил logback.xml
в
D:\work\kafka_samples\out\production\classes
1 ответ
Решение
Вы должны поместить его на верхний уровень вашего classpath. Стандартное местоположение для проекта Maven/ Gradle будет в src/main/resources
, Gradle/maven будет включать этот каталог ресурсов в ваш путь к классам (и большинство IDE тоже это поймут).