返回顶部
首页 > 资讯 > 精选 >怎么在logback.xml中动态配置程序路径
  • 648
分享到

怎么在logback.xml中动态配置程序路径

2023-06-06 14:06:09 648人浏览 泡泡鱼
摘要

怎么在logback.xml中动态配置程序路径?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.普通java程序如下配置的logback.xml<?xml ve

怎么在logback.xml中动态配置程序路径?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1.普通java程序

如下配置的logback.xml

<?xml version="1.0" encoding="UTF-8"?><configuration>   <property name="LOGS_HOME" value="/opt/program/app/logback-demo/logs"/>  <!-- 该值由启动程序时候动态传入 -->  <property name="SUB_LOG_HOME" value="" />  <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} - %msg%n"/>  <property name="LOG_CHARSET" value="UTF-8"/>   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">    <encoder>      <pattern>${LOG_PATTERN}</pattern>      <charset>${LOG_CHARSET}</charset>    </encoder>  </appender>   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${LOGS_HOME}/${SUB_LOG_HOME}/logback-demo.log</file>    <encoder>      <pattern>${LOG_PATTERN}</pattern>      <charset>${LOG_CHARSET}</charset>    </encoder>    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      <fileNamePattern>${LOGS_HOME}/${SUB_LOG_HOME}/logback-demo-%d{yyyy-MM-dd}.log</fileNamePattern>      <maxHistory>30</maxHistory>    </rollingPolicy>  </appender>   <appender name="ERRORFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${LOGS_HOME}/${SUB_LOG_HOME}/logback-demo.error.log</file>    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      <fileNamePattern>${LOGS_HOME}/${SUB_LOG_HOME}/logback-demo-%d{yyyy-MM-dd}.error.log</fileNamePattern>      <maxHistory>20</maxHistory>    </rollingPolicy>    <encoder>      <pattern>${LOG_PATTERN}</pattern>      <immediateFlush>true</immediateFlush>    </encoder>    <filter class="ch.qos.logback.classic.filter.LevelFilter">      <level>ERROR</level>      <onMatch>ACCEPT</onMatch>      <onMismatch>DENY</onMismatch>    </filter>  </appender>   <root level="info">    <appender-ref ref="STDOUT"/>    <appender-ref ref="FILE"/>    <appender-ref ref="ERRORFILE"/>  </root> </configuration>

property标签由name和value组成,上边定义的name可以在下边通过${name}引用。

value的值可以直接在xml中写死,也可以通过程序启动时候通过JVM虚拟机参数配置来传入,比如此处是-DSUB_LOG_HOME=xxx。

idea中配置:

怎么在logback.xml中动态配置程序路径

2.Spring Boot应用

spring boot应用中将logback-spring.xml放置在resources目录,内容如下:

