`
aubdiy
  • 浏览: 692286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Log
阅读更多

原创文章,转载请指明出处: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用于测试,代码如

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, 尊重他人即尊重自己

 

29
1
分享到:
评论
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 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 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  
写的挺好的! 主要是包括背景  细节 挺一个

相关推荐

Global site tag (gtag.js) - Google Analytics