java logback手动加载配置文件

来源:互联网 发布:windows进安全模式 编辑:程序博客网 时间:2024/06/05 03:03

废话不多说直接上代码:

一共两个java文件,第一个是例子,第二个是配置文件加载类;

LogbackTest.java

/* * To change this template, choose Tools | Templates * and open the template in the editor. */package logbacktest;import ch.qos.logback.core.joran.spi.JoranException;import java.io.IOException;import org.slf4j.LoggerFactory;/** * * @author Administrator */public class LogbackTest {    /**     * @param args the command line arguments     */    public static void main(String[] args) throws IOException, JoranException {        LogBackConfigLoader.load("logback-log.xml");        org.slf4j.Logger logger = LoggerFactory.getLogger("snail");        logger.debug("Hello");    }}
LogBackConfigLoader.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package logbacktest;import java.io.File;import java.io.IOException; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext;import ch.qos.logback.classic.joran.JoranConfigurator;import ch.qos.logback.core.joran.spi.JoranException;import ch.qos.logback.core.util.StatusPrinter; /** * Simple Utility class for loading an external config file for logback * @author daniel */public class LogBackConfigLoader { public static void load (String externalConfigFileLocation) throws IOException, JoranException{LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();File externalConfigFile = new File(externalConfigFileLocation);if(!externalConfigFile.exists()){throw new IOException("Logback External Config File Parameter does not reference a file that exists");}else{if(!externalConfigFile.isFile()){throw new IOException("Logback External Config File Parameter exists, but does not reference a file");}else{if(!externalConfigFile.canRead()){throw new IOException("Logback External Config File exists and is a file, but cannot be read.");}else{JoranConfigurator configurator = new JoranConfigurator();configurator.setContext(lc);lc.reset();configurator.doConfigure(externalConfigFileLocation);StatusPrinter.printInCaseOfErrorsOrWarnings(lc);}}}}}

附上一个简单的logback-log.xml

<?xml version="1.0" encoding="UTF-8"?><configuration>    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">           <!-- encoder 默认配置为PatternLayoutEncoder -->           <encoder>               <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss}  %msg%n</pattern>           </encoder>       </appender>      <appender name="debug" class="ch.qos.logback.core.FileAppender">        <File>log/debug.log</File>        <Append>true</Append>        <encoder>            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss}  %msg%n</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">            <level>TRACE</level>        </filter>    </appender>    <logger name="snail" level="TRACE" additivity="false">         <appender-ref ref="debug"/>    </logger></configuration>