<?xml version="1.0" encoding="UTF-8"?><configuration xmlns="Http://ch.qos.logback/xml/ns/logback" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback http://ch.qos.logback/xml/ns/logback/logback.xsd"        debug="true" scan="false" scanPeriod="30 seconds">   <springProperty scope="context" name="logPath" source="logback.logPath"/>  <springProperty scope="context" name="subLogPath" source="logback.subLogPath"/>   <!--spring-boot-1.5.10.RELEASE.jar!/org/springframework/boot/logging/logback/defaults.xml-->  <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="LOG_HOME" value="${logPath}"/>  <!-- 该值由启动程序时候动态传入 -->  <property name="SUB_LOG_HOME" value="${subLogPath}" />  <property name="LOG_NAME" value="data-middleware-server-realtime"/>  <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{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} %line){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>  <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} %line - %msg%n"/>   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">    <encoder>      <pattern>${CONSOLE_LOG_PATTERN}</pattern>    </encoder>  </appender>  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${LOG_HOME}/${SUB_LOG_HOME}/${LOG_NAME}.log</file>    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">      <fileNamePattern>${LOG_HOME}/${SUB_LOG_HOME}/${LOG_NAME}.log-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>      <maxHistory>20</maxHistory>      <maxFileSize>100MB</maxFileSize>    </rollingPolicy>    <encoder>      <pattern>${FILE_LOG_PATTERN}</pattern>      <immediateFlush>true</immediateFlush>    </encoder>  </appender>  <appender name="ERRORFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${LOG_HOME}/${SUB_LOG_HOME}/${LOG_NAME}.error.log</file>    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">      <fileNamePattern>${LOG_HOME}/${SUB_LOG_HOME}/${LOG_NAME}.error.log-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>      <maxHistory>20</maxHistory>      <maxFileSize>100MB</maxFileSize>    </rollingPolicy>    <encoder>      <pattern>${FILE_LOG_PATTERN}</pattern>      <immediateFlush>true</immediateFlush>    </encoder>    <filter class="ch.qos.logback.classic.filter.LevelFilter">      <level>ERROR</level>      <onMatch>ACCEPT</onMatch>      <onMismatch>DENY</onMismatch>    </filter>  </appender>   <appender name="REALTIME_IMPORT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${LOG_HOME}/${SUB_LOG_HOME}/import/${LOG_NAME}.log</file>    <encoder>      <pattern>${FILE_LOG_PATTERN}</pattern>      <immediateFlush>true</immediateFlush>    </encoder>    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      <fileNamePattern>${LOG_HOME}/${SUB_LOG_HOME}/import/${LOG_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>      <maxHistory>7</maxHistory>    </rollingPolicy>  </appender>   <logger name="REALTIME_IMPORT_LOGGER" level="INFO" additivity="false">    <appender-ref ref="REALTIME_IMPORT_APPENDER"/>  </logger>   <logger name="org.apache.ZooKeeper.ZooKeeper" level="WARN" additivity="true"></logger>  <logger name="org.apache.zookeeper.ClientCnxn" level="WARN" additivity="true"></logger>   <root level="DEBUG">    <appender-ref ref="STDOUT"/>    <appender-ref ref="FILE"/>    <appender-ref ref="ERRORFILE"/>  </root></configuration>

该配置文件中除了使用<property>还使用了<springProperty>其中source为引用的spring配置中的变量,比如此处是logback.logPath和logback.subLogPath这两个值的传入可以通过spring boot配置文件传入,也可以通过程序启动时候动态传入,比如--logback.subLogPath=xxx

补充:logback.xml 自动读取日志存储路径

文件的命名和加载顺序有关logback.xml早于application.yml加载,logback-spring.xml晚于application.yml加载

如果logback配置需要使用application.yml中的属性,需要命名为logback-spring.xml

logback使用application.yml中的属性

使用springProperty才可使用application.yml中的值 可以设置默认值

