`
aubdiy
  • 浏览: 696233 次
  • 性别: 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  
写的挺好的! 主要是包括背景  细节 挺一个

相关推荐

    logback jar包和logback.xml配置文件打包下载 小白新手学Java

    SLF4J(Simple Logging Facade for Java)和Logback是两个常用的日志处理框架,它们提供了高效且灵活的日志解决方案。SLF4J作为一个抽象层,允许开发者选择底层的日志实现,而Logback则是一个优秀的SLF4J实现。在...

    SpringBoot之LogBack配置详解

    SpringBoot之LogBack配置详解 LogBack是基于Slf4j的日志框架,默认集成在Spring Boot中。默认情况下,Spring Boot是以INFO级别输出到控制台。LogBack的日志级别是:ALL 。 配置LogBack可以直接在application....

    基于Spring Boot的Logback日志轮转配置详解

    本篇文章主要介绍了基于Spring Boot的Logback日志轮转配置详解,包括了日志的重要性、默认配置、独立配置文件配置、logback.xml文件的配置等内容。 日志的重要性: 在生产环境下,日志是最好的问题调试和跟踪方法...

    有关在ssh3中slf的配置

    `logback logback_xml常用配置详解(一).mht、logback logback_xml常用配置详解(二).mht、logback logback_xml常用配置详解(三).mht`这三份文档可能是关于Logback配置的详细教程,涵盖了多个方面: 1. **配置...

    java日志框架

    5. **配置详解** - 在Log4j和Logback的配置文件中,我们可以设置全局日志级别、定义Appender(日志输出目的地)和Layout(日志格式)。例如,我们可以配置一个ConsoleAppender将日志输出到控制台,一个FileAppender...

    Java中 log4j日志级别配置详解

    Java 中 Log4j 日志级别配置详解 Log4j 是 Java 中最常用的日志记录工具之一,通过配置 Log4j,可以实现灵活的日志记录和管理。下面将详细介绍 Log4j 的日志级别配置。 1. Log4j 的发展历史 Log4j 的历史可以追溯...

    配置 Hibernate 日志

    ### Hibernate 日志配置详解 1. **日志框架选择**:Hibernate 默认支持多种日志框架,如 Log4j、Logback 和 JDK 内建的日志。选择合适的日志框架主要取决于项目的需求和个人偏好。Log4j 和 Logback 因其灵活性和...

    springboot知识点整理

    1.5 入门案例详解 11 1.5.1 POM文件 11 1.5.2 主程序类,主入口类 12 1.6 使用Spring Initializer向导快速创建Spring Boot 16 2 Spring Boot配置 18 2.1 配置文件 18 2.2 YML语法 19 2.3 YML配置文件值获取 21 2.4 ...

    Log4j全面配置.txt

    #### 一、Log4j简介与配置文件的重要性 Log4j是一款由Apache出品的日志记录工具,广泛应用于Java应用系统中,它可以帮助开发者高效地管理和控制应用程序中的日志输出。为了使得Log4j能够在系统中正常运行,必须事先...

    ssm框架配置文件

    9. **配置文件详解**:`applicationContext.xml`中,我们需要配置Bean、事务管理器、数据源以及Spring与其他组件的集成;`servlet-context.xml`中,主要配置SpringMVC的视图解析器、处理器映射器、拦截器等;`...

    SpringBoot入门配置

    ### SpringBoot入门配置详解 #### 一、新建SpringBoot项目 在开始开发SpringBoot应用之前,首先需要创建一个新的SpringBoot项目。SpringBoot简化了项目的搭建过程,提供了多种方式来创建项目,包括使用IDE(集成...

    SpringBoot实战教程(亲测非常好)百度网盘链接

    配置文件详解 - **application.properties** 或 **application.yml** 是Spring Boot中最常用的配置文件。 - **示例**:配置服务器端口。 ```properties server.port=8080 ``` - **高级配置**:如数据库连接配置...

    IntelliJ IDEA基于SSM框架整合开发模板带用户增删改查分页功能源代码

    **SSM框架整合详解** SSM框架是Java Web开发中常用的三大组件——Spring、Struts2和MyBatis的组合,常用于构建大型企业级应用。在这个项目中,`IntelliJ IDEA`作为强大的Java集成开发环境,被用来进行整个项目的...

    springboot_pdf.zip_java_remember564_societyund_spring_springboot

    本教程的PDF文件可能包含了SpringBoot的基础概念、配置详解、实战案例等内容,覆盖了从入门到进阶的各个方面。通过学习这些材料,你应该能够熟练地运用SpringBoot进行Java应用开发,提高开发效率,同时享受到...

    SpringBoot基础教程+源代码+文档说明

    # 1 项目搭建 ...- [1.1.2 常用配置介绍]...- 2.1.5 [日志规范-logback配置详解]...

    rhapsody7.0 操作手册

    本文将深入讲解Rhapsody 7.0的安装配置、重置密码、日志分析、内存调整、端口修改、数据库连接以及IDE编辑器的常用功能。 1. **安装与配置** - JVM内存建议:为了保证Rhapsody的稳定运行,建议初始设置JVM内存为2...

    精通 Spring Boot 42 讲

    3. **自动配置详解**:解释自动配置的工作原理和如何自定义配置。 4. **Web开发**:讲解如何使用Spring Boot进行Web开发,包括RESTful API的设计和模板引擎的使用。 5. **数据访问**:涵盖JPA和Hibernate的使用,...

    springboot常见面试问题及答案 .pdf

    ### Spring Boot 常见面试问题详解 #### 1. 什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的一个子项目,它提供了 Spring 组件的一站式解决方案,旨在简化 Spring 应用的创建、配置和管理。通过减少大量...

    SpringBoot基础教程

    这份文档可能涵盖了SpringBoot的使用示例、配置详解以及常见问题解答等内容,对于深化理解SpringBoot的实战运用大有裨益。 总之,SpringBoot以其简洁、高效的特点深受开发者喜爱。通过这个基础教程,你将能够快速...

    spring_boot_tutorial.pdf_springboot_spring_源码

    它集成了大量常用的第三方库配置,如数据库、邮件服务、缓存、消息队列等,可以极大地提高开发效率。 二、Spring Boot核心特性 1. 自动配置:Spring Boot会根据项目依赖自动配置相关组件,比如引入了Spring Data ...

Global site tag (gtag.js) - Google Analytics