只有 main class 的简单应用程序看不到 logback.xml
simple application with only main class doesn't see 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
进入控制台。
我做错了什么?
P.S.
我尝试打印:
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
您需要将其放在类路径的顶层。 maven/gradle 项目的标准位置是 src/main/resources
。 Gradle/maven 将在您的类路径中包含该资源目录(大多数 IDE 也能理解)。
我的项目结构:
如你所见,我试图将 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
进入控制台。
我做错了什么?
P.S.
我尝试打印:
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
您需要将其放在类路径的顶层。 maven/gradle 项目的标准位置是 src/main/resources
。 Gradle/maven 将在您的类路径中包含该资源目录(大多数 IDE 也能理解)。