logback替代log4j

使用的jar包:    janino.jar    logback-access-1.0.11.jar     logback-classic-1.0.11.jar     logback-core-1.0.11.jar   slf4j-api-1.7.5.jar

 

logback.xml配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <property name="LOG_HOME" value="F:/loback/logs/" />

 <property name="LOG_PATTERNControl" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{80} [%file:%line] - %n       %msg%n" />
 <property name="LOG_PATTERN" value="%-1relative [%t] %-5level %logger{0} [%file:%line] - %msg%n " />


 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
  <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
   <!-- 取出springframework日志的输出 -->
   <evaluator>
    <expression>logger.contains("springframework")</expression>
   </evaluator>
   <OnMismatch>NEUTRAL</OnMismatch>
   <OnMatch>DENY</OnMatch>
  </filter>
  <!--
   %-4r - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} -%msg%n
   %d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %n %-4r % msg%n %d
   [%p] %L%n%m%n%n
  -->
  <encoder charset="UTF-8">
   <pattern>${LOG_PATTERNControl}</pattern>
  </encoder>
 </appender>
 <!-- 输出logback -->
 <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <append>true</append>
  <!--
   <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
   <level>INFO</level> </filter>
  -->

  <!-- 可让每天产生一个日志文件,最多 10 天,自动回滚 -->
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>${LOG_HOME}logback.%d{yyyy-MM-dd}.log</fileNamePattern>
   <maxHistory>2</maxHistory>
  </rollingPolicy>
  
  <!-- 生成文件超过2KB,打包成zip包
  <file>${LOG_HOME}zipLog.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
   <fileNamePattern>${LOG_HOME}zipLogback/log.%i.zip</fileNamePattern>
   <minIndex>1</minIndex>
   <maxIndex>3</maxIndex>
  </rollingPolicy>

  <triggeringPolicy
   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
   <maxFileSize>2KB</maxFileSize>  默认为10MB
  </triggeringPolicy>
   -->
  
  <!--
   %-1relative [%thread] %-5level %logger{0} - %msg%n
  -->
  <encoder>
   <pattern>${LOG_PATTERNControl}</pattern>
  </encoder>
 </appender>

 <!-- 配置个人输出debug日志 -->
 <appender name="eisc_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>${LOG_HOME}logback_debug.%d{yyyy-MM-dd}.log</fileNamePattern>
   <maxHistory>2</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${LOG_PATTERNControl}</pattern>
  </encoder>
 </appender>
 
 <!-- 配置个人输出error日志 -->
 <appender name="test_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>${LOG_HOME}logback_error.%d{yyyy-MM-dd}.log</fileNamePattern>
   <maxHistory>2</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${LOG_PATTERNControl}</pattern>
  </encoder>
 </appender>
 
 <!-- 配置输出级别和匹配作用域 -->
 <logger name="com.test.log" level="DEBUG" additivity="true">
   <appender-ref ref="test_debug" /> 
 </logger>
 <!-- 配置输出级别和匹配作用域 -->
 <logger name="com.test.log" level="ERROR" additivity="true">
   <appender-ref ref="test_error" /> 
 </logger>
 
 <root level="DEBUG" additivity="true">
  <appender-ref ref="stdout" />
  <appender-ref ref="RollingFile" />
 </root>

 </configuration> 

 

web.xml中初始化 :

<context-param> 
     <param-name>logbackConfigLocation</param-name> 
     <param-value>WEB-INF/logback.xml</param-value> 
 </context-param>  

<listener> 
     <listener-class>com.test.log.utils.InitLogbackUtil</listener-class> 
 </listener> 

 

InitLogbackUtil源代码:

package com.test.log.utils; 
import java.io.File;

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;
public class InitLogbackUtil 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); 
        System.out.println(" prepared file destory ["+fn+"]");
        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) {
    } 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值