springboot 集成logback笔记

spingboot logback日志的配置文件建议取名为logback-spring.xml而不是loback.xml,因为可以使用标签实现logback多环境配置:开发,测试以及产品。

 

logback配置详解

一、 logback的根节点,包含scan,scanPeriod,debug三个属性。

scan:当此属性为true时,配置文件如果发生变化会重新加载。默认为true。

scanPeriod:设置监听配置文件是否变化的时间间隔,此属性在scan为true时生效。默认单位为milliseconds,可选单位有milliseconds,seconds,minutes,hours。默认时间间隔1分钟。

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

例如:




二、根节点的子节点

(1):默认logger上下文名称为default,通过可以修改logger上下文名称,用于区分不同应用程序的记录,一旦设置,不能修改。

例如:



    myLogback

(2):定义变量值的标签。有name和value两个属性,其中name是变量名称,value是变量值。通过定义的值会被插入到logger的上下文中。变量定义后,可以使用"${}"来使用变量。

例如:



    
    ${contextName}

(3):获取时间戳字符串。key属性标识名称,datePattern:设置当前时间转换字符串格式,遵循java.txt.SimpleDateFormat的格式。

例如:



    
        currentTimeStr
        "yyyy-MM-dd HH:mm:ss.SS"
    

(4):用来设置一个包或者是具体一个类的日志打印级别、以及指定的仅有name一个属性,一个可选的level和addtivity属性。

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

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

addtivity:用来设置是否向上级logger传递打印信息。默认为true。

logger可以包含多个元素,标识这个appender将会添加到这个logger。

(5):它是根logger。只有一个属性level,因为已经被命名为root。

用来设置打印级别,大小写无关,级别从小到大为TRACE,DEBUG,INFO,WARN,ERROR,ALL和OFF,不能设置INHERITED和NULL。默认为DEBUG。

root可以包含多个元素,标识这个appender将会添加到这个logger。

的继承关系为为根logger,其他根据的name属性决定,大致应该是类继承于包,包继承于

例如:

 

 

(6):是负责写日志的组件,有两个必要属性name和class。

name:指定的名称。

class:指定的全限定名。

1、ConsoleAppender(ch.qos.logback.core.ConsoleAppender):把日志输出到控制台,有以下几个子节点。

:对日志进行格式化。

:字符串System.out或者System.err。默认System.out。

例如:



    
        
            %-4relative [%thread] %-5level %logger{35} - %msg %n
        
    

    
        
    

2、FileAppender(ch.qos.logback.core.FileAppender):,有以下子节点。

:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。

:如果是true,日志被追加到文件尾部,如果是false,清空现存文件,默认为true。

:对日志进行格式化。

:如果为true,日志会被安全的写入文件,即其他的FileAppender也向此文件做写入操作,效率低。默认为false。

例如:



    
        familyWeChatXp
        true
        
            %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    

    
        
    

3、RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。有以下子节点。

:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。

:如果是true,日志被追加到文件尾部,如果是false,清空现存文件,默认为true。

:对日志进行格式化。

:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。

:告知RollingFileAppender何时激活滚动。

:当为true时,日志会被安全的写入文件,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,1不支持也允许文件压缩,2不能设置file属性,必须留空。

RollingFileAppender 行为有其下两种:

(1)TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。有以下子节点。

:必要节点,包含文件名及"%d"转换符,"%d"可以包含一个java.txt.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。如果直接使用%d,默认格式是yyyy-MM-dd。

:可选节点,控制保留的归档文件的最大数量,超出的文件求删除旧文件。假设设置每个月滚动,且是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是那些为了归档而创建的目录也会被删除。

(2)FixedWindowRollingPolicy:根据固定窗口算法重命名文件的滚动策略。有以下子节点。

:窗口索引最小值。

:窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置12。

:必须包含"%i",例如最小值和最大值分别是1和2,命名模式为mylog%i.log,会产生归档文件mylog1.log和mylog2.log。还可以指定文件的压缩选项,例如mylog%i.log.gz或者没有log%i.log.zip

RollingFileAppender 何时滚动有

SizeBasedTriggeringPolicy:查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动。只有一个子节点:这是活动文件大小,默认值是10MB。

(RollingFileAppender的file子节点file可有可无,通过设置file,可以为活动文件和归档文件指定不同的位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变;如果没有设置file,活动文件的名字会根据fileNamePattern 的值,每隔一段时间改变一次。'/'或者'\'会被当做目录分隔符。)

:负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。

目前PatternLayoutEncoder是唯一有用的且默认的encoder,有一个节点,用来设置日志的输出格式。使用"%"加"转换符"方式,如果要输出"%",则必须用"\"对"\%"进行转义。

里面的转换符说明:

c/lo/logger{length}:输出日志的logger名,可有一个整形参数,功能是缩短logger名,设置为0表示只输入logger最右边点符合之后的字符串。

C/class{length}:输出执行记录请求的调用者的全限定名。

contextName/cn:输出上下文名称

d/date{pattern}:输入日志的打印日志日期,模式语法与java.txt.SimpleDateFormat兼容。

F/file:输出执行记录请求的java源文件名。

caller{depth}:输出生成日志的调用者的位置信息,整数选项depth表示输出信息的深度。

L/line:输出执行日志请求的行号。

m/msg/message:输出应用程序提供的信息。

M/method:输出执行日志请求的方法名。

n:输出平台相关的分行符"\n"或者"\r\n"。

p/le/level:输出日志的级别。

r/relative:输出从程序启动到创建日志记录的时间,单位是毫秒。

replace(p){r,t}:p为日志内容,r是正则表达式,将p中符合r的内容换成t。

格式修饰符:可选的格式修饰符位于"%"和转换符之间。

第一个可选修饰符是左对齐修饰符 ,符号是减号"-"

第二个可选修饰符是最小宽度修饰符,用十进制数表示。如果字符小于最小宽度,则左填充或右填充,默认左填充(右对齐),填充符为空格。如果字符大于最小宽度,字符永远不会被截断。

第三个可选修饰符是最大宽度修饰符,符号是点号"."后面加十进制数。如果字符大于宽度,则从前面截断。点符号"."后面加减号"-"在加数字,表示从尾部截断。

:暂时不提。

 

 

 

 

 

 

 

你可能感兴趣的:(Spring,Boot)