自定义日志配置文件|学习笔记

简介: 快速学习自定义日志配置文件

开发者学堂课程【SpringBoot 实战教程自定义日志配置文件】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10782


自定义日志配置文件


1、因为 springboot 默认使用的是 logback 日志框架所以 springboot 已经自动配置相关的配置如果要修改相关配置可以在全局配置文件中写入自己所用的配置即可除此以外还可以自定义配置文件可以使用外部的配置文件对日志进行管理

2、通过系统属性和传统的 SpringBoot 外部配置文件依然可以很好的支持日志控制和管理。根据不同的日志系统,可以按如下规则组织配置文件名,就能被正确加载:

Logback: logback-spring. xml,logback-spring. groovy,

logback. xl, logback. groovy

Log4j: log4j-spring.properties, log4j-spring.xml, log4j. properties,log4j. xml

Log4j2: log4j2- spring.xmlog4j2. xml

JDK (Java Util Logging): logging. Properties

Spring Boot 官方推荐优先使用带有-spring 的文件名作为你的日志配置(如使用 logback-spring. xml,而不是 logback. xml),命名为 logback-spring. xml 的日志配置文件,spring boot 可以为它添加一些 spring boot 特有的配置项。

如果你即想完全掌控日志配置,但又不想用 logback. xml 作为 Logback 配置的名字,可以通过 logging. config 属性指定自定义的名字:

logging. config=classpath: logging-config. xml

可以区分不同的环境生产环境下可以用某一个日志文件开发环境下用某一个日志文件虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行时Profile使用不同的日志配置,这个功能会很有用。

<?Xml versior= "l. 0" encoding= "UTF-8 "?>

<configuration scan=" true scanPeriod=60 secands debug=”false“>

<çontextName> logback /çontextName >

<property name= 'log. path" value= "E: \\springboot\\info. log"/>

<!--输出到控制台-->

<appender name= console" class=' "ch. gos. logback. core. ConsoleAppender"

<!-- <filter class=ch. gos. logback. classic. filter. ThresholdFilter" >

<level>ERR0R</level>

</fiIter>-->

<encoder>

<pattern> %d (HH: nm:ss. SSS] %contextName [%thread] %-5leve1 %logger (36]

-%msg%n<. /pattern>

</encoder>

</appender>

<!--输出到文件-->

<appender, name=“file" class=' "ch gos. Iogback. core. rolling. RollingFileAppendler“>

<file>${log. Path}</file>

<rollingPolicy class=ch.gos.logback.core.rolling. TimeBasedRoI IingPoIicy">

<fileNamePattern> logback. %d {yyyy -MM-dd }.log</fileNamePattern>

</rollingPolicy>

<encoder>

<root level= info>

<appender ref ref=' conso1e" />

<appender-ref ref= "fi1e”/>

< /root>

<!-- logback java 中的包 -->

<logger name= com. gianfeng: controller “/>

<!--additivity是否向上级loger传递打印信息-->

<logger name= com. qianfeng. controller. SpringController" level=”WARN

additivity= "false>

<appender-ref ref= console' "/>

</1ogger>

</configuration>

3、把之前的删掉重新创建配置文件命名为 logback.spring.xml

4、分标签叫 configurationscan 设置为 true 时当发现配置文件发生变化时它会进行重新加载所以设置为 truescanperiod 是每间隔多久就扫描一次当前配置文件是否发生改变默认是一分钟单位是秒

5、根节点<configuration>包含的属性:

(1)scan:当此属性设置为true时, 配置文件如果发生改变,将会被重新加载,默认值为true。

(2)scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当 scan 为 true 时,此属性生效。默认的时间间隔为1分钟。

(3)debug:当此属性设置为 true 时将打印出 logback 内部日志信息实时查看 logback 运行状态。默认值为 false。

(4)<contextname>:每个 logger 都关联到 logger 上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。旦设置,不能修改可以通过%contextName 来打印日志上下文名称。

