springboot 项目日志配置文件详解

spring boot  项目指定 日志配置文件

在Spring Boot项目中,可以通过在application.propertiesapplication.yml文件中指定日志配置文件来配置日志。

1. 使用application.properties文件:

application.properties中,您可以使用以下属性来指定日志配置文件:

logging.config=classpath:custom-logback.xml

上述配置将告诉Spring Boot使用位于类路径下的custom-logback.xml文件作为日志配置文件。您可以将文件路径更改为您自己的日志配置文件的路径。

2. 使用application.yml文件:

application.yml中,您可以使用以下属性来指定日志配置文件:

logging:
  config: classpath:custom-logback.xml

与上述application.properties的配置相同,此配置将告诉Spring Boot使用位于类路径下的custom-logback.xml文件作为日志配置文件。

请确保日志配置文件位于类路径下,或者根据需要指定正确的文件路径。

使用上述配置,您可以在Spring Boot项目中指定自定义的日志配置文件,以覆盖默认的日志配置。

logback-spring.xml 和 logback.xml 区别

方案一

在使用 Logback 作为日志框架时,logback-spring.xml 和 logback.xml 是两个常用的配置文件,它们在加载和处理配置方面略有不同。

  1. logback-spring.xml

    • logback-spring.xml 是专为 Spring Boot 项目准备的 Logback 配置文件。
    • 当使用 Spring Boot 时,如果存在 logback-spring.xml 文件,Spring Boot 会自动加载并替换默认的 Logback 配置。
    • logback-spring.xml 支持 Spring Boot 的特性和扩展,例如可以使用 Spring 的属性占位符 ${} 进行动态配置。
    • Spring Boot 在加载 logback-spring.xml 时,还会进行日志级别的自动配置,根据应用程序的 application.properties 或 application.yml 中的 logging.level.* 配置来设置日志级别。
    • logback-spring.xml 的加载顺序优先于 logback.xml
  2. logback.xml

    • logback.xml 是通用的 Logback 配置文件,适用于非 Spring Boot 项目或不需要 Spring Boot 特性的项目。
    • 如果存在 logback.xml 文件,它会被加载和使用,而忽略任何 logback-spring.xml
    • logback.xml 配置中无法使用 Spring 的属性占位符,因为它不会经过 Spring 的处理。
    • logback.xml 需要手动配置日志级别和其他相关设置,不会自动受到应用程序的其他配置文件影响。

总结:

  • 如果使用 Spring Boot 项目,建议使用 logback-spring.xml 配置文件,以便享受 Spring Boot 的自动配置和属性占位符的特性。
  • 对于非 Spring Boot 项目或不需要 Spring Boot 特性的项目,使用 logback.xml 配置文件即可。

需要注意的是,无论是 logback-spring.xml 还是 logback.xml,它们的配置语法和元素都是相同的,可以根据具体需求进行配置。

方案二

logback-spring.xml 和 logback.xml 是用于配置 Logback 日志框架的文件,它们在使用方式和加载机制上有一些区别。

logback-spring.xml 是针对 Spring Framework 应用程序特定的 Logback 配置文件,它与 Spring 的集成提供了一些额外的功能和特性。当存在 logback-spring.xml 文件时,Spring Boot 应用程序会优先加载它。这个特定的文件名是为了利用 Spring Boot 的自动配置机制,可以通过在 logback-spring.xml 中使用 Spring 属性占位符,从应用程序的 application.properties 或 application.yml 文件中动态配置日志。这意味着您可以在运行时通过 Spring 的属性配置来更改 Logback 日志的行为。

相比之下,logback.xml 是通用的 Logback 配置文件,用于非 Spring 应用程序或不需要与 Spring 集成的应用程序。当不存在 logback-spring.xml 文件时,Logback 会尝试加载 logback.xml 文件。这个文件通常用于独立的 Java 应用程序或其他非 Spring 环境下的应用程序。

如果您使用的是 Spring Boot 框架,建议优先使用 logback-spring.xml 文件来配置 Logback,以获得更好的集成和动态配置的能力。如果您不使用 Spring Boot,或者不需要与 Spring 集成,那么可以使用 logback.xml 来配置 Logback。

spring boot 项目日志配置文件指定日志输入目录

在Spring Boot项目中,要指定日志文件的输出目录,您可以使用以下方法:

1. 使用application.properties配置文件:

application.properties中,您可以使用以下属性来指定日志文件的输出目录:

logging.file.path=/path/to/logs

/path/to/logs替换为您希望日志文件输出的目录路径。

2. 使用application.yml配置文件:

application.yml中,您可以使用以下属性来指定日志文件的输出目录:

logging:
  file:
    path: /path/to/logs

