logback 使用
1、maven: 只需引入
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
2、加载配置文件优先级(classpath下):logback-test.xml > logback.groovy > logback.xml ,以优先级高得配置为准
官方配置文件加载说明:
3、logback.xml 文件配置说明
<?xml version="1.0" encoding="UTF-8"?>
${a:-b} : 获取变量 a,设置默认值为b
${logReload:-false} : 获取变量logReload,如果获取不到,取默认值 false
scan : 是否监控配置文件的修改,设置为true, 修改配置文件,将更新日志容器
scanPeriod : 配合 san使用,扫描的间隔,必须有单位(seconds), 此处默认 60s
debug: 开启dubug模式,输出logback容器初始化过程
<configuration scan="${logReload:-false}" scanPeriod="${logReloadPeriod:- 60 seconds}" debug="${logDebug:-false}">
加载配置文件 logback-config.properties, 所有变量都可以定义在properties文件中,可以${}获取
<property resource="logback-config.properties"/>
定义一个变量 变量名:logLayout, 值为value属性配置的值,可以${}获取
<variable scope="context" name="logLayout" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80}(%L\\) : %msg%n"/>
设置org.apache.kafka 包下的所有日志的级别 为kafkaLevel ,默认为INFO
<logger name="org.apache.kafka" level="${kafkaLevel:-INFO}"/>
root 日志级别
<root level="${rootLevel:-INFO}"/>
条件加载配置文件
isDefined logback 函数 ,后续后面,此处翻译为 如果定义了变量 appenderSelction ,则只需then中的逻辑
<if condition='isDefined("appenderSelction")'>
<then>
p也为函数,p("appenderSelction").equals("all") 意思为变量 appenderSelction == "all"
<if condition='p("appenderSelction").equals("all")'>
<then>
条件引入配置文件
<include resource="console_appender.xml"/>
<include resource="rolling_appender.xml"/>
</then>
<else>
<if condition='p("appenderSelction").equals("console")'>
<then>
<include resource="console_appender.xml"/>
</then>
<else>
<if condition='p("appenderSelction").equals("rolling")'>
<then>
<include resource="rolling_appender.xml"/>
</then>
<else>
<!-- 默认配置 -->
<include resource="console_appender.xml"/>
</else>
</if>
</else>
</if>
</else>
</if>
</then>
<else>
<include resource="console_appender.xml"/>
</else>
</if>
<if condition='p("userDefault").equals("true")'>
<then>
<include optional="true" resource="default-log.xml"/>
</then>
</if>
</configuration>