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.lang.String类的不可变性
Jun 27 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
浅谈Java父子类加载顺序
Aug 04 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 Java/Android
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
Apr 08 Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
Apr 28 Java/Android
利用正则表达式匹配浮点型数据
May 30 Java/Android
Android 中的类文件和类加载器详情
Jun 05 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注释实例技巧
2008/10/03 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
使用PHP开发留言板功能
2019/11/19 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
Django中信号signals的简单使用方法
2019/07/04 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
如何用JQuery进行表单验证
2013/05/29 面试题
应届毕业生求职信
2014/05/26 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
公司员工离职证明书
2014/10/04 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2015元旦标语横幅
2014/12/09 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
国庆节主题班会
2015/08/15 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python