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常用的加密算法
Jun 11 Java/Android
Spring Bean的实例化之属性注入源码剖析过程
Jun 13 Java/Android
分析Java中Map的遍历性能问题
Jun 26 Java/Android
详解Spring事件发布与监听机制
Jun 30 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
聊聊SpringBoot自动装配的魔力
Nov 17 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
Apr 26 Java/Android
Java 轮询锁使用时遇到问题
May 11 Java/Android
Android Studio 计算器开发
May 20 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
python中去空格函数的用法
2014/08/21 Python
Python中List.count()方法的使用教程
2015/05/20 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
教师通用专业自荐书范文
2014/02/11 职场文书
社区工作者演讲稿
2014/05/23 职场文书
师德先进个人材料
2014/12/20 职场文书
租赁协议书
2015/01/27 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
环境卫生整治简报
2015/07/20 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书