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 相关文章推荐
JVM入门之类加载与字节码技术(类加载与类的加载器)
Jun 15 Java/Android
Java常用工具类汇总 附示例代码
Jun 26 Java/Android
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
Jul 16 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
springboot入门 之profile设置方式
Apr 04 Java/Android
Android开发之底部导航栏的快速实现
Apr 28 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
Spring 使用注解开发
May 20 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
java中如何截取字符串最后一位
Jul 07 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
phpMyadmin 用户权限中英对照
2010/04/02 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP attributes()函数讲解
2019/02/03 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
python中反射用法实例
2015/03/27 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
化工专业推荐信范文
2013/11/28 职场文书
教师自荐信范文
2013/12/09 职场文书
经典婚礼主持词
2014/03/13 职场文书
高三英语复习计划
2015/01/19 职场文书
锅炉工岗位职责
2015/02/13 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书