Springboot整合logback多节点日志文件加端口号区分

news2025/1/25 9:14:36

描述:正常情况下:在Springboot 项目的resources目录下创建一个logback-spring.xml的日志配置文件,简单配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="./logs" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--日志文件输出的文件名-->
        <FileNamePattern>${LOG_HOME}/info.log.%d{yyyy-MM-dd}.log</FileNamePattern>
        <!--日志文件保留天数-->
        <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
</appender>


<!-- 日志输出级别 -->
<root level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>

</configuration>

项目启动后日志都会存储在:部署目录下的 logs 文件夹下面:

<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="./logs" />

文件名称为:

 <!--日志文件输出的文件名-->
  <FileNamePattern>${LOG_HOME}/info.log.%d{yyyy-MM-dd}.log</FileNamePattern>

如图:

存在的问题:当Springboot项目集群多节点部署时候,多个项目指向的是同一个logback日志文件,如何区分开?

解决:增加端口号区分即可

新增获取端口配置:

<springProperty name="port" scope="context" source="server.port" defaultValue="0000"/>

并且在文件名称处,获取端口号即可:

<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}_${port}.log</FileNamePattern>

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="./wzzs-log" />
<springProperty name="port" scope="context" source="server.port" defaultValue="0000"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--日志文件输出的文件名-->
        <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.${port}.log</FileNamePattern>
        <!--日志文件保留天数-->
        <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
</appender>


<!-- 日志输出级别 -->
<root level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>

</configuration>

最终结果:根据每个项目端口号区分开

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

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

相关文章

jQuery成功之路——jQuery的DOM操作简单易懂

jQuery的DOM操作 1.jQuery操作内容 jQuery操作内容 1. text() 获取或修改文本内容 类似于 dom.innerText 2. html() 获取或修改html内容 类似 dom.innerHTML 注意: 1. text() 是获取设置所有 2. html() 是获取第一个,设置所有 <!DOCTYPE html> <html lang"zh…

Linux字符设备中的两个重要结构体(file、inode)

https://www.cnblogs.com/chen-farsight/p/6177870.html

PPT分享:EasyDarwin行业赋能 | 一种效率提升10倍的音视频开发方法

EasyAVFilter本质上就是将ffmpeg.exe改造成了动态库, 方便应用程序集成ffmpeg的各项功能&#xff1b; 详细信息可以直接看https://www.easydarwin.org/tools/153.html&#xff0c;具体用法和场景&#xff0c;看视频介绍&#xff1b;

OpenCV(十四):ROI区域截取

在OpenCV中&#xff0c;你可以使用Rect对象或cv::Range来截取图像的感兴趣区域&#xff08;Region of Interest&#xff0c;ROI&#xff09;。 方法一&#xff1a;使用Rect对象截取图像 Rect_(_Tp _x&#xff0c; _Tp _y&#xff0c; _Tp _width,_Tp _height) Tp:数据类型&…

Postgresql数据库操作

修改Jsonb中某个键值 例如 如果为 1 则修改成男 0则为女 UPDATE "large_screen"."overall_statistics" SET statistics_data CASE WHEN statistics_data->>fault_type 故障 THEN jsonb_set(statistics_data, {fault_type}, "fault")WH…

【Locomotor运动模块】抓取:按朝向抓取(Orientation Handler)案例

文章目录 案例原理 案例 左右手柄抓宝剑时&#xff0c;宝剑的朝向不同 L35 一个手柄对应一个抓取点 原理 1、左右手柄分别抓取的是宝剑上的不同抓取点——GenericOrientation Handle通用朝向把手 它是我们设置“按朝向抓取”&#xff08;Orientation Handler&#xff09;时&…

漂浮岛场景WebGL效果解析

访问在线地址&#xff0c;代码在此处。 场景构图 该场景使用了3个岩石模型&#xff0c;一些通用的阙类植物、树木模型&#xff0c;还有空中的鸟类模型。 场景的渲染顺序&#xff1a;深度预通道&#xff0c;岩石&#xff0c;鸟类&#xff0c;天空&#xff0c;云粒子。 相机…

机器人中的数值优化(六)—— 线搜索最速下降法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

Python|小游戏之猫捉老鼠!!!

最近闲(mang)来(dao)无(fei)事(qi)&#xff0c;喜欢研究一些小游戏&#xff0c;本篇文章我主要介绍使用 turtle 写的一个很简单的猫捉老鼠的小游戏&#xff0c;主要是通过鼠标控制老鼠(Tom)的移动&#xff0c;躲避通过电脑控制的猫(Jerry)的追捕。 游戏主体思考逻辑&#xff1…

