日志框架
日志级别
日志级别从高到低:TRACE < DEBUG < INFO < WARN < ERROR < FATAL
获取应用名字
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="应用名"/>
用于引用名为 spring.application.name 的属性,该属性的来源为 spring.application.name,默认值为 应用名。
获取进程
<springProperty scop="context" name="logUUID" source="spring.logUUID" defaultValue="000000"/>
获取线程
<springProperty scop="context" name="logPID" source="spring.logPID" defaultValue="000000"/>
日志存放路径
<property name="log.path" value="/项目文件夹/ /logs/" />
内容输出控制
<pattern>
[%date]|%-5level|项目名|${logUUID}||${logPID}|%thread|%file:%line||%msg%n
</pattern>
日志内容+换行:%msg%n
文件名:第几行:%file:%line
过滤错误等级
<level>ERROR</level>
按日期和内存存储
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/proc-版本名-项目名-%d{yyyyMMdd}-${host}-%-5i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>7</maxHistory>
</rollingPolicy>
SizeAndTimeBasedRollingPolicy 是按size和time,用-%-5i记录超内存的,%d{yyyyMMdd}记录超时间的。
定义慢sql日志时间的三种方法
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
long_query_time的默认值为10,意思是运行10秒以上的语句,收集后通过explain来分析
1. 慢sql日志想输出到 MySQL 日志中
更改方法
2. 慢sql日志想输出到后台中
- 利用mybatis的config文件设置
<settings>
<setting name="defaultStatementTimeout" value="25"/>
</settings>
-
在 yml 配置文件中写
-
在mapper xml文件中对具体一个sql进行设置,方法为在select/update/insert节点中配置timeout属性,依然是以秒为单位表示超时时间并只作用于这一个sql.
<insert
id="insertAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout="20">
日志中存线程号和进程号的方法
java获取UUID
import java.util.UUID;
public class UUIDGenerator {
public static void main(String[] args) {
//随机生成一个UUID对象
UUID uuid = UUID.randomUUID();
System.out.println("生成的UUID为:" + uuid.toString());
//通过给定的字符串名称和命名空间生成UUID对象
UUID uuid2 = UUID.nameUUIDFromBytes("example_name".getBytes());
System.out.println("生成的UUID2为:" + uuid2.toString());
}
}
/*优点:
Java自带,无需引入额外的库和依赖;
简单易用,一行代码就可以生成UUID。
缺点:
生成的UUID可能会重复,虽然重复的概率较小,但是在高并发的情况下还是有可能发生;
无法控制生成的UUID的格式,只能生成标准的UUID*/
获得 UUID 的其他方法
java 代码要通过spring.factories文件配置到环境中
Springboot中PropertySource的数据结构及加载过程
问题解决
logback出现大量XXX_IS_UNDEFINED日志文件的问题:host没加载出来