SpringBoot | 第二十三章:日志管理之整合篇 (4)

logback-spring.xml(修改自:logback.xml详解):

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> <property value="/home" /> <!-- 控制台输出 --> <appender> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender> <rollingPolicy> <!--日志文件输出的文件名 --> <FileNamePattern>${LOG_HOME}/TestoKong.log.%d{yyyy-MM-dd}.log </FileNamePattern> <!--日志文件保留天数 --> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小 --> <triggeringPolicy> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- 自定义包下设置为INFO,则可以看见输出的日志不包含debug输出了 --> <logger level="INFO" /> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration> 多环境配置:springProfile

使用扩展属性 springProfile 与 springProperty 让 logback-spring.xml 配置实现多环境配置的效果。

<!-- 生产环境生效 --> <springProfile> <root level="error"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </springProfile> <!-- 测试和开发环境日志级别为INFO/并且记录日志文件 --> <springProfile> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </springProfile>

springProfile还支持读取Spring Environment的属性值

<!-- 读取 spring.application.name 属性来生成日志文件名 scope:作用域 name:在 logback-spring.xml 使用的键 source:application.properties 文件中的键 defaultValue:默认值 --> <springProperty scope="context" source="spring.application.name" defaultValue="myapp.log"/>

之后就可以直接使用${logName}获取到变量值了。

logback格式化符号说明

和log4j2类似,具体可去官网查看:。

%m:输出代码中指定的消息

%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r:输出自应用启动到输出该log信息耗费的毫秒数

%c:输出所属的类目,通常就是所在类的全名

%t:输出产生该日志事件的线程名

%n:输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”

%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlogback.main(TestLogback.java:10)

题外话:SpringBoot默认的logback配置文件在:spring-boot-1.5.15.RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml。

参考资料

关于详细属性配置,大家可以自行搜索下。以下是编写此文时,参考的一些网站信息。

https://www.cnblogs.com/wang1024/p/7786916.html

https://www.cnblogs.com/hafiz/p/6170702.html

https://logback.qos.ch/manual/

总结

本文主要是简单介绍了日志相关知识点,同时对于常用的log4j2和logback相关配置进行了简单介绍。对于详细的配置信息,可去官网查阅下。另外,对于日志而言,不是越多越好,毕竟日志输出是会有性能损坏的。个人是建议,记录该记录的,保留事故现场的及一些错误都是需要进行日志记录的。而像一些无意义的输出,本身就是多余的。最后,不要随意打日志!打印日志时也注意不能用字符串拼接,需要使用占位符或者先判断日志级别!不要让日志拖慢了你的系统!下一章节,主要会介绍下利用AOP实现统一的访问日志管理。

最后

目前互联网上很多大佬都有SpringBoot系列教程,如有雷同,请多多包涵了。本文是作者在电脑前一字一句敲的,每一步都是自己实践和理解的。若文中有所错误之处,还望提出,谢谢。

老生常谈

个人QQ:499452441

微信公众号:lqdevOps

公众号

个人博客:

完整示例:https://github.com/xie19900123/spring-boot-learning/tree/master/chapter-23

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxjgx.html