logback 手动加载

本文转自:http://www.2cto.com/kf/201302/191149.html

一共两个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>    www.2cto.com
    <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> 
时间: 2024-11-06 07:09:46

logback 手动加载的相关文章

AngularJS中多个ng-app(手动加载模块)

1.当有多个ng-app时:(首先是要加载angularJS) <div ng-app=""> <p>姓名:<input type="text" ng-model="name" placeholder="请输入姓名" /></p> <p> {{name}} </p> </div> <div ng-app="">

TP中手动加载类库

加载第三方类库,包括不符合命名规范和后缀的类库,以及没有使用 命名空间或者空间和路径不一致的类库.可手动加载. // 导入Org类库包 Library/Org/Util/Date.class.php类库 import("Org.Util.Date"); // 导入Home模块下面的 Application/Home/Util/UserUtil.class.php类库 import("Home.Util.UserUtil"); // 导入当前模块下面的类库 impor

(六)使用angular.bootstrap完成模块的手动加载

之前我们看到使用ng-app指令,可以实现模块的自动加载.现在我们看下,angular中如何手动加载模块.需要使用到angular.bootstrap这个函数. <html> <head> <script src="angular.js"></script> <script> // 创建moudle1 var rootMoudle = angular.module('moudle1', []); rootMoudle.cont

使用angular.bootstrap() 完成模块的手动加载

之前我们看到使用ng-app指令,可以实现模块的自动加载.现在我们看下,angular中如何手动加载模块.需要使用到angular.bootstrap这个函数. <html> <head> <script src="angular.js"></script> <script> // 创建moudle1 var rootMoudle = angular.module('moudle1', []); rootMoudle.cont

TP_function(函数) 自动/手动 加载

自动加载函数 conf/config.php 配置 'LOAD_EXT_FILE'=>'string,encoding' //自动加载Member/Common/string.php和encoding.php 手动加载函数 使用核心函数load() load(@.sring); //手动加载Member/Common/string.php load(Common.array); //手动加载Common/Common/array.php

net core手动加载dll,无法自动加载其依赖项

用的net core版本是2.1,也许在后续的版本中已经修复了这个问题 今天在尝试用net core写demo的时候,发现了这个问题.因为都是使用DI,所以就没有我的网站项目里直接引用一些实现类库,而是放到了同一个目录下,在网站启动的时候用代码去加载进来.然而在实际的运行过程成中发现,指定的dll会自动加载,但是其依赖的nuget包里的dll不会被加载进来,在Google了很久,也发现了很多人提出过这个问题,在GitHub上也有人提过https://github.com/dotnet/coref

[MyBean说明书]-添加IApplicationContextEx01接口手动加载库文件

主控台接口实现了IApplicationContextEx01接口,可以手动执行加载DLL和配置文件,具体使用方法可以参见DEMO(samples\manualLoadLib)   IApplicationContextEx01 = interface(IInterface) ['{10009F97-1949-476D-9CE1-1AF003B47DCB}'] /// <summary> /// 加载库文件 /// </summary> /// <returns> //

C++手动加载CLR运行托管程序(CLR Hosting)

转载自:http://www.linuxidc.com/Linux/2012-10/72293.htm 机制介绍 有些时候主程序是通过C/C++实现的,但是我们希望通过托管代码来扩展非托管程序,从而也获得托管代码带来的一系列优点.比如开发效率高,自动垃圾回收等. 运行托管与非托管代码根本区别在于托管代码是进程首先加载CLR然后通过CLR运行托管程序,而非托管代码则是操作系统直接根据其PE Header加载程序分配内存从而运行.因此如果需要通过托管代码来扩展非托管程序,首先要加载CLR来使非托管程

tp5 加载第三方扩展类库与手动加载的问题

=============================================================== <?phpnamespace my; /*** 加载第三方类库*/ class Test{ public function sayHello(){ return 'hello'; }} ?> ---------------------------------- var_dump(  (new \my\Test())->sayHello()   ); ======