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 18 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
SpringBoot读取Resource下文件的4种方法
Jul 02 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
java设计模式--七大原则详解
Jul 21 Java/Android
Java移除无效括号的方法实现
Aug 07 Java/Android
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
Apr 24 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
Java+swing实现抖音上的表白程序详解
Jun 25 Java/Android
Java Spring读取和存储详细操作
Aug 05 Java/Android
Java实现贪吃蛇游戏的示例代码
Sep 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
PHP&amp;MYSQL服务器配置说明
2006/10/09 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
什么是URL
2015/12/13 面试题
科室工作的个人自我评价
2013/10/30 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
年底个人总结范文
2015/03/10 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python