SpringBoot配置输出的日志文件

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、最后,如果都配置正确,会有如下文件:

commonlogsruoyi-adminruoyi-admin_errorruoyi-admin-error-2023-10-11.0.logruoyi-admin_inforuoyi-admin-2023-10-11.0.log

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化测试框架pytest的详解安装与运行

这篇文章主要为大家介绍了Python自动化测试框架pytest的简介以及安装与运行&#xff0c;有需要的朋友可以借鉴参考下希望能够有所帮助&#xff0c;祝大家多多进步 1. pytest的介绍 pytest是一个非常成熟的全功能的python测试工具&#xff0c;它主要有以下特征&#xff1a; 简…

Java List 中存不同的数据类型

在最近的实践中&#xff0c;有人突然问了一个问题&#xff1a; 在 Java 的 List 中可以存不同的数据类型吗&#xff1f; 这个问题突然给问到了&#xff0c;我们都知道 Java 中的 List 中存的是对象&#xff0c;通常我们定义都会这样的定义&#xff1a; List<String> t…

大端字节序存储 | 小端字节序存储介绍

为什么存储的顺序有些变动呢&#xff1f; 大小端的介绍 我们在创建变量时&#xff0c;操作系统就会给你分配空间&#xff0c;比如你创建了【short/int/double/float】的变量&#xff0c;这些变量的类型都是大于1个字节的&#xff0c;操作系统会根据你这个变量的类型&#xff…

Java基础面试-JDK JRE JVM

详细解释 JDK&#xff08;Java Devalpment Kit&#xff09;java 开发工具 JDK是Java开发工具包&#xff0c;它是Java开发者用于编写、编译、调试和运行Java程序的核心组件。JDK包含了Java编程语言的开发工具和工具集&#xff0c;以及Java标准库和其他一些必要的文件。JDK中的…

SpringBoot 如何使用 Grafana 进行可视化监控

使用Spring Boot Sleuth进行分布式跟踪 在现代分布式应用程序中&#xff0c;跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案&#xff0c;它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使…

HomeView/主页 的实现

1. 创建数据模型 1.1 创建货币模型 CoinModel.swift import Foundation// GoinGecko API info /*URL:https://api.coingecko.com/api/v3/coins/markets?vs_currencyusd&ordermarket_cap_desc&per_page250&page1&sparklinetrue&price_change_percentage24…

手动抄表和自动抄表优缺点对比

随着科技的发展&#xff0c;自动抄表技术已经越来越成熟&#xff0c;被广泛应用于各个领域。然而&#xff0c;手动抄表在一些特定场景下仍然具有一定的优势。本文将从手动抄表和自动抄表的优缺点入手&#xff0c;对比分析它们的应用场景和使用价值。 1.成本低&#xff1a;手动抄…

Android Studio: unrecognized Attribute name MODULE

错误完整代码&#xff1a; &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd; (1.8.0_291) &#xfffd;г&#xfffd;&#xfffd;&#xfffd;&#xfffd;쳣&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xff…

web安全漏洞

1.什么是Web漏洞   WEB漏洞通常是指网站程序上的漏洞&#xff0c;可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞。如果网站存在WEB漏洞并被黑客攻击者利用&#xff0c;攻击者可以轻易控制整个网站&#xff0c;并可进一步提前获取网站服务器权限&#xff0c;…

Linux Centos7 下使用yum安装的nginx平滑升级

1. 查看当前nginx版本 1nginx -v2. 查看centos版本 1cat /etc/redhat-release3. 创建一个新的文件nginx.repo&#xff0c;其中第三行的7是因为我的centos版本是7点多的&#xff0c;你看自己是多少就改多少 1vim /etc/yum.repos.d/nginx.repo23[nginx]4namenginx repo 5baseu…

[ACTF2020 新生赛]Exec1

拿到题目&#xff0c;不知道是sql注入还是命令执行漏洞 先ping一下主机 有回显&#xff0c;说明是命令执行漏洞 我们尝试去查看目录 127.0.0.1|ls&#xff0c;发现有回显&#xff0c;目录下面有个index.php的文件 我们之间访问index.php 输入127.0.0.1;cat index.php 发现又…

广州华锐互动:VR互动教学平台如何赋能职业院校?

随着科技的发展&#xff0c;我们的教育方式也在不断进步。其中&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的出现为我们提供了一种全新的教学方式。特别是在职业学校中&#xff0c;VR互动教学平台已经成为一种重要的教学工具。 VR互动教学平台是一种利用虚拟现实技术创…

go mod 使用三方包、go get命令

一、环境变量设置 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,https://goproxy.io,direct 二、goland开启 go mod 三、go mod 使用 在go.mod文件中声明三方包地址&版本号即可&#xff0c;如下&#xff1a; 开发工具goland会自动解析go.mod文件&#x…

Linux 查看CPU架构及内核版本

涉及arch命令和/proc/version文件 1 查看CPU架构 有些软件的安装需要和CPU架构相匹配&#xff0c;如JDK等等&#xff0c;所以需要确定主机的CPU架构类型。可使用命令arch查看Linux系统的CPU架构&#xff0c;如下&#xff1a; arch 12 查看内核版本 文件/proc/version中包含系…

C/C++之自定义类型(结构体,位段,联合体,枚举)详解

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 个人主页&#xff1a;点我进入主页 …

React笔记:useState

1 介绍 useState 是 React 中一个非常重要的钩子&#xff08;Hook&#xff09;&#xff0c;允许在函数组件中添加状态。 2 基本用法 useState 是一个函数&#xff0c;它接收一个参数&#xff08;初始状态值&#xff09;并返回一个数组。 返回的这个数组包含两个元素&#xf…

JAXB 使用记录 bean转xml xml转bean 数组 继承

JAXB 使用记录 部分内容引自 https://blog.csdn.net/gengzhy/article/details/127564536 基础介绍 JAXBContext类&#xff1a;是应用的入口&#xff0c;用于管理XML/Java绑定信息 Marshaller接口&#xff1a;将Java对象序列化为XML数据 Unmarshaller接口&#xff1a;将XML数…

滚珠螺母在工业机器人中的应用优势

工业机器人是广泛用于工业领域的多关节机械手或多自由度的机器装置&#xff0c;具有一定的自动性&#xff0c;可依靠自身的动力能源和控制能力实现各种工业加工制造功能。滚珠螺母作为工业机器人中的重要传动配件&#xff0c;在工业机器人的应用中有哪些优势呢&#xff1f; 1、…

STM32 CubeMX PWM三种模式(HAL库)

STM32 CubeMX PWM两种模式&#xff08;HAL库&#xff09; STM32 CubeMX STM32 CubeMX PWM两种模式&#xff08;HAL库&#xff09;一、互补对称输出STM32 CubeMX设置代码部分 二、带死区互补模式STM32 CubeMX设置代码 三、普通模式STM32 CubeMX设置代码部分 总结 一、互补对称输…

API接口安全运营研究

根据当前API技术发展的趋势&#xff0c;从实际应用中发生的安全事件出发&#xff0c;分析并讨论相关API安全运营问题。从风险角度阐述了API接口安全存在的问题&#xff0c;探讨了API检测技术在安全运营中起到的作用&#xff0c;同时针对API安全运营实践&#xff0c;提出了几个方…