log4jdbc-log4j2 和slf4j、logback

我们来假想这么一种情况,当系统出现了问题,我们需要快速分析问题出在哪里并解决。

(1) 首先我们需要知道故障发生的时间,然后查看日志,当我跟踪日志的时候,发现就只有一个log,而且这个log超大,普通的一般的编辑器根本无法打开这种超大的日志文件,就算能打开,找到故障发生点的日志也不是一件容易的事情,是不是很头疼。

这个时候我们就会想要是日志能给我按照天给我存储就好了,那样我就能快速的定位日志在哪里了。

如果访问量比较大,就算按天访问,每天的log文件也很大怎么办,而且我们硬盘有限,也没有必要把所有的日志都保存起来,我只需要保存最近10天的日志就行,过期的就自动删除。

而且要是能把错误日志和访问日志分开存储那就更好了。现在我们就来学习一下logback(也是log4j的作者),因为logback已经提供了我们上面所说的功能。

那么今天我们就来使用slf4j和logback来实现上述功能。

1、我们需要Logback-classic.jar,Logback-classic.jar依赖slf4j-api.jar和logback-core.jar,所以我们需要这三个jar

2、我们需要告诉log4jdbc-log4j2我们要使用slf4j日志,那么怎么才能告诉它呢?

我们需要在classpath下新建log4jdbc.log4j2.properties文件

?
1
<strong>log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator</strong>

3 、配置Logger

     这里有6个Logger供我们配置,而log4j只有一个Logger啊,我们先来看看这6个logger:

     这几个Logger都是和jdbc数据库有关的,对开发人员来说,我想要的就是简洁的sql语句就行,所以我我们一般常用jdbc.sqltiming,jdbc.resultsettable

  • jdbc.sqlonly
  • jdbc.sqltiming:
  • jdbc.audit:
  • jdbc.resultset:
  • jdbc.resultsettable:
  • jdbc.connection:

    那我们来看看logback.xml示例

    

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xmlversion="1.0"encoding="UTF-8"?>
<configuration>
    <!-- 该配置主要是打印  logback 的配置信息 -->
    <statusListenerclass="ch.qos.logback.core.status.OnConsoleStatusListener"/>
     
    <appendername="console"class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
     
    <appendername="ACCESS"class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 10天 -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
        <!-- 日志级别限制 -->
        <filterclass="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY </onMismatch>
        </filter>
        <!--日志文件最大的大小 -->
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
     
    <!--sql 打印在控制台-->
    <loggername="jdbc.sqltiming"level="INFO">
        <appender-refref="console"/>
    </logger>
     
    <loggername="jdbc.resultsettable"level="INFO"></logger>
    <loggername="jdbc.sqlonly"level="OFF"></logger>
    <loggername="jdbc.audit"level="OFF"></logger>
    <loggername="jdbc.resultset"level="OFF"></logger>
    <loggername="jdbc.connection"level="OFF"></logger>
     
        <!--同时记录log日志--> 
    <rootlevel="INFO">
        <appender-refref="ACCESS"/>
    </root>
     
</configuration>



配置文件中的appender 可以配置多个,其实您还可以配置一个错误的日志文件,只需要把日志级别限制修改成ERROR就行,同时在添加到root中就行了,其他的具体配置我们可以参考http://logback.qos.ch/manual/index.html logback的官网。

转载于:https://my.oschina.net/u/2249726/blog/357338

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值