良品铺子聚焦高品质,打造零食王国

出品| 大力财经 文 | 魏力 8月29日&#xff0c;休闲食品企业良品铺子发布2023年半年报显示&#xff0c;实现营业收入39.87亿元&#xff0c;归母净利润1.89亿元。 值得注意的是&#xff0c;在全球经济增速不强的背景下&#xff0c;良品铺子上半年&#xff0c;新开店323家&#…

孙哥Spring源码第15集

第15集 BeanPostProcessor、BeanFactroyPostProcessor 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】 1、Spring预先给我们提供的PostProcessor的有哪些 是怎么来的&#xff1f; 2、Spirng中非常重要的扩展点 BeanPostProcessor 和BeanFactoryPostProcesor Aut…

IA-SEG项目中DIAL-Filters(IAPM模块+LGF模块)使用解读

IA-SEG项目源自论文Improving Nighttime Driving-Scene Segmentation via Dual Image-adaptive Learnable Filters&#xff0c;其核心就是在原有的语义分割模型上添加了DIAL-Filters。而&#xff0c;DIAL-Filters由两部分组成&#xff0c;包括一个图像自适应处理模块&#xff0…

正运动携手EPLAN,以高效的电气设计助力运动控制的数字化设计

随着智能制造行业的快速发展&#xff0c;仪器仪表自动化的需求也越来越高。为了提高生产效率&#xff0c;降低成本&#xff0c;许多企业开始寻找一种集成电气、控制和数据管理的解决方案。 正运动技术作为国内领先的的运动控制和数字化解决方案供应商&#xff0c;已经来到前沿…

【Spring专题】Spring之事务底层源码解析

目录 特别声明前置知识Transactional简单介绍*Spring事务传播类型&#xff08;非常重要&#xff09;Transactional使用示例分析示例一&#xff1a;常用示例二&#xff1a;发生异常回滚示例三&#xff1a;try-catch【经典】示例四&#xff1a;REQUIRES_NEW&#xff0c;没有捕获异…

VS2019编译curl库

下载&#xff1a; curl-7.61.0.tar.gz 编译&#xff1a; 解压到一个文件下&#xff0c;然后右键以管理员权限运行buildconf.bat 编译x64的库使用的是x64 Native Tools Command Prompt for VS 2019 本机工具命令提示&#xff0c;如果想编译x86的库&#xff0c;可以选择x86 Nat…

2019CVPR Semantic Graph Convolutional Networks for 3D Human Pose Regression

基于语义图卷积网络的三维人体姿态回归 源码 https://github.com/garyzhao/SemGCN 摘要 在本文中&#xff0c;我们研究了学习图卷积网络&#xff08;GCN&#xff09;回归的问题。GCN的当前体系结构受限于卷积滤波器和共享的变换矩阵为的小感受野。为了解决这些限制&#xff…

逆向工程-架构真题(二十)

结构化程序设计采用自顶向下、逐步求精及模块化程序设计方法&#xff0c;通过&#xff08;&#xff09;三种基本控制结构可以构造出任何单入口单出口程序。 顺序、选择和嵌套顺序、分支和循环分支、并发和循环跳转、选择和并发 答案&#xff1a;B 解析&#xff1a; 结构化设…

Ubuntu学习---跟着绍发学linux课程记录(第二部分)

文章目录 7 文件权限7.1 文件的权限7.2 修改文件权限7.3 修改文件的属主 8、可执行脚本8.2Shell脚本8.3python脚本的创建 学习链接: Ubuntu 21.04乌班图 Linux使用教程_60集Linux课程 所有资料在 http://afanihao.cn/java 我自己的ubuntu系统 账号&#xff1a;jiaoyidi 密码&a…

Nginx的配置及优化2

nginx的配置文件 一、nginx配置文件1.1、主配置文件详解1.2、子配置文件 二、修改启动程序的全局配置2.1、修改启动的工作进程数优化2.2、cpu与eorker process绑定优化2.3、PID路径优化2.4、修改工作进程的优先级 优化2.5、调试工作进程打开文件的文件个数2.5.1、基本原理2.5.2…

LPDDR4、DDR4

核心信息&#xff1a; 2400Mbps&#xff08;每秒传输2400*1百万bit&#xff09; 2400MT/s&#xff08;百万次/秒&#xff09; 信号