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 Swing实现自助取款机系统
Jun 11 Java/Android
Spring Bean的实例化之属性注入源码剖析过程
Jun 13 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
Sep 25 Java/Android
详解JAVA的控制语句
Nov 11 Java/Android
使用HttpSessionListener监听器实战
Mar 17 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
Elasticsearch Recovery 详细介绍
Apr 19 Java/Android
Java8 CompletableFuture 异步回调
Apr 28 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
php 函数中使用static的说明
2012/06/01 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
python的re模块应用实例
2014/09/26 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
利用Python优雅的登录校园网
2020/10/21 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
教师找工作推荐信
2013/11/23 职场文书
客服专员岗位职责范本
2013/11/29 职场文书
机械操作工岗位职责
2014/08/08 职场文书
财务工作检讨书
2014/10/29 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
出国导师推荐信
2015/03/25 职场文书
春节晚会开场白
2015/05/29 职场文书
干部外出学习心得体会
2016/01/18 职场文书
话题作文之自信作文
2019/11/15 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript