1.根节点:<configuration>
scan:设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出单位,默认单位是毫秒。当scan为true时,此属性生效。默认时间间隔为1分钟。
debug:此属性设置为true时,将打印logback内部日志信息,实时查看logback运行状态。默认值为false
<configuration scan="true" scanPeriod="60 seconds" debug="false">
</configuration>
2.子节点:<property>
用来定义变量值,通过<property>定义的值会被插入到logger上下文中,可以使用${}使用
name:变量的名称
value:变量定义的值
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="name" value="豆豆" />
<contextName>${APP_Name}</contextName>
</configuration>
3.子节点:<appender>
负责写日志的组件
name:指定appender名称
class:指定appender的全限定名
-
ConsoleAppender:把日志输出到控制台
- <encoder>:对日志进行格式化
- <target>:字符串System.out(默认)或者System.err
-
FileAppender:把日志添加到文件
- <file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值(文件目录)
- <encoder>:对记录事件进行格式化
- <prudent>:如果是true,日志会被安全的写入文件,及时其他的FileAppender也在向此文件做写入操作,效率低,默认是false
-
RollingFileAppender:滚动记录文件,将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件
-
<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值
-
<append>:如果是true,日志被追加到文件结尾,如果是false,清空现存文件,默认为true
-
<rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类
class=“ch.qos.logback.core.rolling.TimeBasedRollingPolicy”:最常用的滚动策略,根据事件来制定滚动策略
- <fileNamePattern>:必要节点,包含文件名以及"%d"转换符,%d可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM-dd}
- <maxHistory>:控制保留的文档文件最大数量,超出数量就删除旧文件
- <maxFileSize>:指定活动文件大小的最大值,默认值时10MB
注意:RollingFileAppender的file可有可无,通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变
如果没设置file,活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次。"/“或”"会被当做目录分隔符。
-
4.子节点<loger>
设置某一个包或某个类的日志打印级别、以及指定<appender>
name:指定受此loger约束的某一个包或者具体的某个类
level:设置打印级别,大小写无关
addtivity:是否向上级loger传递打印信息。默认是true
5.子节点<root>
level:设置打印级别,大小写无关
- <appender-ref>:标识这个appender将会添加到这个loger
properties配置
# 应用自定义配置
logging.config=classpath:logback.xml
java代码
public class Test {
private final static Logger logger = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) {
logger.info("logback 成功了");
logger.error("logback 成功了");
logger.debug("logback 成功了");
}
}
logback.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 文件输出格式 -->
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
<!-- test文件路径 -->
<property name="TEST_FILE_PATH" value="C:\Users\JMB125\Desktop\笔记" />
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="/opt/doudou/logs" />
<!-- 开发环境 -->
<springProfile name="dev">
<!--将日志打印到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<logger name="com.doudou" level="debug"/>
<root level="info">
<appender-ref ref="CONSOLE" />
</root>
</springProfile>
<!-- 测试环境 -->
<springProfile name="test">
<!-- 每天产生一个文件 -->
<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${TEST_FILE_PATH}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<MaxHistory>100</MaxHistory>
</rollingPolicy>
<!--对日志进行格式化输出-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--指定最基础的日志输出级别 level用来设置打印级别-->
<root level="info">
<appender-ref ref="TEST-FILE" />
</root>
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PRO_FILE_PATH}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistory>100</MaxHistory>
</rollingPolicy>
<!--输出设置-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
</appender>
<root level="warn">
<appender-ref ref="PROD_FILE" />
</root>
</springProfile>
</configuration>