我有一个Java独立应用程序。使用main方法,使用这两个导入:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
和
private static final Logger log = LoggerFactory.getLogger(PecadorDeLaPradera.class);
在同一个文件夹中,我还有logback.xml
,但我不知道如何告诉使用logback.xml
配置日志的程序
我找不到任何与org.apache.log4j.PropertyConfigurator
我在运行的Java类的同一文件夹中有这个logback.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- trace, debug, info, warn, error, fatal -->
<timestamp key="myTimestamp" datePattern="yyyy-MM-dd'_'HH-mm-ss.SSS"/>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<!-- To enable JMX Management -->
<jmxConfigurator/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{"yyyy-MM-dd HH:mm"} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>pecador.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>handler.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d{"yyyy-MM-dd HH:mm"} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<!-- <logger name="org.springframework.orm.jpa" level="debug" /> -->
<logger name="com.calzada.pecador" level="debug" />
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
我也运行appl。与程序参数:
-Dlogback.configurationFile=/Users/calzada/Dev/J2EE/eclipseWSJ2EE/myApp/src/com/calzada/pecador/logback.xml
我收到了这个错误:
java.util.MissingResourceException: Can't find bundle for base name -Dlogback.configurationFile=/Users/nullpointer/Development/J2EE/eclipseWSJ2EE/myApp/src/com/calzada/pecador/logback.xml, locale en_ES
使用的库是logback-classic-1.2.3.jar
答案 0 :(得分:1)
以下是logback如何自行配置:
Logback尝试在类路径中查找名为
logback-test.xml
的文件。如果未找到此类文件,则logback会尝试在类路径中查找名为
logback.groovy
的文件。如果找不到这样的文件,它会检查类路径中的文件
logback.xml
。如果未找到此类文件,则使用服务提供者加载工具(在JDK 1.6中引入)通过在类路径中查找文件
com.qos.logback.classic.spi.Configurator
来解析META-INF\services\ch.qos.logback.classic.spi.Configurator
接口的实现。其内容应指定所需Configurator实现的完全限定类名。如果以上都不成功,则logback会自动使用
BasicConfigurator
自行配置,这会导致日志输出定向到控制台。
您还可以使用系统参数logback.configurationFile
将Logback指向特定配置文件。来自文档:
您可以使用名为“logback.configurationFile”的系统属性指定默认配置文件的位置。此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径。
java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
以上所有内容均来自docs。
根据您的问题,您有logback.xml
,但此文件与您的班级位于“同一文件夹”中。除非您的类在根包中,否则这意味着logback.xml
不在类路径的根目录中,因此Logback不会发现它。要使Logback从此文件配置自身,您可以执行以下操作之一:
logback.xml
复制到src/main/resources
一样简单)-Dlogback.configurationFile=/path/to/logback.xml