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 相关文章推荐
分析Netty直接内存原理及应用
Jun 14 Java/Android
简单总结SpringMVC拦截器的使用方法
Jun 28 Java/Android
ObjectMapper 如何忽略字段大小写
Jun 29 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
JVM之方法返回地址详解
Feb 28 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
JVM的类加载器和双亲委派模式你了解吗
Mar 13 Java/Android
剑指Offer之Java算法习题精讲二叉树专项训练
Mar 21 Java/Android
Java 轮询锁使用时遇到问题
May 11 Java/Android
Spring Cloud OpenFeign模版化客户端
Jun 25 Java/Android
SpringBoot详解自定义Stater的应用
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
php基础知识:控制结构
2006/12/13 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
django-csrf使用和禁用方式
2020/03/13 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
工作态度检讨书
2014/02/11 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
新生入学欢迎词
2015/01/26 职场文书
前台文员岗位职责
2015/02/04 职场文书
总经理岗位职责范本
2015/04/01 职场文书
律政俏佳人观后感
2015/06/09 职场文书
详解python的异常捕获
2022/03/03 Python