logback 实现给变量指定默认值


Posted in Java/Android onAugust 30, 2021

logback 实现给变量指定默认值

格式是 ${变量名:-默认值}

**光有冒号还不够,再加条短线后面才是默认值**

<appender name="info"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/logs${log.folder:-/imeth}/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>/logs${log.folder:-/imeth}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 30 days worth of history -->
            <maxHistory>30</maxHistory>
            <maxFileSize>${log.file.size.max:-50}MB</maxFileSize>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>
                [%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%-5level] %logger{35} -  %msg%n
            </pattern>
        </encoder>
    </appender>

logback变量

定义变量

  • 在 logback.xml 中定义
  • 在命令行定义
  • 引入properties文件

在 logback.xml 中定义变量

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="logBase" value="/logs"/>
...
</configuration>

在命令行定义变量

在命令行通过大D参数来定义

java -DHOME="/home/logstore" xxx.jar

引入properties文件

在properties文件定义变量。logback引入properties文件后,获得变量。

通过文件路径引入properties文件:

<configuration>
  <property file="/AppPath/logbackVars.properties" />
...
</configuration>

通过classpath引入properties文件:

<configuration>
  <property resource="logbackVars.properties" />
...
</configuration>

properties文件的格式是 key-value 型:

HOME=/logs

变量的作用域

变量有三个作用域:

  • local 作用域在配置文件内有效
  • context 作用域的有效范围延伸至 logger context
  • system 作用域的范围最广,整个 JVM 内都有效
  • logback 在替换变量时,首先搜索 local 变量,然后搜索 context,然后搜索 system。

如何为变量指定 scope ?

<configuration>
  <property scope="context" name="home" value="/logs" />
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>/${home}/myApp.log</file>
...
  </appender>
...
</configuration>

变量的默认值

在引用一个变量时,如果该变量未定义,需要为其指定默认值,写法是:

${变量名:-默认值}

示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="logBase" value="${HOME:-/logs}"/>
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${logBase}/log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>60</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yy/MM/dd HH:mm:ss.SSS} %-5level %line %logger{15} - %msg %n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
...
</configuration>

变量使用

使用方式:

${变量名}

示例:参见前面示例中用法。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Java实现斗地主之洗牌发牌
Jun 14 Java/Android
Spring Cache和EhCache实现缓存管理方式
Jun 15 Java/Android
Java 中的 Unsafe 魔法类的作用大全
Jun 26 Java/Android
Java日常练习题,每天进步一点点(38)
Jul 26 Java/Android
Java实现房屋出租系统详解
Oct 05 Java/Android
Java实现给Word文件添加文字水印
Feb 15 Java/Android
SpringCloud项目如何解决log4j2漏洞
Apr 10 Java/Android
Flutter Navigator 实现路由传递参数
Apr 22 Java/Android
Java版 简易五子棋小游戏
May 04 Java/Android
Java 轮询锁使用时遇到问题
May 11 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 Java/Android
IDEA中sout快捷键无效问题的解决方法
Jul 23 Java/Android
SpringMVC 整合SSM框架详解
Aug 30 #Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 #Java/Android
logback如何自定义日志存储
Aug 30 #Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 #Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 #Java/Android
Java SSM配置文件案例详解
Aug 30 #Java/Android
java调用Restful接口的三种方法
Aug 23 #Java/Android
You might like
理解php原理的opcodes(操作码)
2010/10/26 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
如何在PHP中生成随机数
2020/06/04 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
python远程登录代码
2008/04/29 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
读书伴我成长演讲稿
2014/05/07 职场文书
物资采购方案
2014/06/12 职场文书
技术经济专业求职信
2014/09/03 职场文书
检讨书1000字
2014/10/11 职场文书
同学聚会通知书
2015/04/20 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript