- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章动态配置Spring Boot日志级别的全步骤由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
前言 。
项目使用了springboot构建项目。下面对动态调整日志的级别进行记录.
从版本 1.5.1 之后就提供了基于 spring-boot-starter-actuator 的端点 /loggers。通过该端点可以实现查看系统的 package-path 的日志级别,以及针对特定的 package-path 配置运行中的应用的日志级别的功能.
actuator 依赖 。
pom 依赖 。
因为是基于 web 的项目和利用 actuator 提供的端点来进行配置,因此需要依赖:
1
2
3
4
5
6
7
8
9
|
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-actuator</artifactid>
</dependency>
|
安全配置 。
actuator 提供的端点(endpoints),默认是需要安全认证才能够被访问的。因为里面涉及到一些敏感的信息。需要安全认证就需要配置 spring-security。为了方便首先配置不需要安全权限的.
1
|
management.security.enabled=
false
|
get 请求访问 。
我们可以发送get 请求到 http://localhost:8091/loggers 来获取支持的日志等级,以及系统(root)默认的日志等和各个包路径(com.mall.goods.zhongkui等)对应的日志级别.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
{
levels: [
"off"
,
"fatal"
,
"error"
,
"warn"
,
"info"
,
"debug"
,
"trace"
],
loggers: {
root: {
configuredlevel:
"info"
,
effectivelevel:
"info"
},
com.mall.goods.zhongkui: {
configuredlevel:
"debug"
,
effectivelevel:
"debug"
},
com.mall.goods.zhongkui.mallcpswomai.mapper: {
configuredlevel:
"debug"
,
effectivelevel:
"debug"
}
}
}
|
配置日志级别 。
编写日志输出类 。
编写一个controller 输出各个级别的日志:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@slf4j
@controller
public
class
testcontroller {
@getmapping
(value =
"/testlog"
)
public
string testlog() {
log.info(
"---------------------------"
);
log.debug(
"debug debug"
);
log.info(
"info info info"
);
log.warn(
"warn warn warn"
);
log.error(
"error error error "
);
log.info(
"---------------------------"
);
return
"ok"
;
}
}
|
查看日志级别 。
启动应用访问 http://localhost:8091/ 得到:
[2018-07-30 18:05:42.868] [http-nio-8091-exec-2] info com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller---------------------------- [2018-07-30 18:05:42.869] [http-nio-8091-exec-2] debug com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-debug debug [2018-07-30 18:05:42.869] [http-nio-8091-exec-2] info com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-info info info [2018-07-30 18:05:42.869] [http-nio-8091-exec-2] warn com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-warn warn warn [2018-07-30 18:05:42.869] [http-nio-8091-exec-2] error com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-error error error [2018-07-30 18:05:42.869] [http-nio-8091-exec-2] info com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller---------------------------- 。
spring boot 默认的 root 日志级别是info.
配置特定包的日志级别 。
通过 /loggers 端点提供的 post 请求,修改包路径com.mall.goods.zhongkui 的日志级别为info。 。
* 发送post 请求到 http://localhost:8091/com.mall.goods.zhongkui,其中请求 body 的内容如下:
1
2
3
|
{
"configuredlevel"
:
"info"
}
|
•get 访问 /loggers/com.mall.goods.zhongkui 查看当前的日志级别:
1
2
3
4
|
{
configuredlevel:
"info"
,
effectivelevel:
"info"
}
|
•再次访问 http://localhost:8091/ 得到:需要注意的是,通过 /loggers 配置的日志级别在应用重启时会恢复到系统的配置。如果想永久的配置日志的级别还是需要通过logging.level.package-path 来进行配置.
总结 。
spring boot 提供的日志级别动态配置功能,为我们的线上应用调试提供了很好的机制。在实际使用中需要结合 spring-security 提供的安全机制来保护actuator 提供的各种系统级端点.
参考 。
1.configure a logger 。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我的支持.
原文链接:https://blog.csdn.net/u014684364/article/details/81289696 。
最后此篇关于动态配置Spring Boot日志级别的全步骤的文章就讲到这里了,如果你想了解更多关于动态配置Spring Boot日志级别的全步骤的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Android 项目中最低(最低 sdk)和最高(目标 sdk)级别是否有任何影响。这些东西是否会影响项目的可靠性和效率。 最佳答案 没有影响,如果您以 SDK 级别 8 为目标,那么您的应用将以 9
我将现有的 android 项目升级到 API 级别 31。我使用 Java 作为语言。我改变了 build.gradle compileSdkVersion 31 defaultConfig {
我正在使用 ionic 3 创建一个 android 应用程序,当我尝试上传到 playstore 时,我收到一个错误,提示我的应用程序以 api 25 为目标,当我检查我的 project.prop
我刚刚尝试将应用程序的目标和编译 API 级别更新为 29 (Android 10),并注意到我无法再编译,因为 LocationManager.addNmeaListener 只接受 OnNmeaM
我的代码没有在 Kitkat 上显示工具栏。 这是我的两个 Android 版本的屏幕截图。 Kitkat 版本: Lollipop 版: 这背后的原因可能是什么。 list 文件
我正在构建面向 API 级别 8 的 AccessabilityService,但我想使用 API 级别 18 中引入的功能 (getViewIdResourceName())。这应该可以通过使用 A
当我想在我的电脑上创建一个 android 虚拟机时,有两个选项可以选择目标设备。它们都用于相同的 API 级别。那么我应该选择哪一个呢?它们之间有什么区别? 最佳答案 一个是基本的 Android,
当我选择 tagret 作为 Android 4.2.2(API 级别 17)时,模拟器需要很长时间来加载和启动。 所以我研究它并通过使用 找到了解决方案Intel Atom(x86) 而不是 ARM
我有一个使用 Android Studio 创建的 Android 项目。我在项目中添加了一些第三方依赖项,但是当我尝试在 Android Studio 中编译时,我遇到了以下错误: Error:Ex
如上所述,如何使用 API 8 获取移动设备网络接口(interface)地址? 最佳答案 NetworkInterface.getInetAddresses() 在 API8 中可用。 关于andr
我想显示 Snackbar并使用图像而不是文本进行操作。 我使用以下代码: val imageSpan = ImageSpan(this, R.drawable.star) val b
我有一个用 python 编写的简单命令行程序。程序使用按以下方式配置的日志记录模块将日志记录到屏幕: logging.basicConfig(level=logging.INFO, format='
使用下面的代码,实现游戏状态以控制关卡的最简单和最简单的方法是什么?如果我想从标题画面开始,然后加载一个关卡,并在完成后进入下一个关卡?如果有人能解释处理这个问题的最简单方法,那就太好了! impor
我想创建一个可以找到嵌套树结构深度的属性。下面的静态通过递归找出深度/级别。但是是否可以将此函数作为同一个类中的属性而不是静态方法? public static int GetDepth(MenuGr
var myArray = [{ title: "Title 1", children: [{ title: "Title 1.1", children: [{
通过下面的代码,实现游戏状态来控制关卡的最简单、最容易的方法是什么?如果我想从标题屏幕开始,然后加载一个关卡,并在完成后进入下一个关卡?如果有人可以解释处理这个问题的最简单方法,那就太好了! impo
我有一个树结构,其中每个节点基本上可以有无限个子节点,它正在为博客的评论建模。 根据特定评论的 ID,我试图找出该评论在树中的深度/级别。 我正在关注 this guide that explains
考虑任何给定的唯一整数的数组,例如[1,3,2,4,6,5] 如何确定“排序度”的级别,范围从 0.0 到 1.0 ? 最佳答案 一种方法是评估必须移动以使其排序的项目数量,然后将其除以项目总数。 作
我如何定义一个模板类,它提供一个整数常量,表示作为输入模板参数提供的(指针)类型的“深度”?例如,如果类名为 Depth,则以下内容为真: Depth::value == 3 Depth::value
我的场景是:文件接收器应该包含所有内容。另一个接收器应包含信息消息,但需要注意的是 Microsoft.* 消息很烦人,因此这些消息应仅限于警告。两个sink怎么单独配置?我尝试的第一件事是: str
我是一名优秀的程序员,十分优秀!