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
探讨Java中的深浅拷贝问题
Jun 26 Java/Android
分析JVM源码之Thread.interrupt系统级别线程打断
Jun 29 Java/Android
Java日常练习题,每天进步一点点(38)
Jul 26 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
MyBatis配置文件解析与MyBatis实例演示
Apr 07 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
SpringBoot全局异常处理方案分享
May 25 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
mysql时区问题
2008/03/26 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
javaScript语法总结
2016/11/25 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
python结合API实现即时天气信息
2016/01/19 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python版名片管理系统
2018/11/30 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python学生信息管理系统实现代码
2019/12/17 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
教师个人剖析材料
2014/02/05 职场文书
合作经营协议书范本
2014/04/17 职场文书
防灾减灾活动总结
2014/08/30 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2015年教师节活动总结
2015/03/20 职场文书
消防演习通知
2015/04/25 职场文书
学习雷锋主题班会
2015/08/14 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
银行求职信怎么写
2019/06/20 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript