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 相关文章推荐
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
使用@Value值注入及配置文件组件扫描
Jul 09 Java/Android
小程序与后端Java接口交互实现HelloWorld入门
Jul 09 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Java基于Dijkstra算法实现校园导游程序
Mar 17 Java/Android
Java对文件的读写操作方法
Apr 29 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
springboot实现string转json json里面带数组
Jun 16 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
IDEA中sout快捷键无效问题的解决方法
Jul 23 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
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
python下MySQLdb用法实例分析
2015/06/08 Python
python中reload(module)的用法示例详解
2017/09/15 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
详解pandas赋值失败问题解决
2020/11/29 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
好书伴我成长演讲稿
2014/05/14 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
先进事迹材料范文
2014/12/29 职场文书
国庆节慰问信
2015/02/15 职场文书
郭明义电影观后感
2015/06/08 职场文书
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python