<?xml version="1.0" encoding="UTF-8"?><configuration>  <!--  说明:    1. 文件的命名和加载顺序有关      logback.xml早于application.yml加载,logback-spring.xml晚于application.yml加载      如果logback配置需要使用application.yml中的属性,需要命名为logback-spring.xml    2. logback使用application.yml中的属性      使用springProperty才可使用application.yml中的值 可以设置默认值  -->  <springProperty scope="context" name="logName" source="ruoyi.logPath" defaultValue="default"/>  <property name="log.path" value="${logName}" />  <!-- 日志存放路径 --><!--  <property name="log.path" value="D:/zmSmartClassroom/logs"/>-->  <!--  <property name="log.path" value="/home/zmSmartClassroom/logs"/>-->  <!-- 日志输出格式 -->  <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>  <!-- 控制台输出 -->  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">    <encoder>      <pattern>${log.pattern}</pattern>    </encoder>  </appender>  <!-- 系统日志输出 -->  <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${log.path}/sys-info.log</file>    <!-- 循环政策:基于时间创建日志文件 -->    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      <!-- 日志文件名格式 -->      <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>      <!-- 日志最大的历史 60天 -->      <maxHistory>60</maxHistory>    </rollingPolicy>    <encoder>      <pattern>${log.pattern}</pattern>    </encoder>    <filter class="ch.qos.logback.classic.filter.LevelFilter">      <!-- 过滤的级别 -->      <level>INFO</level>      <!-- 匹配时的操作:接收(记录) -->      <onMatch>ACCEPT</onMatch>      <!-- 不匹配时的操作:拒绝(不记录) -->      <onMismatch>DENY</onMismatch>    </filter>  </appender>  <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${log.path}/sys-error.log</file>    <!-- 循环政策:基于时间创建日志文件 -->    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      <!-- 日志文件名格式 -->      <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>      <!-- 日志最大的历史 60天 -->      <maxHistory>60</maxHistory>    </rollingPolicy>    <encoder>      <pattern>${log.pattern}</pattern>    </encoder>    <filter class="ch.qos.logback.classic.filter.LevelFilter">      <!-- 过滤的级别 -->      <level>ERROR</level>      <!-- 匹配时的操作:接收(记录) -->      <onMatch>ACCEPT</onMatch>      <!-- 不匹配时的操作:拒绝(不记录) -->      <onMismatch>DENY</onMismatch>    </filter>  </appender>  <!-- 用户访问日志输出 -->  <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">    <file>${log.path}/sys-user.log</file>    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      <!-- 按天回滚 daily -->      <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>      <!-- 日志最大的历史 60天 -->      <maxHistory>60</maxHistory>    </rollingPolicy>    <encoder>      <pattern>${log.pattern}</pattern>    </encoder>  </appender>  <!-- 系统模块日志级别控制 -->  <logger name="com.ruoyi" level="info"/>  <!-- Spring日志级别控制 -->  <logger name="org.springframework" level="warn"/>  <root level="info">    <appender-ref ref="console"/>  </root>  <!--系统操作日志-->  <root level="info">    <appender-ref ref="file_info"/>    <appender-ref ref="file_error"/>  </root>  <!--系统用户操作日志-->  <logger name="sys-user" level="info">    <appender-ref ref="sys-user"/>  </logger></configuration>

看完上述内容,你们掌握怎么在logback.xml中动态配置程序路径的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 怎么在logback.xml中动态配置程序路径

