您的位置:首页 > 其它

logback 常用配置详解(序)logback 简介

2016-10-17 14:04 429 查看
source: http://aub.iteye.com/blog/1101222


logback 常用配置详解(序)logback 简介

博客分类: 

Logjava
loglogback 

原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222
尊重他人即尊重自己


详细整理了logback常用配置,

不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置


logback 常用配置详解(序)logback 简介

logback 常用配置详解(一)<configuration> and <logger>

logback 常用配置详解(二)<appender>

logback 常用配置详解(三)<filter>

logback 中文手册 (官网手册的翻译版,在这里向中文版译者-陈华,说声辛苦啦)

 

logback 简介

 

Ceki Gülcü在Java日志领域世界知名。他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行。随后他又着手实现SLF4J 这个“简单的日志前端接口(Façade)”来替代Jakarta Commons-Logging 。

 

LOGBack,一个“可靠、通用、快速而又灵活的Java日志框架”。

 

 

要在工程里面使用logback需要以下jar文件:

 

slf4j-api-1.6.1.jar

官网网址:http://www.slf4j.org/

下载地址:http://www.slf4j.org/dist/slf4j-1.6.1.zip

 

logback-access-0.9.29.jar

logback-classic-0.9.29.jar

logback-core-0.9.29.jar

官网网址:http://logback.qos.ch/

下载地址:http://logback.qos.ch/dist/logback-0.9.29.zip

 

在工程src目录下建立logback.xml

注:

1.logback首先会试着查找logback.groovy文件;

2.当没有找到时,继续试着查找logback-test.xml文件;

3.当没有找到时,继续试着查找logback.xml文件;

4.如果仍然没有找到,则使用默认配置(打印到控制台)。

 

在工程src目录下建立logback包,然后在包下建立LogbackDemo.java用于测试,代码如

Java代码  


package logback;  

  

import org.slf4j.Logger;  

import org.slf4j.LoggerFactory;  

  

public class LogbackDemo {  

    private static Logger log = LoggerFactory.getLogger(LogbackDemo.class);  

    public static void main(String[] args) {  

        log.trace("======trace");  

        log.debug("======debug");  

        log.info("======info");  

        log.warn("======warn");  

        log.error("======error");  

           

        String name = "Aub";  

        String message = "3Q";  

        String[] fruits = { "apple", "banana" };  

          

        // logback提供的可以使用变量的打印方式,结果为"Hello,Aub!"  

        log.info("Hello,{}!", name);  

          

        // 可以有多个参数,结果为“Hello,Aub! 3Q!”  

        log.info("Hello,{}!   {}!", name, message);  

          

        // 可以传入一个数组,结果为"Fruit:  apple,banana"  

        log.info("Fruit:  {},{}", fruits);   

    }  

}  

   

 

下一篇日志将开始讲述logback.xml配置,所有内容都参考logback官方网站。欢迎各位大牛拍砖。。。

 

原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222
尊重他人即尊重自己


 

26 







分享到: 

 


logback
logback.xml常用配置详解(一)<c ... | log4j 配置详解实例

2011-06-22 17:56

浏览 17856

评论(7)

分类:编程语言

相关推荐


参考知识库




区块链知识库234  关注 | 78  收录


深度学习知识库1611  关注 | 213  收录


React Native知识库1102  关注 | 492  收录


iOS知识库974  关注 | 1174  收录


评论


7 楼 mikey_5 2016-05-16  
不错,学习了

6 楼 aubdiy 2014-04-28  

fncj 写道

兄弟我这边有个错,帮我看下吧,谢谢!

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@91:33 - no applicable action for [category], current pattern is [[configuration][category]]

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@92:25 - no applicable action for [level], current pattern is [[configuration][category][level]]

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@93:31 - no applicable action for [appender-ref], current pattern is [[configuration][category][appender-ref]]

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@94:40 - no applicable action for [appender-ref], current pattern is [[configuration][category][appender-ref]]

Xml代码  


<?xml version="1.0" encoding="UTF-8"?>  

