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 相关文章推荐
Win10系统下配置Java环境变量
Jun 13 Java/Android
解析Java中的static关键字
Jun 14 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
spring boot中nativeQuery的用法
Jul 26 Java/Android
java如何实现socket连接方法封装
Sep 25 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 Java/Android
Java中的随机数Random
Mar 17 Java/Android
java后台调用接口及处理跨域问题的解决
Mar 24 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
spring 项目实现限流方法示例
Jul 15 Java/Android
Springboot集成kafka高级应用实战分享
Aug 14 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将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
.net C#面试题
2012/08/28 面试题
材料加工硕士生求职信
2013/10/10 职场文书
自荐信结尾
2013/10/27 职场文书
四风存在的原因分析
2014/02/11 职场文书
旅游节目策划方案
2014/05/26 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
介绍信格式
2015/01/30 职场文书
赢在中国观后感
2015/06/02 职场文书
环境卫生标语
2015/08/03 职场文书