logback配置日志
来源:互联网 发布:数据存储四种方式 编辑:程序博客网 时间:2024/05/20 23:04
logback的详细介绍网上有很多:http://blog.csdn.net/jibaole/article/details/52442694(参考文档)
使用方法:
当我们分清了log4j,logback和slf4j的关系后,我们就可以使用它们了。这里我们主要介绍logback和 slf4j的使用配置方法。
因为logback和 slf4j的开发者是一样的,所以logback很好的与slf4j兼容,下面在maven中导入了两个jar包的引用,一个是logback,一个是slf4j的包,就可以开始记录日志了。
<!--日志管理--><dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.15</version></dependency>
配置文件:
<?xml version="1.0" encoding="utf-8" ?><configuration> <!-- 输出规则 --> <property name="pattern" value="%d{yyyyMMdd:HH:mm:ss.SSS} [%-5level] [%thread] [%C:%L] %msg%n"/> <!--日志输出位置--> <property name="LOG_DIR" value="${APP_HOME}/logs"/> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <target>System.out</target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>{LOG_DIR}/lk_ssm_dome%d{yyyy-MM-dd}.%i.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${LOG_DIR}/com_lk_%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--文件最大为10MB,最多为30个,总的不超过20GB--> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>3GB</totalSizeCap> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> <!-- 只记录error级别,onMatch符合的接收,不符合略过--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 处理com.lk包下面的,additivity="false"不打印上级 --> <logger name="com.lk" additivity="false"> <level value="info"/> <appender-ref ref="FILE"/> <appender-ref ref="STDOUT"/> </logger> <root level="info"> <appender-ref ref="STDOUT"/> </root></configuration>
输出的用法因为使用slf4j的关系,都是一样的。
public Result<Object> logTest() { log.debug("debug"); log.info("info"); log.warn("warm"); log.error("error"); log.trace("trace"); return Result.success(null); }
日志的格式
<!-- 输出规则配置 --><property name="pattern" value="%d{yyyyMMdd:HH:mm:ss.SSS} [%-5level] [%thread] [%C:%L] %msg%n"/>
输出日志格式:
20170706:15:41:10.147 [INFO ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:35] info
并在后面的如果要使用配置规则,只要使用${pattern}就可以了。
日志的级别和显示:
日志的级别划分:
TRACE、DEBUG、INFO、WARN 和 ERROR
打印方法决定记录请求的级别。例如,如果 L 是一个 logger 实例,那么,语句 L.info(“..”)是一条级别为 INFO的记录语句。记录请求的级别在高于或等于其 logger 的有效级别时被称为被启用,否则,称为被禁用。记录请求级别为 p,其 logger的有效级别为 q,只有则当 p>=q时,该请求才会被执行。
该规则是 logback 的核心。级别排序为: TRACE < DEBUG < INFO < WARN < ERROR
节点是必须需要的节点,它的level的属性代表了日志的级别,例如当我们设置为”info”时,控制台只会显示大于等于INFO的日志:
20170706:15:41:10.147 [INFO ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:35] info20170706:15:41:10.148 [WARN ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:36] warm20170706:15:41:10.148 [ERROR] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:37] error
当我们设置成trace时,控制台会打印全部的日志。
20170706:15:41:10.146 [DEBUG] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:34] debug20170706:15:41:10.147 [INFO ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:35] info20170706:15:41:10.148 [WARN ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:36] warm20170706:15:41:10.148 [ERROR] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:37] error20170706:15:41:10.148 [TRACE] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:38] trace
appender标签代表处理日志的方法,我们在root中使用了STDOUT的appender,里面只对日志的格式做了格式的规定。名为FILE的appender用file来记录日志。
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <target>System.out</target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> </appender> <!--文件保存日志 --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${LOG_DIR}/com_lk_error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${LOG_DIR}/com_lk_error_%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--文件最大为10MB,最多为30个,总的不超过20GB--> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>3GB</totalSizeCap> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> <!-- 只记录error级别,onMatch符合的接收,onMismatch不符合略过--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender>
除此之外,我们可以使用log对不同的包的日志做不同的处理,例如下面的设置,对该包下面的info日志做处理,处理方式分别是FILE和STDOUT设置方式。
<!-- 处理com.yingjun包下面的,additivity="false"不打印上级 --> <logger name="com.yingjun" additivity="true"> <level value="info"/> <appender-ref ref="FILE"/> <appender-ref ref="STDOUT"/> </logger>
additivity设置为false时,不打印上级日志,也就是不打印中相同的日志。当我们设置成true时,我们的日志在时又会打印一遍。
20170706:16:29:27.706 [INFO ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:35] info20170706:16:29:27.706 [INFO ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:35] info20170706:16:29:27.707 [WARN ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:36] warm20170706:16:29:27.707 [WARN ] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:36] warm20170706:16:29:27.707 [ERROR] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:37] error20170706:16:29:27.707 [ERROR] [http-nio-8080-exec-5] [com.yingjun.ssm.api.GoodsController:37] error
参考:
http://blog.csdn.net/haidage/article/details/6794509/
http://blog.csdn.net/yingxiake/article/details/51274426
- 【LogBack】logback日志配置及日志分离
- logback配置日志文件
- logback日志配置
- logback日志配置
- logback日志配置
- logback日志管理配置
- logback配置日志输出
- SpringBoot Logback日志配置
- Logback日志配置
- springboot logback日志配置
- springboot logback 日志配置。
- logback.xml---日志配置
- logback 日志文件配置
- logback 异步日志配置
- logback配置日志
- logback日志配置
- logback日志配置
- Springboot logback日志配置
- spring+springMVC+hibernate 三大框架整合
- seq2seq里的 attention机制 的 原理 及 代码 及 个人理解
- js随机设置8位密码
- 二进制输出所有的子集
- 欢迎使用CSDN-markdown编辑器
- logback配置日志
- Python练习-0701
- HDU 4283 You Are the One (区间dp)
- Java实现AES加密解密
- 解决qt提示:qt.network.ssl: QSslSocket: cannot call unresolved function DH_free和qt.network.ssl: QSslSocke
- Java开发中的23种设计模式--单例
- 第九章 汇总数据
- 关闭占用某端口的进程
- MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法