本文链接: https://lsjlt.com/news/247430.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在logback.xml中动态配置程序路径
    怎么在logback.xml中动态配置程序路径?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.普通java程序如下配置的logback.xml<xml ver...
    99+
    2023-06-06
  • spring boot怎么配置静态路径
    这篇文章主要介绍了spring boot怎么配置静态路径的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring boot怎么配置静态路径文章都会有所收获,下面我们一起来看看吧。一&nbs...
    99+
    2023-06-29
  • 怎么配置mysql启动路径
    配置mysql启动路径的方法首先,使用组合“win+R”运行“services.ms”,进入服务窗口;在服务列表中,查找到MySQL服务,右键点击“停止”,进行停止MySQL服务;MySQL服务停止后,使用组合“win+R”运行“reged...
    99+
    2024-04-02
  • 如何在Windows上配置ASP程序的路径?
    在Windows上配置ASP程序的路径是一个常见的任务,尤其是对于那些需要在本地部署ASP应用程序的开发人员和系统管理员来说。ASP程序的路径配置是关键,因为它会影响到ASP应用程序的运行和访问。在本文中,我们将介绍如何在Windows上配...
    99+
    2023-09-02
    面试 path windows
  • Django动态怎么设置静态文件路径
    本篇内容主要讲解“Django动态怎么设置静态文件路径”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django动态怎么设置静态文件路径”吧!前言Django项目需要在settings.py文件...
    99+
    2023-06-29
  • springboot请求路径怎么配置在配置文件中
    今天小编给大家分享一下springboot请求路径怎么配置在配置文件中的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。请求路径...
    99+
    2023-06-29
  • 如何在Java应用程序中正确配置日志路径?
    作为一名Java程序员,日志是我们不可避免的一部分。正确的配置日志路径可以帮助我们更好地追踪问题和调试代码。在本文中,我们将探讨如何在Java应用程序中正确配置日志路径。 在Java中,我们通常使用Log4j或Logback来记录日志。这两...
    99+
    2023-10-17
    日志 教程 path
  • SpringCloud Gateway动态路由怎么配置
    这篇“SpringCloud Gateway动态路由怎么配置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spri...
    99+
    2023-07-05
  • eclipse怎么配置maven路径
    配置Maven路径的步骤如下:1. 打开Eclipse,点击菜单栏的“Window”(窗口),选择“Preferences”(首选项...
    99+
    2023-09-12
    maven eclipse
  • Django项目中动态设置静态文件路径的全过程
    目录前言一、修改BASE_DIR:二、修改模板文件路径(TEMPLATES中的DIRS的值):三、修改国际化文件路径,由于LOCALE_PATHS默认不存在,需要自己在合适位置添加,...
    99+
    2024-04-02
  • 如何在Java应用程序中设置类路径?
    Java应用程序是由一组类组成的,这些类必须能够被Java虚拟机(JVM)找到并加载。在Java中,类路径是用于指定JVM可以查找类的位置。本文将介绍如何在Java应用程序中设置类路径。 理解类路径 类路径是一组目录和JAR文件的列表...
    99+
    2023-09-01
    load path 索引
  • 在Unix Shell中如何设置Java程序的路径?
    在Unix Shell中,设置Java程序的路径是一个基本的操作。在这篇文章中,我们将介绍如何设置Java程序的路径,以便在Shell脚本中调用Java程序。 首先,我们需要了解一下Java程序的路径是什么。Java程序的路径是指Java...
    99+
    2023-10-12
    unix shell path
  • Spring boot 默认静态资源路径与手动配置访问路径的方法
    在application.propertis中配置##端口号server.port=8081##默认前缀spring.mvc.view.prefix=/## 响应页面默认后缀spring.mvc.view.suffix=.html# 默认值...
    99+
    2023-05-31
    spring boot 静态资源
  • laravel在nginx中怎么配置到已有站点路径
    本篇内容主要讲解“laravel在nginx中怎么配置到已有站点路径”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel在nginx中怎么配置到已有站点路径”吧!问题描述:laravel...
    99+
    2023-06-21
  • 如何在 Windows 中配置 Laravel 的路径?
    Laravel 是一个开源的 PHP Web 应用程序框架,它可以帮助开发者快速构建高质量的 Web 应用程序。然而,对于初学者来说,配置 Laravel 在 Windows 中的路径可能是一项具有挑战性的任务。在本文中,我们将提供一些简单...
    99+
    2023-09-27
    windows laravel path
  • springboot中请求路径配置在配置文件中详解
    目录请求路径配置在配置文件中在配置文件中配置访问路径的写法改变了请求路径配置在配置文件中 原先一直使用springboot,请求路径直接写在@RequestMapping、@GetM...
    99+
    2024-04-02
  • springboot虚拟路径怎么配置
    在Spring Boot中,可以通过配置application.properties或application.yml文件来配置虚拟路...
    99+
    2024-02-29
    springboot
  • rocketmq中日志文件路径怎么配置
    这篇文章主要讲解了“rocketmq中日志文件路径怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“rocketmq中日志文件路径怎么配置”吧!rocketmq 中的数据和日志文件默认都...
    99+
    2023-07-05
  • 怎么对logback.xml配置文件在resource外的位置进行修改
    怎么对logback.xml配置文件在resource外的位置进行修改?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。根据LoggerFactory.getLog...
    99+
    2023-06-06
  • 配置gateway+nacos动态路由管理流程
    目录配置gateway+nacos动态路由第一步:首先是设置配置文件的配置列表第二步:配置监听nacos监听器第三步:配置nacos的yml文件nacos的智能路由实现与应用一. 概...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作