logback学习笔记

LockBack笔记

1.自定义Pattern模板

 

写一个转换器类,继承ClassicConvert

 

        public class IpConvert extends ClassicConverter {  

  

    @Override  

    public String convert(ILoggingEvent event) {  

        return "10.10.10.10";  

    }  

}  

 

在logback.xml中注册该转换器,并自定义转换符

 

注册:

<conversionRule conversionWord="ip" converterClass="com.cj.log.IpConvert" />

 

自定义ip转换符:

<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}%ip [%thread] %-5level %logger{36} -% msg%n</Pattern>

 

 

还有一种方法

 

public class PatternLayout extends PatternLayoutBase<ILoggingEvent> {  

  public static final Map<String, String> defaultConverterMap = new HashMap<String, String>();  

  static {  

    defaultConverterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);  

    defaultConverterMap.put("d",DateConverter.class.getName());  

    defaultConverterMap.put("date",DateConverter.class.getName());  

    defaultConverterMap.put("r",RelativeTimeConverter.class.getName());  

    defaultConverterMap.put("relative",RelativeTimeConverter.class.getName());  

    

 

 

import ch.qos.logback.classic.PatternLayout;  

public class MyPatternLayout extends PatternLayout {  

    static {  

        defaultConverterMap.put("ip",IpConvert.class.getName());  

    }  

}

 

PatternLayout 换成 MyPatternLayout

<layout class="com.cj.log.MyPatternLayout">  

      <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %ip [%thread] %-5level %logger{36} -%msg%n</Pattern>  

</layout>  

 

 

2.异步日志输出  注意:该功能需要高版本才能支持,如1.0.11。

 

<appender name="FILE" class= "ch.qos.logback.core.rolling.RollingFileAppender">  

            <!-- 按天来回滚,如果需要按小时来回滚,则设置为{yyyy-MM-dd_HH} -->  

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  

                 <fileNamePattern>/opt/log/test.%d{yyyy-MM-dd}.log</fileNamePattern>  

                 <!-- 如果按天来回滚,则最大保存时间为1天,1天之前的都将被清理掉 -->  

                 <maxHistory>30</maxHistory>  

            <!-- 日志输出格式 -->  

            <layout class="ch.qos.logback.classic.PatternLayout">  

                 <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern>  

            </layout>  

</appender>  

     <!-- 异步输出 -->  

     <appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">  

            <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->  

            <discardingThreshold >0</discardingThreshold>  

            <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->  

            <queueSize>512</queueSize>  

            <!-- 添加附加的appender,最多只能添加一个 -->  

         <appender-ref ref ="FILE"/>  

     </appender>  

       

     <root level ="trace">  

            <appender-ref ref ="ASYNC"/>  

     </root>  

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2010-2011 The myBatis Team
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->  
    <property name="LOG_HOME" value="/home" />  
    <!-- 控制台输出 -->   
    <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">   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/TestWeb.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" />  
    
    <!--myibatis log configure--> 
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root> 
     <!--日志异步到数据库 -->  
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <!--日志异步到数据库 --> 
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
           <!--连接池 --> 
           <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
              <driverClass>com.mysql.jdbc.Driver</driverClass>
              <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
              <user>root</user>
              <password>root</password>
            </dataSource>
        </connectionSource>
  </appender>
</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值