spring 集成logbcak日志

       今天完整的为springmvc 配置了logback日志系统。

      首先,要准备三个包logback-access、logback-classic、logback-core 三个包。这三个包是logback自身的jar包,spring其实不支持logback,所以我们要在加入一个转化包logback-ext-spring 。所有jar准备齐全后,就要进行web的配置。

     日志系统的配置,主要在web.xml的中,要加入一下代码

        <!-- 日志 -->
  <context-param>
    <param-name>logbackConfigLocation</param-name>
    <param-value>classpath:/resource/config/logback.xml</param-value>   //你自己配置logback文件的位置
  </context-param>
  
  <listener>
    <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>  //这个listener是属于logback-ext-spring,作用就是在spring中启动logback
  </listener>

    以上就会加入logback的。下面就要对logback进行配置,我将会列出一个包含插入数据库,导出file文件,控制台输出的logback,xml模板

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <property resource="resource/mysql.properties"/>                   //这个是存储数据库连接信息的properties文件,也可以用 file = "文件地址"读取相对路径下的文件
    <property name = "logbackHome" value = "/opt/weixin/log"/>          //设置自己文件输出的地址
    <!-- 控制台输出 -->   
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">           
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">   
             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
        </encoder>   
    </appender>
    
     <!-- 按照每天生成日志文件 -->   
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender"> 
        <file>${logbackHome}/weixin.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${logbackHome}/weixin.log.%d{yyyy-MM-dd}.log</FileNamePattern>   
            <!-- 日志保存天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy> 
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">  
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
       </encoder> 
        <!--日志文件最大的大小-->
       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
       </triggeringPolicy>  
    </appender>
    
    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->  
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder"  level="TRACE" />  
    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="DEBUG" />  
    <logger name="org.hibernate.SQL" level="DEBUG" />  
    <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />  
    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> 
    
    <!--日志异步到数据库 -->  
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">                   
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>        
        <connectionSource
            class="ch.qos.logback.core.db.DataSourceConnectionSource">   
            <!--连接池 -->
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
           <driverClass>${ds.driverName}</driverClass>
           <jdbcUrl>${ds.weixin}</jdbcUrl>
           <user>${ds.username}</user>
           <password>${ds.password}</password>     
           <acquireIncrement>5</acquireIncrement>
           <minPoolSize>5</minPoolSize>
           <maxPoolSize>10</maxPoolSize>
           <maxIdleTime>1800</maxIdleTime>   
       </dataSource>
        </connectionSource> 
    </appender>
    
    <logger name="com.cn" level="INFO">
        <appender-ref ref="DB" /> 
    </logger> 
    
    <!-- 日志输出级别 -->
    <root level="INFO">   
        <appender-ref ref="STDOUT" />   
        <appender-ref ref="FILE" />  
    </root>  
</configuration>


主要讲解下数据库配置的部分,网上大多的配置文件都会讲解控制台输出、file文件输出的配置格式。我也是借鉴的网络,废话少说开始正题.网上很多在数据库配置的时候,往往列出的配置格式只是如下:

 <!--日志异步到数据库 -->  
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">                   
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>        
        <connectionSource
            class="ch.qos.logback.core.db.DataSourceConnectionSource">   
            <!--连接池 -->
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <driverClass>${ds.driverName}</driverClass>
            <jdbcUrl>${ds.weixin}</jdbcUrl>
            <user>${ds.username}</user>
            <password>${ds.password}</password>     
        </dataSource>
        </connectionSource> 
    </appender>

但是这种格式在你测试的时候会出现错误,说连接池不能用,主要因为缺少:mchange-commons-java这个主要是补充c3p0 jar包。补充完整后,测试就不会报错,但是也会出现jdbc之类的错误,这主要是因为你没有设置连接池一些基本参数,添加参数即可。

这样就是基本完成了logback的基本设置,下面就要在数据库中建立表

ch.qos.logback.classic.db.script中找到对应数据库的sql语句,用这些语句生成对应的表,

这些做完之后,理论上是可以将logback插入到数据库中了,但是这时候又出现问题,

因为一般的web项目都会引入commen-logging这个jar包,它的存在会影响logback,这时候就要加入jcl-over-slf4j     jar包就可以避免这个错误。

完成这些之后,logback就可以完整的集成到spring中.

建议,在做logback集成的时候用测试不断完善,直到不出现错误为止,这样可以避免,每次打开tomcat.

测试代码:

       private static final Logger logger = LoggerFactory.getLogger(LogTest.class);
public static void main(String[] args) {
        LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
        JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(lc);
        lc.reset();
        try {
            configurator.doConfigure("自己logback.xml文件的地址");
       } catch (JoranException e) {
            e.printStackTrace();
        }
        StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
        System.out.println("===================");
        logger.info("test{}",new Object[]{"jk"});
        logger.error("error");
        logger.info("Changed from [{}] to [{}] by [{}].", new Object[] {
"test1", "test2",
"test3"});
    }

    


这篇测试完成主要靠在网上零散的收集资料,借鉴别的代码,特别感谢,网上那些关于logback的帖子和博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值