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