(5)<property>:用来定义变量值的标签有两个属性,name 和 value其中name 的值是变量的名称,value 的值变量定义的值。通过定义的值会被插入到logger 上下文中。定义变量后,可以使“${}”来使用变量。名字自己任意起从值上可以看出要把日志写入文件的日志路径名称

(6)<appender>:用来格式化日志输出节点,有个属性 name 和 class,class  用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。日志输出策略指的是要把日志输出到控制台对应的时间类叫 consoleappenderencoder 指定格式日志时间上下文名称当前线程名称日志级别日志的名字以及日志信息,%是换行符

(7)ThresholdFilter 为系统定义的拦截器,例如我们用 ThresholdFilter 来过滤掉 error 级别以下的日志不输出到文件中如果不用记得注释掉

(8)输出到文件名字是 file实现实现类叫 rollingfileappender把日志写入文件$引用 log.path,log.path是前面定义的一个变量对应的值是日志文件的路径和名称这个文件就写入到这个文件 springboot\\info.log 下的日志文件中指定把日志写入哪个位置也可以指定写入到文件中日志的格式跟控制台一样日志时间上下文名称当前线程名称日志级别日志的名字以及日志信息

(9)rollingpolicy 指切割策略日志文件的切割策略一个日志文件让它不要太大

(10)<fileNamePattern> logback. %d {ywy-MM-dd}. log</fileNamePattern>:定义了日志的切分方式把每一天的日志归档到一个文件中第二天再生成新的日志文件

(11)<maxHistory>30</maxHistory>:表示只保留最近30天的日志,以防止日志填满整个磁盘空间。这是精确到天同理,可以使用%d {yyyy-MM-dd_ HH-mm} 来定义精确到分的日志切分方式。

(12)<totalSizeCap> 1GB</totalSizeCap>用来指定日志文件的上限大小,例如设置为1GB,那么到这个值,就会删除旧的日志。在文件中输出的策略中有文件切割策略

(13)<root>节点是必选节点,用来指定最基础的日志输出级别,只有一个 level 属性。输出日志的最低级别是 info 级别以及日志向哪输出一个是控制台一个是file

(14)<loger>用来配置具体的包或者包中具体的类设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender><loger>仅有一个 name 属性,一个可选的 leve1 和一个可选的 addtivity 属性。比如有一个类叫  springcontroller希望和它相关的日志打印是 error 级别但是这里配置的是 info 级别那么这时就需要单独配置

(15)name:用来指定受此 loger 约束的某一个包或者具体的某一个类 。 Com.qianfeng.controller 指定的是包名下面具体到类要把这个类的权限域名写上包名加类名都要写上设置这个类相关的日志文件信息的级别不使用 info使用的是 warn属性

(16)level:用来设置打印级别,大小写无关: TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特殊值 INHERITED 或者同义词 NULL,代表强制执行上级的级别。如果未设置此属性,那么当前 loger 将会继承上级的级别。

(17)addtivities:是否向上级 logger 传递打印信息。默认是 false。

(18)和这个类相关的日志信息是输出到控制台还是输出到文件还是控制台和文件都输出

<Loggername= "com. Qianfeng. controller. Springcontroller

这个只向控制台打印信息文件中没有这是自己写日志配置文件的相关的内容

6、运行启动工程打开控制台可以看到很多都是info级别的找到 springboot-info.log 日志文件打开可以看到在控制台的日志信息同样也写入到日志文件这就是如何自定义配置文件

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2194 1
|
8月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
571 52
|
9月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
SAE(Serverless应用引擎)是阿里云推出的全托管PaaS平台,致力于简化微服务应用开发与管理。为满足用户对可观测性和运维能力的更高需求,SAE引入Sidecar容器技术,实现日志采集、监控指标收集等功能扩展,且无需修改主应用代码。通过共享资源模式和独立资源模式,SAE平衡了资源灵活性与隔离性。同时,提供全链路运维能力,确保应用稳定性。未来,SAE将持续优化,支持更多场景,助力用户高效用云。
|
12月前
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
208 13
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
1353 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
306 1
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
207 1
|
Shell Python
salt自定义模块内使用日志例子
salt自定义模块内使用日志例子

热门文章

最新文章