引言
日志是我们定位问题的关键,尤其是在线上。但是有时我们输出的日志信息不够充足,给排查问题带来了极大的困扰。如果能够不重启应用,就能动态调整日志级别的话,无疑给我们排查问题带来了极大的帮助。 Spring Boot 1.5
从开始,Spring Boot Actuator
组件就已提供动态修改日志级别的能力。在这里基于SpringMVC
封装了log-config-core
的jar,提供了更丰富的功能。
项目地址在我的GitHub:https://github.com/mx-go/log-config-core/tree/master
项目必须使用logback作为日志输出组件。
引入Maven坐标
1 2 3 4 5
| <dependency> <groupId>com.github.mx-go</groupId> <artifactId>log-config-core</artifactId> <version>1.0.0</version> </dependency>
|
使用
jar包中的LogbackServlet
通过web-fragment
会自动注册到服务中,jar包提供以下功能:
- 获取服务所有logger level信息
- 获取单个logger level信息
- 设置指定logger的logger level
- 获取所有日志文件信息
- 查询某日志文件最近N行日志
获取服务所有logger level信息
通过访问:http://ip:prot/logback/all GET 无参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 访问:http: 返回: { "data": [ { "level": "INFO", "logger": "ROOT" }, { "level": "INFO", "logger": "com.rainbowhorse.open" }, { "level": "INFO", "logger": "org.hibernate" }, { "level": "INFO", "logger": "org.springframework" } ], "status": 0 }
|
获取单个logger level信息
通过访问:http://ip:prot/logback/getLogger GET 参数logger[必填]
1 2 3 4 5 6 7 8 9
| 访问:http: 返回: { "data": { "level": "INFO", "logger": "com.rainbowhorse.open" }, "status": 0 }
|
设置指定logger的logger level
通过访问:http://ip:prot/logback/setLevel GET 参数logger[必填]、level[选填]、newLevel[必填]
1 2 3 4 5 6
| 访问:http: 返回: { "data": "修改日志level成功", "status": 0 }
|
获取所有日志文件信息
通过访问:http://ip:prot/logback/getLogFiles GET 无参数
1 2 3 4 5 6 7 8 9 10 11 12 13
| 访问:http://localhost:8081/logback/getLogFiles 返回: { "data": [ { "parent": "../logs", "size": 36828, "name": "admin.log", "lastModified": "2019-05-11 17:03:59" } ], "status": 0 }
|
查询某日志文件最近N行日志
通过访问:http://ip:prot/logback/peekFile GET 参数file[必填]、num[选填,默认1000]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 访问:http: 返回: { "data": [ "2019-05-11 17:13:00,212 WARN [http-nio-8081-exec-6] change logger level start! logger: com.rainbowhorse.open, oldLevel: , newLevel: DEBUG", "2019-05-11 17:13:03,778 DEBUG [http-nio-8081-exec-7] debug", "2019-05-11 17:13:03,778 INFO [http-nio-8081-exec-7] info", "2019-05-11 17:13:03,778 ERROR [http-nio-8081-exec-7] error", "2019-05-11 17:13:18,337 INFO [http-nio-8081-exec-9] logback servlet request uri: /setLevel", "2019-05-11 17:13:18,337 WARN [http-nio-8081-exec-9] change logger level start! logger: com.rainbowhorse.open, oldLevel: , newLevel: INFO", "2019-05-11 17:13:21,441 INFO [http-nio-8081-exec-10] info", "2019-05-11 17:13:21,442 ERROR [http-nio-8081-exec-10] error", "2019-05-11 17:13:25,276 INFO [http-nio-8081-exec-2] logback servlet request uri: /getLogFiles", "2019-05-11 17:13:30,515 INFO [http-nio-8081-exec-3] logback servlet request uri: /peekFile" ], "status": 0 }
|