<configuration>  

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->    

    <property name="LOG_HOME" value="/opt/search/se/logs" />  

        

    <!-- 控制台日志输出 -->  

    <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} [%thread] %-5level %logger{50} - %msg%n     

            </pattern>     

        </layout>  

    </appender>   

                

    <!-- 为了把不同的信息打印到不同的文件中,这里设置了不同的日志级别打印到不同文件中 -->    

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

        <Encoding>UTF-8</Encoding>    

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

            <!--用户行为操作的日志打印到以log-user开头的文件中 -->    

            <FileNamePattern>${LOG_HOME}/log-info.%d{yyyy-MM-dd}.log</FileNamePattern>    

            <!-- 最多30个文件 -->    

            <MaxHistory>30</MaxHistory>    

        </rollingPolicy>    

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

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

            </pattern>    

        </layout>   

         <!--日志文件最大的大小-->  

       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  

         <MaxFileSize>10MB</MaxFileSize>  

       </triggeringPolicy>   

        <!-- 过滤器,只记录INFO级别的日志 -->    

        <filter class="ch.qos.logback.classic.filter.LevelFilter">    

            <level>INFO</level>    

            <onMatch>ACCEPT</onMatch>    

            <onMismatch>DENY</onMismatch>    

        </filter>    

    </appender>  

           

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

        <Encoding>UTF-8</Encoding>    

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

            <!--在工程目录下自动生成logs文件夹 -->    

            <FileNamePattern>${LOG_HOME}/log-error.%d{yyyy-MM-dd}.log</FileNamePattern>    

            <!-- 最多30个文件 -->    

            <MaxHistory>30</MaxHistory>    

        </rollingPolicy>    

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

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

            </pattern>    

        </layout>   

         <!--日志文件最大的大小-->  

       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  

         <MaxFileSize>10MB</MaxFileSize>  

       </triggeringPolicy>            

        <filter class="ch.qos.logback.classic.filter.LevelFilter">    

            <level>ERROR</level>    

            <onMatch>ACCEPT</onMatch>    

            <onMismatch>DENY</onMismatch>    

        </filter>    

    </appender>  

     <!-- 按照每天生成日志文件 -->  

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

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

            <!--日志文件输出的文件名-->  

            <FileNamePattern>${LOG_HOME}/user/se-admin.log.%d{yyyy-MM-dd}.log</FileNamePattern>  

            <MaxHistory>30</MaxHistory>  

        </rollingPolicy>  

        <encoder  

                class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">  

            <!-- 日志输出编码 -->  

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

                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->  

                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} == %msg%n  

                </pattern>  

            </layout>  

        </encoder>  

        <!--日志文件最大的大小-->  

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  

            <MaxFileSize>10MB</MaxFileSize>  

        </triggeringPolicy>  

    </appender>  

  

    <!-- 日志输出级别 -->  

    <root level="DEBUG">  

        <appender-ref ref="STDOUT" />    

        <appender-ref ref="FILEINFO" />    

        <appender-ref ref="FILEERROR" />   

    </root>  

  

    <category name="com.suning">   

        <level value="DEBUG"/>  

        <appender-ref ref="STDOUT"/>  

        <appender-ref ref="FILEINFO" />  

    </category>  

      

     <logger name="com.suning.search.evaluation.web.security.filter" level="INFO">  

        <appender-ref ref="FILE_SECURITY"/>  

    </logger>  

  

</configuration>  

你用的是哪个版本的logback?  我使用博客中的版本测试你的皮配置文件,没有报错

你的配置中

TimeBasedRollingPolicy与SizeBasedTriggeringPolicy混合使用,我没试过,

一般是FixedWindowRollingPolicySizeBasedTriggeringPolicy混合使用

你可以去掉SizeBasedTriggeringPolicy试试

5 楼 fncj 2014-04-24  
兄弟我这边有个错,帮我看下吧,谢谢!

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@91:33 - no applicable action for [category], current pattern is [[configuration][category]]

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@92:25 - no applicable action for [level], current pattern is [[configuration][category][level]]

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@93:31 - no applicable action for [appender-ref], current pattern is [[configuration][category][appender-ref]]

