日志处理(三) 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");
- }
- }
- /*
- * 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);
- }
- }
- }
- }
- }
- <?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>
日志处理(三) logback 手动加载(转)的更多相关文章
- 使用angular.bootstrap() 完成模块的手动加载
之前我们看到使用ng-app指令,可以实现模块的自动加载.现在我们看下,angular中如何手动加载模块.需要使用到angular.bootstrap这个函数. <html> <he ...
- AngularJS中多个ng-app(手动加载模块)
1.当有多个ng-app时:(首先是要加载angularJS) <div ng-app=""> <p>姓名:<input type="tex ...
- angularjs 手动加载
利用ng-app可以完成自动加载,如果不利用ng-app.那么使用bootstrarp实现手动加载模块 <html> <head> <script src="a ...
- TP中手动加载类库
加载第三方类库,包括不符合命名规范和后缀的类库,以及没有使用 命名空间或者空间和路径不一致的类库.可手动加载. // 导入Org类库包 Library/Org/Util/Date.class.php类 ...
- AngularJS之手动加载模块app和controller
使用ng的页面中一般都是使用模块自动加载,页面的结构一般是这样的 加载angularjs脚本 加载业务代码脚本(或者写在script标签中) html结构代码(带有ng指令) 就像这样 app.htm ...
- mybatis(三)懒加载
懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为 ...
- java基础-jdbc——三种方式加载驱动建立连接
String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8" ...
- [Q]手动加载菜单方法
一般情况下,安装程序会自动安装依云软件菜单,但可能由于某些原因未能自动安装的话,您可以手动加载菜单,步骤如下: 在AoutCAD命令行输入"CUILOAD",会弹出"加载 ...
- EF的三种数据加载方式
EF的关联实体加载有三种方式:Lazy Loading,Eager Loading,Explicit Loading,其中Lazy Loading和Explicit Loading都是延迟加载. (一 ...
随机推荐
- [UIImage _isCached]: message sent to deallocated instance
本文转载至 http://zhuhaibobb.blog.163.com/blog/static/2744006720124191633375/ 这几天做了个APP打开20份钟左右就强制退 ...
- 设置eclipse中python脚本的编码格式
今天在运行python脚本时报如下错误: SyntaxError: Non-ASCII character '\xe5' in file D:\pythonlearn1\src\day01\direc ...
- 工作表(Worksheet)基本操作应用示例
在编写代码时,经常要引用工作表的名字.知道工作表在工作簿中的位置.增加工作表.删除工作表.复制工作表.移动工作表.重命名工作表,等等.下面介绍与此有关及相关的一些属性和方法示例. [示例04-01]增 ...
- LeetCode-Combination Sum IV
Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...
- LeetCode 笔记系列二 Container With Most Water
题目:Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai ...
- 160415、sql语句sort排序,sort为空的在后面
按sort排序,sort为空的在后面 select * from 表名 order by (case when sort is null or sort='' then 1 else 0 end),s ...
- sql语句中left join、right join 以及inner join之间的使用与区别
sql语句中left join.right join 以及innerjoin之间的使用与区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join( ...
- ZOJ 3715 Kindergarten Election
At the beginning of the semester in kindergarten, the n little kids (indexed from 1 to n, for conven ...
- 分享:宽恕的艺术 Forgive
宽恕的艺术 To forgive may be divine, but no one ever said it was easy. 宽恕是神圣的,但是没有人说很容易做到宽恕别人. When someo ...
- The Personal Touch Client Identification 个性化接触 客户识别
w服务器要知道和谁在交谈. HTTP The Definitive Guide Web servers may talk to thousands of different clients simul ...