成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Springboot生產環境下,你知道如何動態修改日志級別嗎?

開發 架構
如果你了解過Spring Boot Admin的應該都知道它提供了動態切換日志級別的功能,本篇文章將帶你了解不通過Spring Boot Admin動態實現日志切換的功能。

項目運行時需要打印更加詳細的日志信息又不想修改配置文件然后重啟服務,有沒有一種辦法可以不直接修改配置重啟服務的方式控制日志的級別呢?有,如果你了解過Spring Boot Admin的應該都知道它提供了動態切換日志級別的功能,本篇文章將帶你了解不通過Spring Boot Admin動態實現日志切換的功能。

測試Controller

package com.pack.logger.change_level
@RestController
@RequestMapping("/logger")
public class LoggerLevelChangeController {

private static final Logger logger = LoggerFactory.getLogger(LoggerLevelChangeController.class) ;

@GetMapping("/print")
public Object print() {
logger.info("This is Info logger...") ;
logger.debug("This is Debug logger...") ;
return "print" ;
}

}

配置文件中配置對該包進行配置日志級別

logging:
level:
'[com.pack.logger.change_level]':

測試

2023-01-10 16:29:59.012  INFO 66436 --- [nio-8082-exec-5] c.p.l.c.LoggerLevelChangeController      : This is Info logger...

當前對com.pack.logger.change_level該包配置的日志級別是INFO,所以這里輸出了info級別的日志信息。當把級別調整為DEBUG后,控制臺中會輸出INFO和DEBUG的日志信息,這里修改完后我們是需要重新啟動服務的。接下來看看如何不通過重啟服務也能動態的調整日志的級別。

修改日志級別

接著我們在上面的Controller中添加如下方法:

@GetMapping("/level")
public Object changeLevel(String level) {
LoggingSystem system = LoggingSystem.get(LoggingSystem.class.getClassLoader());
// 第一個參數指定你需要設置的日志記錄器的名稱
// 第二個參數將通過接口傳入的級別轉換為LogLevel后進行設置
system.setLogLevel("com.pack.logger.change_level", resolveLogLevel(level)) ;
return "change logger level success" ;
}
private LogLevel resolveLogLevel(String level) {
String trimmedLevel = level.trim();
return LogLevel.valueOf(trimmedLevel.toUpperCase(Locale.ENGLISH));
}

通過LogginSystem對象進行日志級別的設置。

測試

圖片

將日志級別設置為debug

再次方法上面的print接口,控制臺輸出:

2023-01-10 16:38:40.490  INFO 66436 --- [nio-8082-exec-9] c.p.l.c.LoggerLevelChangeController      : This is Info logger...
2023-01-10 16:38:40.490 DEBUG 66436 --- [nio-8082-exec-9] c.p.l.c.LoggerLevelChangeController : This is Debug logger...

日志級別切換成功,如果服務重啟后你這動態設置的也將無效。

修改整個系統日志級別

上面的示例是僅僅對指定的日志記錄器的名稱進行設置,如果要對整個系統的日志級別進行調整可以通過如下方式:

// 修改上面的changeLevel方法
// 將要設置的日志記錄器名稱也通過參數傳遞
@GetMapping("/level")
public Object changeLevel(String name, String level) {
LoggingSystem system = LoggingSystem.get(LoggingSystem.class.getClassLoader());
// 如果日志記錄器名稱傳入的是root,那么將其設置為null
if (name.equalsIgnoreCase("root")) {
name = null;
}
// 只要將name置為null,那么整個系統的級別都將一同進行調整
system.setLogLevel(name, resolveLogLevel(level)) ;
return "change logger level success" ;
}

測試:

圖片

將root日志級別修改為debug