11:29:06,762 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@94:40 - no applicable action for [appender-ref], current pattern is [[configuration][category][appender-ref]]

Xml代码  


<?xml version="1.0" encoding="UTF-8"?>  

<configuration>  

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->    

    <property name="LOG_HOME" value="/opt/search/se/logs" />  

        

    <!-- 控制台日志输出 -->  

    <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} [%thread] %-5level %logger{50} - %msg%n     

            </pattern>     

        </layout>  

    </appender>   

                

    <!-- 为了把不同的信息打印到不同的文件中,这里设置了不同的日志级别打印到不同文件中 -->    

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

        <Encoding>UTF-8</Encoding>    

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

            <!--用户行为操作的日志打印到以log-user开头的文件中 -->    

            <FileNamePattern>${LOG_HOME}/log-info.%d{yyyy-MM-dd}.log</FileNamePattern>    

            <!-- 最多30个文件 -->    

            <MaxHistory>30</MaxHistory>    

        </rollingPolicy>    

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

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

            </pattern>    

        </layout>   

         <!--日志文件最大的大小-->  

       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  

         <MaxFileSize>10MB</MaxFileSize>  

       </triggeringPolicy>   

        <!-- 过滤器,只记录INFO级别的日志 -->    

        <filter class="ch.qos.logback.classic.filter.LevelFilter">    

            <level>INFO</level>    

            <onMatch>ACCEPT</onMatch>    

            <onMismatch>DENY</onMismatch>    

        </filter>    

    </appender>  

           

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

        <Encoding>UTF-8</Encoding>    

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

            <!--在工程目录下自动生成logs文件夹 -->    

            <FileNamePattern>${LOG_HOME}/log-error.%d{yyyy-MM-dd}.log</FileNamePattern>    

            <!-- 最多30个文件 -->    

            <MaxHistory>30</MaxHistory>    

        </rollingPolicy>    

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

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

            </pattern>    

        </layout>   

         <!--日志文件最大的大小-->  

       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  

         <MaxFileSize>10MB</MaxFileSize>  

       </triggeringPolicy>            

        <filter class="ch.qos.logback.classic.filter.LevelFilter">    

            <level>ERROR</level>    

            <onMatch>ACCEPT</onMatch>    

            <onMismatch>DENY</onMismatch>    

        </filter>    

    </appender>  

     <!-- 按照每天生成日志文件 -->  

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

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

            <!--日志文件输出的文件名-->  

            <FileNamePattern>${LOG_HOME}/user/se-admin.log.%d{yyyy-MM-dd}.log</FileNamePattern>  

            <MaxHistory>30</MaxHistory>  

        </rollingPolicy>  

        <encoder  

                class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">  

            <!-- 日志输出编码 -->  

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

                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->  

                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} == %msg%n  

                </pattern>  

            </layout>  

        </encoder>  

        <!--日志文件最大的大小-->  

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  

            <MaxFileSize>10MB</MaxFileSize>  

        </triggeringPolicy>  

    </appender>  

  

    <!-- 日志输出级别 -->  

    <root level="DEBUG">  

        <appender-ref ref="STDOUT" />    

        <appender-ref ref="FILEINFO" />    

        <appender-ref ref="FILEERROR" />   

    </root>  

  

    <category name="com.suning">   

        <level value="DEBUG"/>  

        <appender-ref ref="STDOUT"/>  

        <appender-ref ref="FILEINFO" />  

    </category>  

      

     <logger name="com.suning.search.evaluation.web.security.filter" level="INFO">  

        <appender-ref ref="FILE_SECURITY"/>  

    </logger>  

  

</configuration>  

4 楼 nightkid 2014-04-11  
学习了,刚发现这个新的日志输出控件,感谢!

3 楼 lcxcqtn 2013-11-20  
讲的很清楚,学习了


2 楼 lulihong324 2013-11-16  
非常感谢,对我非常有用

1 楼 chengcheng222e 2013-10-25  
写的挺好的! 主要是包括背景  细节 挺一个


发表评论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  logback