logback.xml。配置的日志格式化以及日志的文件
1.出现保存日志文件地址不对
idea 重新导入项目解决 重洗配置
1.2文件保存路径设置可分以下三种:
相对路径 logs
绝对路径 /logs 一般不采用
运行程序的父级目录 ../logs
Logback file属性 与 fileNamePattern属性的关系
TimeBasedRollingPolicy(每天新产生一个日志文件)
<appender name="emergencyLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 写入日志内容的文件名称(目录) --> <File>log/check.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 --> <fileNamePattern>log/check.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 每产生一个日志文件,该日志文件的保存期限为30天 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <!-- pattern节点,用来设置日志的输入格式 --> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger [%msg]%n</pattern> <!-- 记录日志的编码:此处设置字符集 - --> <charset>UTF-8</charset> </encoder> </appender> 复制代码
2.SpringBoot 自定义logback.xml打印日志
2.1 SpringBoot默认的日志组合为slf4j + logback
,但是默认配置是日志只输出在控制台,在实际项目中我们需要输出到指定的log文件才便于日后的日志定位。
2.2
-
-
在无任何配置的前提下,只要我们引入了SpringBoot的包,就可以直接使用日志的功能。
-
SpringBoot会默认去加载resources下名为logback.xml 或者 logback-spring.xml的配置文件
-
2.3 logback.xml 文件位置
2.4 <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/root.log.%d{yyyy-MM-dd}.log</FileNamePattern>
2.5 logback.xml
文件默认是放在resources
目录下的,如何想放在其他路径下需要在application.yml
里指定路径:
# 指定logback的路径
logging:
config: classpath:config/logback.xml
3.SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面
3.1 打印日志的两种方式
private final Logger log = LoggerFactory.getLogger(this.getClass());
使用lombok的@Slf4j,帮我们创建Logger对象,效果与方法1一样
异步日志
4.1 filter 过滤器
比较日志记录请求的Level值是否大于等于相应的日志记录类实例的Level值
5. mybatis的sql查询日志希望特殊处理,只输出到一个专门的文件mybatis.log中
<appender name="prpallInterfaceFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/${APP_Name}.interface.log</file> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/${APP_Name}.interface.%d{yyyy-MM-dd}.log </fileNamePattern> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L - %msg%n </pattern> </encoder> </appender> <logger name="ins.business.common.filter.LogFilter" level="INFO" additivity="false"> <appender-ref ref="prpallInterfaceFile" /> </logger>
6. additivity设为true时,这个logger标签会继承root,也就不止打印自己的日志,还会打印root的日志,打印两遍。所以一般情况下都会设置成false。
7.log4net的配置之appender 执行日志事件输出的组件(appender) 滚动策略:重新生成一个新日志文件存储。 根据时间制定日志文件的滚动策略
7.1 ConsoleAppender:将日志信息输出到控制台
7.2 FileAppender将日志信息输出到指定的日志文件。
7.3 RollingFileAppender继承自FileAppender,提供日志目标文件自动切换的功能。例如可以用日期作为日志分割的条件。
RollingFileAppender有两个重要属性,
RollingPolicy负责怎么切换日志,TriggeringPolicy负责何时切换。为了使RollingFileAppender起作用,这两个属性必须设置,
但是如果RollingPolicy的实现类同样实现了TriggeringPolicy接口,则也可以只设置RollingPolicy这个属性。
rollingPolicy RollingPolicy 当发生日志切换时,RollingFileAppender的切换行为。例如日志文件名的修改
triggeringPolicy TriggeringPolicy 决定什么时候发生日志切换,例如日期,日志文件大小到达一定值,如日期改变生成新的文件
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/${APP_Name}.log</file> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/${APP_Name}.%d{yyyy-MM-dd}.log </fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L - %msg%n </pattern> </encoder> </appender>
8.logs 如果发现日志打印到别的项目上
如果java-jar 启动 logs 输出路径没有问题 就不用管了,一般重启就能解决