logback 配置.docx
- 文档编号:4467210
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:8
- 大小:17.35KB
logback 配置.docx
《logback 配置.docx》由会员分享,可在线阅读,更多相关《logback 配置.docx(8页珍藏版)》请在冰豆网上搜索。
logback配置
logback配置
staticLevelDEBUG
DEBUGLevel指出细粒度信息事件对调试应用程序是非常有帮助的。
staticLevelINFO
INFOlevel表明消息在粗粒度级别上突出强调应用程序的运行过程。
staticLevelWARN
WARNlevel表明会出现潜在错误的情形。
staticLevelERROR
ERRORlevel指出虽然发生错误事件,但仍然不影响系统的继续运行。
staticLevelFATAL
FATALlevel指出每个严重的错误事件将会导致应用程序的退出。
另外,还有两个可用的特别的日志记录级别:
(以下描述来自log4jAPIhttp:
//jakarta.apache.org/log4j/docs/api/index.html):
staticLevelALL
ALLLevel是最低等级的,用于打开所有日志记录。
staticLevelOFF
OFFLevel是最高等级的,用于关闭所有日志记录。
,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。
如果设置级别为INFO,则优先级高于等于INFO级别(如:
INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。
logback基本配置如下:
<?
xmlversion="1.0"encoding="UTF-8"?
>
<configuration>
<propertyname="LOG_HOME"value="c:
/log"/>
<!
--控制台输出-->
<appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">
<Encoding>UTF-8</Encoding>
<layoutclass="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:
mm:
ss.SSS}[%thread]%-5level%logger{50}-%msg%n
</pattern>
</layout>
</appender>
<!
--按照每天生成日志文件-->
<appendername="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layoutclass="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:
mm:
ss.SSS}[%thread]%-5level%logger{50}-%msg%n
</pattern>
</layout>
</appender>
<rootlevel="DEBUG">
<appender-refref="STDOUT"/>
<appender-refref="FILE"/>
</root>
</configuration>
复制代码
<filter>:
过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。
返回DENY,日志将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
过滤器被添加到<Appender>中,为<Appender>添加一个或多个过滤器后,可以用任意条件对日志进行过滤。
<Appender>有多个过滤器时,按照配置顺序执行。
下面是几个常用的过滤器:
LevelFilter:
级别过滤器,根据日志级别进行过滤。
如果日志级别等于配置级别,过滤器会根据onMath和onMismatch接收或拒绝日志。
有以下子节点:
<level>:
设置过滤级别
<onMatch>:
用于配置符合过滤条件的操作
<onMismatch>:
用于配置不符合过滤条件的操作
例如:
将过滤器的日志级别配置为INFO,所有INFO级别的日志交给appender处理,非INFO级别的日志,被过滤掉。
<configuration>
<appendername="CONSOLE"class="ch.qos.logback.core.ConsoleAppender">
<filterclass="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%-4relative[%thread]%-5level%logger{30}-%msg%n
</pattern>
</encoder>
</appender>
<rootlevel="DEBUG">
<appender-refref="CONSOLE"/>
</root>
</configuration>
复制代码
ThresholdFilter:
临界值过滤器,过滤掉低于指定临界值的日志。
当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。
例如:
过滤掉所有低于INFO级别的日志。
<configuration>
<appendername="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<!
--过滤掉TRACE和DEBUG级别的日志-->
<filterclass="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>
%-4relative[%thread]%-5level%logger{30}-%msg%n
</pattern>
</encoder>
</appender>
<rootlevel="DEBUG">
<appender-refref="CONSOLE"/>
</root>
</configuration>
复制代码
EvaluatorFilter:
求值过滤器,评估、鉴别日志是否符合指定条件。
有一下子节点:
<evaluator>:
鉴别器,常用的鉴别器是JaninoEventEvaluato,也是默认的鉴别器,它以任意的java布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回true就表示符合过滤条件。
evaluator有个子标签<expression>,用于配置求值条件。
求值表达式作用于当前日志,logback向求值表达式暴露日志的各种字段:
Name
Type
Description
event
LoggingEvent
与记录请求相关联的原始记录事件,下面所有变量都来自event,例如,event.getMessage()返回下面"message"相同的字符串
message
String
日志的原始消息,例如,设有loggermylogger,"name"的值是"AUB",对于mylogger.info("Hello{}",name);"Hello{}"就是原始消息。
formatedMessage
String
日志被各式话的消息,例如,设有loggermylogger,"name"的值是"AUB",对于mylogger.info("Hello{}",name);"HelloAub"就是格式化后的消息。
logger
String
logger名。
loggerContext
日志所属的logger上下文。
level
int
级别对应的整数值,所以level>INFO是正确的表达式。
timeStamp
long
创建日志的时间戳。
marker
Marker
与日志请求相关联的Marker对象,注意“Marker”有可能为null,所以你要确保它不能是null。
mdc
Map
包含创建日志期间的MDC所有值得map。
访问方法是:
mdc.get("myKey")。
mdc.get()返回的是Object不是String,要想调用String的方法就要强转,例如,
((String)mdc.get("k")).contains("val").MDC可能为null,调用时注意。
throwable
java.lang.Throwable
如果没有异常与日志关联"throwable"变量为null.不幸的是,"throwable"不能被序列化。
在远程系统上永远为null,对于与位置无关的表达式请使用下面的变量throwableProxy
throwableProxy
与日志事件关联的异常代理。
如果没有异常与日志事件关联,则变量"throwableProxy"为null.当异常被关联到日志事件时,"throwableProxy"在远程系统上不会为null
<onMatch>:
用于配置符合过滤条件的操作
<onMismatch>:
用于配置不符合过滤条件的操作
例如:
过滤掉所有日志消息中不包含“billing”字符串的日志。
<configuration>
<appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">
<filterclass="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator><!
--默认为ch.qos.logback.classic.boolex.JaninoEventEvaluator-->
<expression>returnmessage.contains("billing");</expression>
</evaluator>
<OnMatch>ACCEPT</OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>
<encoder>
<pattern>
%-4relative[%thread]%-5level%logger-%msg%n
</pattern>
</encoder>
</appender>
<rootlevel="INFO">
<appender-refref="STDOUT"/>
</root>
</configuration>
复制代码
<matcher>:
匹配器,尽管可以使用String类的matches()方法进行模式匹配,但会导致每次调用过滤器时都会创建一个新的Pattern对象,为了消除这种开销,可以预定义一个或多个matcher对象,定以后就可以在求值表达式中重复引用。
<matcher>是<evaluator>的子标签。
<matcher>中包含两个子标签,一个是<name>,用于定义matcher的名字,求值表达式中使用这个名字来引用matcher;另一个是<regex>,用于配置匹配条件。
例如:
<configurationdebug="true">
<appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">
<filterclass="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<matcher>
<Name>odd</Name>
<!
--filteroutoddnumberedstatements-->
<regex>statement[13579]</regex>
</matcher>
<expression>odd.matches(formattedMessage)</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
<encoder>
<pattern>%-4relative[%thread]%-5level%logger-%msg%n</pattern>
</encoder>
</appender>
<rootlevel="DEBUG">
<appender-refref="STDOUT"/>
</root>
</configuration>
复制代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- logback 配置