2023-01-10 16:48:15.244 DEBUG 50544 --- [nio-8082-exec-6] o.a.coyote.http11.Http11InputBuffer      : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [1166]
2023-01-10 16:48:15.244 DEBUG 50544 --- [nio-8082-exec-6] o.a.tomcat.util.net.SocketWrapperBase : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@619d8bee:org.apache.tomcat.util.net.NioChannel@38066775:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59173]], Read from buffer: [0]
2023-01-10 16:48:15.244 DEBUG 50544 --- [nio-8082-exec-6] org.apache.tomcat.util.net.NioEndpoint : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@619d8bee:org.apache.tomcat.util.net.NioChannel@38066775:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59173]], Read direct from socket: [1166]
2023-01-10 16:48:15.244 DEBUG 50544 --- [nio-8082-exec-6] o.a.coyote.http11.Http11InputBuffer : Received [GET /logger2/print HTTP/1.1
Host: localhost:8082
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: rememberMe=true; SESSION=YzQ4NTBkOTQtN2EzYi00YWNjLTk0ZmItZTBmYWVlNGJiNDUx; username=admin; size=small; sidebarStatus=1; password=KfhG4ggUsr1BSTaK5EMdiKhM+5GWwmRl9agleoPd4kaDAjpntUNu81ogBYVblALKNf9uqqnY+vEmCpY0ALWuyw==; Admin-Token=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk0MGEwZmVhLWY2NWMtNGRmNy1hMDhhLWMxZDRhMDBkODZmOSJ9.r4syG-ZXBwOre2p6CDpIqaBePZuzPHFjako6oGXUejqxzxAoHA70Ov5bwmqJ9WB-rnwPQx-QSKxLJKDcgfBKdw; JSESSIONID=862D0514B6BDF558E299783289188AB9

]
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] o.a.t.util.http.Rfc6265CookieProcessor : Cookies: Parsing b[]: rememberMe=true; SESSION=YzQ4NTBkOTQtN2EzYi00YWNjLTk0ZmItZTBmYWVlNGJiNDUx; username=admin; size=small; sidebarStatus=1; password=KfhG4ggUsr1BSTaK5EMdiKhM+5GWwmRl9agleoPd4kaDAjpntUNu81ogBYVblALKNf9uqqnY+vEmCpY0ALWuyw==; Admin-Token=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk0MGEwZmVhLWY2NWMtNGRmNy1hMDhhLWMxZDRhMDBkODZmOSJ9.r4syG-ZXBwOre2p6CDpIqaBePZuzPHFjako6oGXUejqxzxAoHA70Ov5bwmqJ9WB-rnwPQx-QSKxLJKDcgfBKdw; JSESSIONID=862D0514B6BDF558E299783289188AB9
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] o.a.catalina.connector.CoyoteAdapter : Requested cookie session id is 862D0514B6BDF558E299783289188AB9
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] o.a.c.authenticator.AuthenticatorBase : Security checking request GET /logger2/print
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] org.apache.catalina.realm.RealmBase : No applicable constraints defined
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] o.a.c.authenticator.AuthenticatorBase : Not subject to any constraint
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] org.apache.tomcat.util.http.Parameters : Set encoding to UTF-8
2023-01-10 16:48:15.245 DEBUG 50544 --- [nio-8082-exec-6] o.s.web.servlet.DispatcherServlet : GET "/logger2/print", parameters={}
2023-01-10 16:48:15.246 DEBUG 50544 --- [nio-8082-exec-6] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.pack.logger.change_level.LoggerController#print()
2023-01-10 16:48:15.246 INFO 50544 --- [nio-8082-exec-6] c.p.l.change_level.LoggerController : This is Info logger...
2023-01-10 16:48:15.246 ERROR 50544 --- [nio-8082-exec-6] c.p.l.change_level.LoggerController : This is Error logger...
2023-01-10 16:48:15.246 DEBUG 50544 --- [nio-8082-exec-6] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, application/signed-exchange;v=b3;q=0.9, */*;q=0.8] and supported [text/plain, */*, text/plain, */*, application/json, application/*+json, application/json, application/*+json]
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] m.m.a.RequestResponseBodyMethodProcessor : Writing ["print"]
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] o.s.web.servlet.DispatcherServlet : Completed 200 OK
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [1166]
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] o.a.tomcat.util.net.SocketWrapperBase : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@619d8bee:org.apache.tomcat.util.net.NioChannel@38066775:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59173]], Read from buffer:

[0]
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] org.apache.tomcat.util.net.NioEndpoint : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@619d8bee:org.apache.tomcat.util.net.NioChannel@38066775:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59173]], Read direct from socket: [0]
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] o.a.coyote.http11.Http11InputBuffer : Received []
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@619d8bee:org.apache.tomcat.util.net.NioChannel@38066775:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59173]], Status in: [OPEN_READ], State out: [OPEN]
2023-01-10 16:48:15.247 DEBUG 50544 --- [nio-8082-exec-6] org.apache.tomcat.util.net.NioEndpoint : Registered read interest for [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@619d8bee:org.apache.tomcat.util.net.NioChannel@38066775:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59173]]
2023-01-10 16:48:16.258 DEBUG 50544 --- [nio-8082-exec-7] o.apache.tomcat.util.threads.LimitLatch : Counting down[http-nio-8082-exec-7] latch=2
2023-01-10 16:48:16.258 DEBUG 50544 --- [nio-8082-exec-7] org.apache.tomcat.util.net.NioEndpoint : Calling [org.apache.tomcat.util.net.NioEndpoint@78b6cb49].closeSocket([org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@76712a2f:org.apache.tomcat.util.net.NioChannel@724ea039:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8082 remote=/0:0:0:0:0:0:0:1:59176]])

這次輸出了很多的信息,整個請求的所有信息。

關閉日志

修改上面解析日志級別的方法:

private LogLevel resolveLogLevel(String level) {
String trimmedLevel = level.trim();
if ("false".equalsIgnoreCase(trimmedLevel)) {
return LogLevel.OFF;
}
return LogLevel.valueOf(trimmedLevel.toUpperCase(Locale.ENGLISH));
}

只需要將level設置為false即可。

責任編輯:武曉燕 來源: 實戰案例錦集
相關推薦

2024-02-23 08:09:43

Rediskey名字數據庫

2024-07-01 08:40:18

tokio派生線程

2021-02-20 08:21:18

Hive動態分區

2024-11-14 10:44:57

2024-09-05 09:25:59

SpringUserDAO接口

2023-06-08 08:06:07

error錯誤頁原理

2021-12-03 07:27:29

EFCore生產環境

2021-03-04 23:11:59

環境變量Python

2021-02-19 07:59:21

數據埋點數據分析大數據

2021-08-26 05:00:44

生產環境內存

2023-01-31 09:02:24

JSVMVR

2024-02-26 08:19:00

WebSpring容器

2023-06-08 07:48:03

Java線程池

2024-07-08 00:00:01

多線程ThreadC#

2017-12-28 15:26:37

2023-03-21 07:39:51

CentOS掛載硬盤

2023-01-13 17:02:10

操作系統鴻蒙

2017-10-16 13:45:04

2010-11-23 10:21:53

跳槽
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩高清一区二区 | 91中文在线观看 | 高清视频一区二区三区 | 国产精品久久久久久久久久久免费看 | 久一久 | 亚洲一区成人 | 丝袜毛片 | 国产亚洲一区二区三区 | 欧美网址在线观看 | 欧美一级免费 | 欧美国产在线一区 | 中文字幕一区二区三区四区五区 | 国产精品久久欧美久久一区 | 久久久久久久综合色一本 | 国产一区二区三区四区hd | 日韩精品在线观看免费 | 久久久一二三区 | 一区二区三区欧美 | 午夜在线小视频 | 欧美一区在线视频 | 国产一区二区在线免费观看 | 久久精品成人热国产成 | 成人国产精品久久久 | 国产成人精品一区二区在线 | 91精品一区二区三区久久久久久 | 日本天堂一区二区 | 一区二区三区免费 | 97精品超碰一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 欧美精品久久久久久久久久 | 中文字幕中文字幕 | 狠狠做深爱婷婷综合一区 | 日日操天天射 | 男人天堂久久 | 日韩在线视频一区 | 欧美一区二区三区视频 | 天堂综合网久久 | 国产精品视频免费观看 | 97高清国语自产拍 | 成人免费在线观看视频 | 亚洲成人精品 |