SpringBoot配置输出的日志文件

news2025/4/8 5:33:15

SpringBoot配置输出的日志文件

1、无需导入依赖,因为我们创建springboot时,导入的关于springboot的依赖中已经包含了。

2、我们在项目的resources 资源文件下创建logback.xml文件,文件内容如下

作用:

  • 如果是开发时启动的项目,控制台会将相应的关键字彩绘。

  • 如果是将项目部署,会输出两个日志文件,一个是info及其以上的内容都输出,一个是error级别的才会输出

  • 会将日志文件保存近60天的,即会按照时间去存储当天对应的日志内容。共保存60天的,超过后会将60天以前的删除

  • 路径:因为下面是两个级别的日志输出,所以都对应不同路径才显得明了

    • info:

      • <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info/${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        
      • ${LOG_HOME}这种变量是在yml文件中定义,在此文件中引用并使用在这里。

    • error:

      • <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error/${LOG_NAME}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        
      • 和上面的路径大同小异,不过要想布置成功,这里只是第一步,如果是使用docker容器去部署项目,下面还有更重要的需要设置。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 seconds">
    <contextName>logback</contextName>
    <!--日志路径:在yml文件中找到对应的配置项-->
    <springProperty scope="context" name="LOG_HOME" source="logPath"/>
    <!--日志文件名-->
    <springProperty scope="context" name="LOG_NAME" source="logName"/>
    <!--业务日志级别-->
    <springProperty scope="context" name="LOG_BUSINESS_LEVEL" source="logBusinessLevel"/>
    <!--root日志级别-->
    <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logRootLevel"/>

    <!--彩色日志依赖的渲染类-->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!--彩色日志格式(日志文件主目录)-->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!--输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最低级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!--设置字符串-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--level为 INFO 日志,时间滚动输出-->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--正在记录的日志文档的路径及文档名-->
        <!--        <file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info</file>-->
        <!--日志文档输出格式-->
        <encoder>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern>
            <!--设置字符串-->
            <charset>UTF-8</charset>
        </encoder>
        <!--日志记录器的滚动策略,按日期,按大小记录-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--每天日志归档路径以及格式-->
            <!--日志文件路径:这里的%d{yyyy-MM-dd}表示按天分类日志-->
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info/${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--一个文件最大存储空间-->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留60天-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <!--此日志文档只记录info级别的-->
        <!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
        <!--            <level>info</level>-->
        <!--            <onMatch>ACCEPT</onMatch>-->
        <!--            <onMismatch>DENY</onMismatch>-->
        <!--        </filter>-->
    </appender>

    <!--level为 ERROR 日志,时间滚动输出-->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--正在记录的日志文档的路径及文档名-->
        <!--        <file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error</file>-->
        <!--日志文档输出格式-->
        <encoder>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern>
            <!--设置字符串-->
            <charset>UTF-8</charset>
        </encoder>
        <!--日志记录器的滚动策略,按日期,按大小记录-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--每天日志归档路径以及格式-->
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error/${LOG_NAME}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留60天-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <!--此日志文档只记录error级别的-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <!--接受匹配-->
            <onMatch>ACCEPT</onMatch>
            <!--拒绝不匹配的-->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <root level="${LOG_ROOT_LEVEL}">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="INFO_FILE"/>
        <appender-ref ref="ERROR_FILE"/>
    </root>
</configuration>

3、资源文件需要定义的变量:

# 日志配置
logPath: /home/logs
logName: ruoyi-admin
logBusinessLevel: info
logRootLevel: info

4、到这里,关于项目的配置都好了,接下来是关于jenkins的,如果你是通过这个进行的自动化部署且使用docker进行存放项目。

在这里插入图片描述

我们需要改动的地方就这里。

docker stop ruoyi-admin || true 
docker rm ruoyi-admin || true
docker rmi ruoyi-admin || true
docker build -t ruoyi-admin ruoyi-admin/
mkdir -p common/logs/ruoyi-admin
chmod 777 -R common/logs/ruoyi-admin
docker run -d -p 9999:9999  -v /common/logs/ruoyi-admin:/home/logs/ruoyi-admin --net mynet --name ruoyi-admin ruoyi-admin

细看,需要改动的地方

# 这里相当于宿主机与容器关联的文件夹,路径要与项目中yml设置的路径相同,除了开始的home变成common外。
# 其次,在最末尾加上项目名,也就是项目的yml文件中你设置的logName变量值,这样是为了区分各个项目的日志文件
mkdir -p common/logs/ruoyi-admin 
# 将文件夹提升权限,否则可能无法写入
chmod 777 -R common/logs/ruoyi-admin
# /common/logs/ruoyi-admin:/home/logs/ruoyi-admin:路径映射要正确,容器的路径最好是yml文件中
# logPath + logName 的值,即:/home/logs/ruoyi-admin,作用还是区分项目。
# 这里的路径一定要与 logback 文件中设置的开头共有路径一样
# logback.xml:${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error/${LOG_NAME}-error-%d{yyyy-MM-dd}.%i.log
# 我们取 ${LOG_HOME}/${LOG_NAME} 作为项目的共有路径,即 /home/logs/ruoyi-admin
docker run -d -p 9999:9999  -v /common/logs/ruoyi-admin:/home/logs/ruoyi-admin --net mynet --name ruoyi-admin ruoyi-admin

5、最后,如果都配置正确,会有如下文件:

common
	 logs
	  	ruoyi-admin
	  		ruoyi-admin_error
	  			ruoyi-admin-error-2023-10-11.0.log
	  		ruoyi-admin_info
	  			ruoyi-admin-2023-10-11.0.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1082811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Native 开发 要点记录

Android Studio 中写 C 代码 android studio创建C项目_android studio native c-CSDN博客 项目配置参考 【CMake】CMakeLists.txt的超傻瓜手把手教程&#xff08;附实例源码&#xff09;_【cmake】cmakelists.txt的超傻瓜手把手教程(附实例源码)-CSDN博客 CMakeLists.txt 讲解…

竞赛选题 深度学习 植物识别算法系统

文章目录 0 前言2 相关技术2.1 VGG-Net模型2.2 VGG-Net在植物识别的优势(1) 卷积核&#xff0c;池化核大小固定(2) 特征提取更全面(3) 网络训练误差收敛速度较快 3 VGG-Net的搭建3.1 Tornado简介(1) 优势(2) 关键代码 4 Inception V3 神经网络4.1 网络结构 5 开始训练5.1 数据集…

OpenCV4(C++)—— 创建窗口滑动条来调参

文章目录 创建滑动条 —— createTrackbar 创建滑动条 —— createTrackbar createTrackbar是OpenCV中的一个函数&#xff0c;用于创建一个可调节的滑动条&#xff08;Trackbar&#xff09;&#xff0c;以便在图像处理过程中实时调整参数 int cv::createTrackbar(const String…

异地监控如何实现远程访问?贝锐蒲公英无需公网IP即可实现

当前&#xff0c;视频监控系统在各领域都得到了广泛的应用。在交通行业&#xff0c;江苏某科技企业专门从事系统集成、软件开发以及交通信息工程的设计、研发和实施&#xff0c;为高速公路信息化建设提供了一系列解决方案&#xff0c;包括机电系统、视频联网监控系统、征收管理…

I2VGen-XL高清图像生成视频大模型

本项目I2VGen-XL旨在解决根据输入图像生成高清视频任务。I2VGen-XL由达摩院研发的高清视频生成基础模型之一&#xff0c;其核心部分包含两个阶段&#xff0c;分别解决语义一致性和清晰度的问题&#xff0c;参数量共计约37亿&#xff0c;模型经过在大规模视频和图像数据混合预训…

虹科分享 | 独特的FRER机制:TSN如何确保网络的可靠性?

1.IEEE802.1 CB协议 Frame Replication and Elimination for Reliability(FRER)是IEEE 802.1CB协议的一个重要特性&#xff0c;旨在增强以太网网络的可靠性。FRER利用帧复制和消除技术提供冗余保护和从连接故障中快速恢复。 FRER-IEEE 802.1CB协议的应用场景&#xff1a; 高…

Navicat如何连接远程服务器的MySQL

参考:https://blog.csdn.net/a648119398/article/details/122420906 1.Navicat for Mysql 2.腾讯云轻量级服务器一台&#xff08;Centos 7&#xff09; 3.Mysql 8.0.24&#xff08;远程服务器内安装的&#xff09; 4.Xshell7&#xff08;连接操作远程服务器&#xff09; 一、修…

【AI视野·今日Robot 机器人论文速览 第五十一期】Tue, 10 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 10 Oct 2023 Totally 54 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers On Multi-Fidelity Impedance Tuning for Human-Robot Cooperative Manipulation Authors Ethan Lau, Vaibhav Srivastava, Sh…

skywalking动态配置[集成nacos/apollo/consul]

说明:以下配置仅关于的阈值规则的动态配置,其他参数也可以进行配置。 1,skywalking动态配置集成nacos 编辑application.yml nacos配置参数如下: nacos:# Nacos Server HostserverAddr: 10.10.5.145# Nacos Server Portport: 8848# Nacos Configuration Groupgroup: skywal…

塑胶材料检测对激光焊机的作用

塑胶材料的激光焊接已经普遍用于各种零配件&#xff0c;而塑料的透光率是焊接工艺质量的一个重要指标。针对这类塑胶材料推出这款专门检测塑胶材料近红外透光率特性的透光率检测仪&#xff0c;对注塑件的透光率进行全画面扫描。 全球工业致力于贯彻绿色环保、节能减排发展理念&…

IntelliJ IDEA Maven 项目的依赖分析

在一个 maven 的项目中&#xff0c;我们需要知道我们的项目中使用的包可能有哪些冲突。 这个在 IntelliJ IDEA 中提供了贴心的查看。 选择 Maven 项目中的分析依赖。 随后&#xff0c;IntelliJ IDEA 将会打开一个依赖分析的标签页。 在这个标签页中&#xff0c;我们可以看到…

【C++11】function包装器,bind函数模板使用

&#x1f30f;博客主页&#xff1a; 主页 &#x1f516;系列专栏&#xff1a; C ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ &#x1f60d;期待与大家一起进步&#xff01; 文章目录 前言一、function的原型二、function的使用三、bind1.绑定普通函数2.绑定类中的静态成…

机器视觉工程师能不能去海康做机器视觉?

海康对机器视觉工程师招聘体现以下几点&#xff1a; 机器视觉硬件市场竞争的复杂化&#xff0c;对各个“站点”&#xff0c;进行定点服务&#xff0c;如沈阳&#xff0c;北京&#xff0c;天津&#xff0c;苏州&#xff0c;上海&#xff0c;武汉&#xff0c;成都等。 在这种市场…

Vue、js底层深入理解笔记(二)

1.跨域 跨域原因 > 浏览器的同源策略 属于一种保护机制 如果没有同源策略的保护 一般用来处理登录cookie、服务端验证通过后会在响应头加入Set-Cookie字段、下次再发请求的时候&#xff0c;浏览器会自动将cookie附加在HTTP请求的头字段Cookie中、也就是说跳转到其他网站你也…

CubeMX+BabyOS 使用方法

MCU&#xff1a;STM32G030F 编译器&#xff1a;MDK 托管工具&#xff1a;Sourcetree CubeMX创建工程 BabyOS克隆 添加子模块 git submodule add https://gitee.com/notrynohigh/BabyOS.git BabyOS 切换dev 分支 查看当前分支 git branch -a 切换本地分支到dev git che…

NSIC2050JBT3G 车规级120V 50mA ±15% 用于LED照明的线性恒流调节器(CCR) 增强汽车安全

随着汽车行业的巨大变革&#xff0c;高品质的汽车氛围灯效、仪表盘等LED指示灯效已成为汽车内饰设计中不可或缺的元素。深力科安森美LED驱动芯片系列赋能智能座舱灯效充满艺术感和科技感——NSIC2050JBT3G LED驱动芯片&#xff0c;实现对每路LED亮度和颜色进行细腻控制&#xf…

HTML笔记

注释标签&#xff1a;<!-- --> 标题标签&#xff1a;&#xff08;作用范围依次递减&#xff09; <h1></h1> <h2></h2> <h3></h3> <h4></h4> <h5></h5> <h6></h6> 段落标签&#xff1a;<p&g…

Ubuntu上安装、使用MongoDB详细教程

MongoDB是所有非关系型数据库中最像关系型数据库的一种存储技术&#xff0c;MongoDB中的数据结构是类似于JSON的BSON&#xff08;Binary Json&#xff09;&#xff0c;这篇文章就详细介绍如何安装和使用MongoDB。 目录 一、下载MongoDB 二、启动MongoDB 准备工作 启动方式一…

流程自动化如何帮助简化安全性

正如帮助开发 IT 安全最佳实践的政府机构 NIST 所说&#xff0c;人们越来越认识到网络安全是“每个人的工作”。换句话说&#xff0c;不仅仅是 IT 组织内的技术员工必须帮助预防和检测网络安全风险。组织中的每个人&#xff0c;包括没有技术或网络安全背景的员工&#xff0c;都…

深度学习笔记之优化算法(七)总结与延伸:使用Nesterov动量的RMSProp算法

深度学习笔记之优化算法——总结与延伸&#xff1a;使用Nesterov动量的RMSProp算法 引言回顾&#xff1a;优化方式区别(2023/10/11) 关于指数加权移动平均法的补充算法过程描述基于Nesterov动量的RMSProp示例代码 引言 上一节介绍了 RMSProp \text{RMSProp} RMSProp算法&#…