日志LogBack

需要自定义一个Listener 来加载配置文件

package com.sj.common.listener;
import javax.servlet.ServletContextEvent;  
import javax.servlet.ServletContextListener;  
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;  
/** 
 * 
 * @author longload
 *
 */
public class LogbackConfigListener implements ServletContextListener {  
    private static final Logger logger = LoggerFactory.getLogger(LogbackConfigListener.class);  
     
    private static final String CONFIG_LOCATION = "logbackConfigLocation";  
    @Override  
    public void contextInitialized(ServletContextEvent event) {  
        //从web.xml中加载指定文件名的日志配置文件  
        String logbackConfigLocation = event.getServletContext().getInitParameter(CONFIG_LOCATION);  
        String fn = event.getServletContext().getRealPath(logbackConfigLocation);  
        try {  
            LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();  
            loggerContext.reset();  
            JoranConfigurator joranConfigurator = new JoranConfigurator();  
            joranConfigurator.setContext(loggerContext);  
            joranConfigurator.doConfigure(fn);  
            logger.debug("loaded slf4j configure file from {}", fn);  
        }  
        catch (JoranException e) {  
            logger.error("can loading slf4j configure file from " + fn, e);  
        }  
    }  
    @Override  
    public void contextDestroyed(ServletContextEvent event) {  
    }  
}

 

 

 

在web.xml中加入

 

[xhtml]  view plain copy
 
  1. <!--初始化日志配置文件 -->  
  2.  <listener>  
  3.      <listener-class>  
  4.          com.sj.common.listener.LogbackConfigListener  
  5.      </listener-class>  
  6.  </listener>  
  7.  <context-param>  
  8.      <param-name>logbackConfigLocation</param-name>  
  9.      <param-value>WEB-INF/logback.xml</param-value>  
  10.  </context-param>  

 

 

 配置文件

 

<?xml version="1.0" encoding="UTF-8"?>  
<configuration>  
   <jmxConfigurator />  
     
   <!-- 控制台输出日志 -->  
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
   	<Encoding>UTF-8</Encoding>  
       <layout class="ch.qos.logback.classic.PatternLayout">  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}  %logger{36} -line: %L - %msg%n</pattern>  
        </layout>  
    </appender>  
      
    <!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份)-->  
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    	<Encoding>UTF-8</Encoding>   
        <File>service_debug.log</File>  
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">  
            <FileNamePattern>service.log.%i.bak</FileNamePattern>  
            <MinIndex>1</MinIndex>  
            <MaxIndex>12</MaxIndex>  
        </rollingPolicy>  
  
        <triggeringPolicy  
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  
            <MaxFileSize>10MB</MaxFileSize>  
        </triggeringPolicy>  
        <layout class="ch.qos.logback.classic.PatternLayout">  
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -line: %L - %msg%n</Pattern>  
        </layout>  
    </appender>  
    
    <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">  
         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
            <level>ERROR</level>  
            <OnMismatch>DENY</OnMismatch>  
            <OnMatch>ACCEPT</OnMatch>  
        </filter>  
          
        <File>service-err.log</File>  
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">  
            <FileNamePattern>service-err.log.%i.bak</FileNamePattern>  
            <MinIndex>1</MinIndex>  
            <MaxIndex>3</MaxIndex>  
        </rollingPolicy>  
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  
            <MaxFileSize>10MB</MaxFileSize>  
        </triggeringPolicy>  
        <layout class="ch.qos.logback.classic.PatternLayout">  
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -line: %L - %msg%n</Pattern>  
        </layout>  
    </appender>  
  
  <!--这里指定logger name 是为jmx设置日志级别做铺垫 -->         
    <logger name="com.sj">  
        <level value="DEBUG" />  
        <appender-ref ref="STDOUT" />  
        <appender-ref ref="FILE" />  
        <appender-ref ref="FILE-ERROR" />  
    </logger> 
    <root>
     <level value="DEBUG" />  
        <appender-ref ref="STDOUT" />  
        <appender-ref ref="FILE" />  
        <appender-ref ref="FILE-ERROR" />  
    </root>
    
</configuration>   
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值