同样,将/path/to/logs替换为您希望日志文件输出的目录路径。

请确保指定的目录具有适当的权限,以便应用程序能够在该目录中创建和写入日志文件。

通过上述配置,您可以将日志文件输出到指定的目录,而不是默认的日志目录。

日志文件配置案例

案例一

配置文件 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--按天生成日志-->
    <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>
                applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
            </FileNamePattern>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
    </appender>
    <!-- logger节点,可选节点,作用是指明具体的包或类的日志输出级别,以及要使用的<appender>(可以把<appender>理解为一个日志模板)。addtivity:非必写属性,是否向上级loger传递打印信息。默认是true-->
    <logger name="com.leshangju.project" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile"/>
    </logger>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile"/>
    </root>

</configuration>

日志生成目录展示

案例二

配置文件 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">

    <springProperty scope="context" name="logPath" source="gjsp.logs.path" defaultValue="${user.home}/data/app/cars-gjsp/logs"/>

    <property name="APP_NAME" value="cars-gjsp"/>
    <property name="LOG_HOME" value="data/app/gjsp/logs/${APP_NAME}"/>
    <springProfile name="prod">
        <property name="LOG_HOME" value="/${logPath}/${APP_NAME}"/>
    </springProfile>

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </layout>
    </appender>

    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${APP_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <MaxHistory>30</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
        </layout>
    </appender>

    <logger name="org.springframework" level="info" additivity="false"/>

    <logger name="io.swagger" level="OFF"/>
    <logger name="springfox.documentation" level="OFF"/>
    <logger name="io.lettuce" level="info" additivity="false"/>
    <logger name="io.netty" level="info" additivity="false"/>
    <logger name="org.apache.http.wire" level="info" additivity="false"/>
    <logger name="jdbc.connection" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <logger name="jdbc.resultsettable" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.sqltiming" level="INFO"/>
    <logger name="jdbc.sqlonly" level="OFF"/>

    <logger name="org.hibernate.SQL" additivity="false">
        <level value="info"/>
        <appender-ref ref="console"/>
        <appender-ref ref="appLogAppender"/>
    </logger>

    <!-- 2. 输出SQL 的参数到控制台和文件-->
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false">
        <level value="info"/>
        <appender-ref ref="console"/>
        <appender-ref ref="appLogAppender"/>
    </logger>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="appLogAppender"/>
    </root>
</configuration>

 日志生成目录展示

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

元核云私募双录助力私募基金业务高效合规

近年来&#xff0c;私募基金监管政策不断收紧&#xff0c;今年7月发布的《私募投资基金监督管理条例》更是把私募投资基金业务活动纳入法治化、规范化轨道进行监管。 作为保障私募基金业务透明合规的重要手段&#xff0c;“双录”一直是私募流程中非常重要的一环&#xff0c;多…

三、SQL注入之报错注入

文章目录 1、 xpath语法&#xff08;1&#xff09;extractvalue&#xff08;2&#xff09;updatexml 2、concatrand()group by()导致主键重复 报错注入就是利用了数据库的某些机制&#xff0c;人为地制造错误条件&#xff0c;使得查询结果能够出现在错误信息中。这里主要介绍报…

动漫3D虚拟人物制作为企业数字化转型提供强大动力

一个 3D 虚拟数字人角色的制作流程&#xff0c;可以分为概念设定-3D 建模-贴图-蒙皮-动画-引擎测试六个步骤&#xff0c;涉及到的岗位有原画师、模型师、动画师等。角色概念设定、贴图绘制一般是由视觉设计师来完成;而建模、装配(骨骼绑定)、渲染动画是由三维设计师来制作完成。…

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题&#x1f43e; 一、为什么关闭连接的需要四次挥⼿&#xff0c;⽽建⽴连接却只要三次握⼿呢&#xff1f;&#x1f3ed; 二、为什么连接建⽴的时候是三次握⼿&#xff0c;可以改成两次握⼿吗&#xff1f;&#x1f463; 三、为什么主动断开⽅在TIME-WAIT状态…

wustojc3001求三角形面积

#include <stdio.h> #include <math.h> int main() {float a,b,c,d;double s;scanf("%f%f%f",&a,&b,&c);if(ab>c&&ac>b&&cb>a){d(abc)/2;ssqrt(d*(d-a)*(d-b)*(d-c));//数学公式printf("%.2f",s);}retur…

(成功踩坑)electron-builder打包过程中报错

目录 注意&#xff1a;文中的解决方法2&#xff0c;一定全部看完&#xff0c;再进行操作&#xff0c;有坑 背景 报错1&#xff1a; 报错2&#xff1a; 1.原因&#xff1a;网络连接失败 2.解决方法1&#xff1a; 3.解决方法2&#xff1a; 3.1查看缺少什么资源文件 3.2去淘…

软件开发bug问题跟踪与管理

一、Redmine 项目管理和缺陷跟踪工具 官网&#xff1a;https://www.redmine.org/ Redmine 是一个开源的、基于 Web 的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示&#xff0c;同时它又支持多项目管理。Redmine 是一个自由开源软件解决方案&#xff0c;…

如何将图片应用于所有的PPT页面?

问题&#xff1a;如何快速将图片应用到所有PPT页面&#xff1f; 解答&#xff1a;有两种方法可以解决这个问题。第一种用母板。第二种用PPT背景功能。 解决有时候汇报的时候&#xff0c;ppt中背景图片修改不了以及不知道如何查找&#xff0c;今天按照逆向过程进行操作 方法1…

详解C#-static void Main(string[] args)

目录 简介: 举例: 输出结果:​编辑 总结&#xff1a; 简介: 在C#中static void Main(string[] args)这个句话有什么作用&#xff0c;分别代表什么意思&#xff01;&#xff01; 这句话是入口函数的声明&#xff0c;指定了C#程序的入口点&#xff0c;并定义了一个名为”Mai…

Go语言GIN框架安装与入门

Go语言GIN框架安装与入门 文章目录 Go语言GIN框架安装与入门1. 创建配置环境2. 配置环境3. 下载最新版本Gin4. 编写第一个接口5. 静态页面和资源文件加载6. 各种传参方式6.1 URL传参6.2 路由形式传参6.3 前端给后端传递JSON格式6.4 表单形式传参 7. 路由和路由组8. 项目代码mai…

wustojc3006水果店收款

#include <stdio.h> int main() {double a,b,c,d,sum;scanf("%lf%lf%lf%lf",&a,&b,&c,&d);suma*2.5b*1.7c*2.0d*1.2;printf("%.2lf",sum);//注意保留几位小数return 0;}

图数据库_Neo4j学习cypher语言_常用函数_关系函数_字符串函数_聚合函数_数据库备份_数据库恢复---Neo4j图数据库工作笔记0008

然后再来看一些常用函数,和字符串函数,这里举个例子,然后其他的 类似 可以看到substring字符串截取函数 可以看到截取成功 聚合函数 这里用了一个count(n) 统计函数,可以看到效果 关系函数,我们用过就是id(r) 可以取出对应的r的id来这样..

Scratch 游戏 之 随机大地图生成教程

在很多生存 / 沙盒类游戏中&#xff0c;地图往往是随机生成的&#xff0c;例如&#xff1a;饥荒、我的世界等。那我们该如何在scratch中实现这一点呢&#xff1f; 在scratch中有两种办法可以实现——画笔和克隆体。我们这次先聊克隆体。 我们可以先将克隆体设置为方形的&#x…

python AI绘图教程

前提 1.安装python 2.安装git 步骤 下载stable-diffusion-webui项目&#xff08;链接&#xff1a;GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI&#xff09; git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 安装st…

.netcore grpc客户端工厂及依赖注入使用

一、客户端工厂概述 gRPC 与 HttpClientFactory 的集成提供了一种创建 gRPC 客户端的集中方式。可以通过依赖包Grpc.Net.ClientFactory中的AddGrpcClient进行gRPC客户端依赖注入AddGrpcClient函数提供了许多配置项用于处理一些其他事项&#xff1b;例如AOP、重试策略等 二、案…

azure VM完全复制

创建虚拟机&#xff0c;并创建linux服务&#xff0c;可以参考 https://blog.csdn.net/m0_48468018/article/details/132267096 &#xff0c; https://blog.csdn.net/m0_48468018/article/details/132267315在虚拟机中点击磁盘快照&#xff0c;创建磁盘快照 通过磁盘快照创建磁盘…

我的编程语言学习笔记

前言 作为一名编程初学者&#xff0c;我深知学习编程需要不断积累和记录。在这篇博客文章中&#xff0c;我将分享一些我在学习C/C编程语言过程中记录的常用代码、特定函数、复杂概念以及特定功能。希望能与大家一起切磋进步&#xff01; 常用代码&#xff1a; 1. 输入输出操作…

vscode如何关闭受限模式

受限模式旨在实现安全地浏览代码 第一步&#xff1a; 第二步&#xff1a;输入trust,找到Security.workspace.trust,取消勾选 第三步&#xff1a; 重启vscode.

多维时序 | MATLAB实现SCNGO-CNN-Attention多变量时间序列预测

多维时序 | MATLAB实现SCNGO-CNN-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SCNGO-CNN-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.SCNGO-CNN-Attention超前24步多变量回归预测算法。 程序平台&#xff1a;无Attention适…

回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介…