目的
由于要实现需求:将特定的跟踪日志写入单独的日志文件,且其他的日志输出不受影响。故需要实现一个自定义的日志级别并指定配置文件,将特定的日志信息输入特定文件。
1、自定义日志级别方式如下:
代码文件:Logger monitorLogger = LoggerFactory.getLogger(“monitor”);
//在声明实例时创建自定义级别标签,monitor就是自定义的标签。
2、输出日志采用这样的方式:
monitorLogger.info("======info");
3、配置文件修改:
增加一个自定义appender并进行相应配置
<!-- 自定义导出配置 -->
<appender name="INSERTLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/test-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
<maxFileSize>10MB</maxFileSize>
</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}:%L - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打info以上级别日志 -->
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- name="monitor":设置日志名为monitor的日志 -->
<!-- additivity="false":只在当前appender中打印 -->
<logger name="monitor" level="DEBUG" additivity="false">
<!-- 添加appender -->
<appender-ref ref="INSERTLOG" />
</logger>
测试打印
日志打印成功!
补充
Log4j2的onMatch和onMismatch属性值详解
onMatch和onMismatch都有三个属性值,分别为Accept、DENY和NEUTRAL
分别介绍这两个配置项的三个属性值:
onMatch=“ACCEPT” 表示匹配该级别及以上
onMatch=“DENY” 表示不匹配该级别及以上
onMatch=“NEUTRAL” 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
onMismatch=“ACCEPT” 表示匹配该级别以下
onMismatch=“NEUTRAL” 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
onMismatch=“DENY” 表示不匹配该级别以下的