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 相关文章推荐
springboot中一些比较常用的注解总结
Jun 11 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
使用@Value值注入及配置文件组件扫描
Jul 09 Java/Android
java解析XML详解
Jul 09 Java/Android
SpringRetry重试框架的具体使用
Jul 25 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
Java死锁的排查
May 11 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
Jul 15 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
Sep 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教程 基本语法
2009/10/23 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
浅析javascript的return语句
2015/12/15 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python生成器推导式用法简单示例
2019/10/08 Python
Python 寻找局部最高点的实现
2019/12/05 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
英文简历中的自荐信范文
2013/12/14 职场文书
表彰会主持词
2014/03/26 职场文书
党支部承诺书范文
2014/03/28 职场文书
法人授权委托书格式
2014/04/08 职场文书
幼师求职自荐信
2014/05/31 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
旅游投诉信范文
2015/07/02 职场文书