zoukankan      html  css  js  c++  java
  • 默认日志Logback配置

    默认日志Logback配置


    默认日志Logback

    Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J(Simple Logging Facade For Java)。

    • 与Log4J比较,优点如下:

      • 同样的代码路径,Logback 执行更快
      • 更充分的测试
      • 原生实现了 SLF4J API(Log4J 还需要有一个中间转换层)
      • 内容更丰富的文档
      • 支持 XML 或者 Groovy 方式配置
      • 配置文件自动热加载
      • 从 IO 错误中优雅恢复
      • 自动删除日志归档
      • 自动压缩日志成为归档文件
      • 支持 Prudent 模式,使多个 JVM 进程能记录同一个日志文件
      • 支持配置文件中加入条件判断来适应不同的环境
      • 更强大的过滤器
      • 支持 SiftingAppender(可筛选 Appender)
      • 异常栈信息带有包信息
    • 配置输出的地址和输出级别

      application.properties 中添加如下配置:

        logging.path=/user/local/log
        logging.level.com.favorites=DEBUG
        logging.level.org.springframework.web=INFO
        logging.level.org.hibernate=ERROR
      
      • 日志级别从低到高

          TRACE < DEBUG < INFO < WARN < ERROR < FATAL
        

        如果一个 logger 允许打印一条具有某个日志级别的信息,那么它也必须允许打印具有比这个日志级别更高级别的信息,而不允许打印具有比这个日志级别更低级别的信息。

      • 级别控制

          logging.level.* = LEVEL
        
        • logging.level:日志级别控制前缀,*为包名或Logger名;

        • LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF;

    自定义日志配置

    根据不同的日志系统,按如下规则组织配置文件名后,将文件放入src/main/resources目录下,可被系统正确加载。

    • Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy

    • Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml

    • Log4j2:log4j2-spring.xml, log4j2.xml

    • JDK (Java Util Logging):logging.properties

    使用自定义配置文件名,如logging-config.xml。在application.properties中添加如下配置:

    logging.config=classpath:logging-config.xml	
    

    配置文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false">
    	<contextName>logback</contextName>
    	<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    	<property name="log.path" value="D:\log\logback.log"/>
    	<!-- 控制台输出 -->
    	<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">
        	<file>${log.path}</file>
        	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            	<!--日志文件输出的文件名-->
            	<FileNamePattern>logback.%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>
    	<!-- 日志输出级别 -->
    	<root level="INFO">
        	<appender-ref ref="STDOUT"/>
        	<appender-ref ref="FILE"/>
    	</root>
    	<!-- 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"/>
    </configuration>
    
    • 根节点 <configuration> 包含的属性

      • scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

      • scanPeriod:设置监测配置文件是否有修改的时间间隔。如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效,默认的时间间隔为1分钟。

      • debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false。

    • 设置上下文名称 <contextName>

      每个logger都关联到logger上下文,默认上下文名称为 default。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。

    • 设置变量<property>

      用来定义变量值的标签,<property> 有两个属性,namevalue;其中 name 的值是变量的名称,value 的值时变量定义的值。通过 <property> 定义的值会被插入到logger上下文中。定义变量后,可以使 ${} 来使用变量。

    • 子节点 <appender>

      appender用来格式化日志输出节点,有俩个属性nameclassclass用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。

      • <encoder> 表示对日志进行格式化编码

        • %d{HH: mm:ss.SSS}——日志输出时间

        • %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用

        • %-5level——日志级别,并且使用5个字符靠左对齐

        • %logger{50}——表示logger名字最长50个字符,否则按照句点分割。

        • %msg——日志消息

        - %n——平台的换行符

    • 子节点<root>

      root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。

      <root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个logger。

    • 子节点<logger>

      <logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender><logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。

      • name:用来指定受此logger约束的某一个包或者具体的某一个类。

      • level:用来设置打印级别,大小写无关(TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF),还有一个特俗值 INHERITED 或者同义词 NULL ,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别。

      • addtivity:是否向上级logger传递打印信息。默认是true。

  • 相关阅读:
    [转] s3c6410开发板研究笔记(一)从SD卡启动UBOOT(未完待续。。。)
    [转]解决aptget f install提示错误
    ubuntu 软件中心崩溃解决办法
    [转]Linux环境下Jlink配置
    [转]SD卡引脚 电路图及工作原理介绍
    [原]linux下安装运行supervivitransfertool
    [转]OclO 开发笔记
    [转]dnw for linux
    [转]使用JLink间接烧写uboot,supervivi到mini2440的方法
    Js 浏览器全屏代码(按F11)
  • 原文地址:https://www.cnblogs.com/wscy/p/9225011.html
Copyright © 2011-2022 走看看