实现日志上下文监听,添加路径变量

  1. package com.x.x.x.listener;
  2.  
  3. import ch.qos.logback.classic.Level;
  4. import ch.qos.logback.classic.Logger;
  5. import ch.qos.logback.classic.LoggerContext;
  6. import ch.qos.logback.classic.spi.LoggerContextListener;
  7. import ch.qos.logback.core.Context;
  8. import ch.qos.logback.core.spi.ContextAwareBase;
  9. import ch.qos.logback.core.spi.LifeCycle;
  10.  
  11. public class CustomLogContextListener extends ContextAwareBase implements LoggerContextListener, LifeCycle {
  12.  
  13. /** 存储日志路径标识 */
  14. public static final String LOG_PAHT_KEY = "LOG_PATH";
  15.  
  16. @Override
  17. public boolean isResetResistant() {
  18. return false;
  19. }
  20.  
  21. @Override
  22. public void onStart(LoggerContext loggerContext) {
  23. }
  24. @Override
  25. public void onReset(LoggerContext loggerContext) {
  26. }
  27. @Override
  28. public void onStop(LoggerContext loggerContext) {
  29. }
  30. @Override
  31. public void onLevelChange(Logger logger, Level level) {
  32. }
  33.  
  34. @Override
  35. public void start() {
  36. String s = System.getProperty("user.dir") + "/logs/";
  37. System.setProperty(LOG_PAHT_KEY, s);
  38. Context context = getContext();
  39. context.putProperty(LOG_PAHT_KEY, s);
  40. }
  41. @Override
  42. public void stop() {
  43. }
  44. @Override
  45. public boolean isStarted() {
  46. return false;
  47. }
  48. }

在logbakc.xml文件中指定上下文监听类

在日志配置文件中引入“CustomLogContextListener”(<contextListener class="com.x.x.x.listener.CustomLogContextListener" />)类,

就可以直接通过声明的变量名称使用路径(${LOG_PATH}),LOG_PATH就是在CustomLogContextListener类中指定的变量名称

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <configuration scan="true" scanPeriod="20 seconds" debug="false">
  3. <contextListener class="com.x.x.x.listener.CustomLogContextListener" />
  4. <property name="PROJECT_NAME" value="xxxx" />
  5. <!-- 控制台输出日志 -->
  6. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  7. <layout class="ch.qos.logback.classic.PatternLayout">
  8. <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} ${PROJECT_NAME} [%thread] %-5level %logger{80}[%line] %msg%n</pattern>
  9. </layout>
  10. </appender>
  11.  
  12. <!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份)-->
  13. <appender name="FILE-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
  14. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  15. <level>DEBUG</level>
  16. </filter>
  17. <File>${LOG_PATH}/${PROJECT_NAME}_debug.log</File>
  18. <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
  19. <FileNamePattern>${LOG_PATH}/${PROJECT_NAME}_debug.%i.log
  20. </FileNamePattern>
  21. <MinIndex>1</MinIndex>
  22. <MaxIndex>10</MaxIndex>
  23. </rollingPolicy>
  24. <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  25. <MaxFileSize>10MB</MaxFileSize>
  26. </triggeringPolicy>
  27. <encoder>
  28. <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} ${PROJECT_NAME} [%thread] %-5level %logger{80}[%line] %msg%n</pattern>
  29. </encoder>
  30. </appender>
  31. <root level="INFO">
  32. <appender-ref ref="STDOUT"/>
  33. <appender-ref ref="FILE-debug" />
  34. <appender-ref ref="FILE-error" />
  35. </root>
  36. </configuration>

动态指定日志路径(logback)的更多相关文章

  1. log4j2配置文件动态指定日志文件名称

    按照习惯性思维,log4j2中xml中取系统属性应该和log4j一样,但是结果却并不是我们想的这样,存在一定的差别,log4j中的配置可参考 log4j配置文件动态指定日志文件名称 . 现在就来看看到 ...

  2. log4j配置文件动态指定日志文件名称

    我们在项目当中经常会使用log4j进行日志记录,偶尔会遇到一些要求,比如日志文件名称按照启动参数动态配置,而不去修改log4j.xml,比较简单的一种做法是,通过设置系统属性的方式实现,代码: if( ...

  3. 绿色版Mysql自动建立my.ini和命令行启动并动态指定datadir路径

    1.先去下载绿色版的Mysql(https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.20-winx64.zip) 2.解压缩到任意目录(如D:\My ...

  4. 动态指定log4net日志文件名称

    如果是希望日志文件按常见的日期格式动态命名,没什么好说的,直接修改app.config <param name="DatePattern" value="yyyyM ...

  5. logback日志文件位置动态指定

    logback日志文件位置动态指定 参考:https://stackoverflow.com/questions/19518843/logback-configuration-via-jvm-argu ...

  6. springboot2整合logback.xml动态修改日志打印级别

    今天找bug烦到了,生产上的日志级别不能修改,非常不利于排查问题,于是想到了动态修改日志打印级别, 因为上一周把项目升级成springboot2,并且使用logback.xml管理日志打印,所以修改也 ...

  7. log4j2和logback动态修改日志级别工具类

    工作中,在排查线上问题时,有以下场景在不重新部署或重启服务的情况下,需要动态调整线上日志级别 1.线上有些日志打印过多干扰有用的日志,需要动态修改线上日志记录器的打印日志级别,调高一些日志级别,打印出 ...

  8. Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

    Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...

  9. 日志组件logback的介绍及配置使用方法

    一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-acc ...

随机推荐

  1. Mac 系统上有趣的插件

    1.微信小助手:https://github.com/TKkk-iOSer/WeChatPlugin-MacOS 作用:开启消息撤回拦截,设置自动回复,远程登录Mac,微信多开,免认证登录.... 2 ...

  2. python2.7 安装 Scipy

    Numpy.scikit-learn可以直接 pip install xxx 但Scipy不能,在官网找到了安装方法: python -m pip install --user numpy scipy ...

  3. CSS三列自适应布局(两边宽度固定,中间自适应)

    https://blog.csdn.net/cinderella_hou/article/details/52156333 https://blog.csdn.net/wangchengiii/art ...

  4. slice 、 substr 、replace

    slice( 参数1  [,参数2] )        (注意不要让[参数1]下标越过[参数2]下标,否则会得到空字符串,且[参数2]是不包含在截取范围内的) 参数1:截取字符的[起始下标]. 值为正 ...

  5. MySQL 之数据库初识

    一 数据库概述 数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的.过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用. 数据库是长期存放在计算机内.有组 ...

  6. Python第五十一天 python2升级为python3

    Python第五十一天  python2升级为python3 公司使用的生产环境系统是centos7,所以这里以centos7系统为基础,讲解将python2升级为python3的方法 centos7 ...

  7. js 字符串相关函数

    https://www.jb51.net/article/74614.htm

  8. Kubernetes集群部署及简单命令行操作

    三个阶段部署docker:https://www.cnblogs.com/rdchenxi/p/10381631.html 环境准备 [root@master ~]# hostnamectl set- ...

  9. MySQL之innodb和myisam的区别

    innodb和myisam的区别: MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型, .frm文件存储表定义, 数据文件的扩展名为.MYD, 索引文件的扩展名是 ...

  10. 吴裕雄--天生自然ORACLE数据库学习笔记:管理控制文件和日志文件

    alter database add logfile ('D:\OracleFiles\LogFiles\REDO4_A.LOG', 'E:\OracleFiles\LogFiles\REDO4_B. ...