温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

logback如何实现给变量指定默认值

发布时间:2021-08-30 13:47:07 来源:亿速云 阅读:145 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关logback如何实现给变量指定默认值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    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>

    变量使用

    使用方式:

    ${变量名}

    感谢各位的阅读!关于“logback如何实现给变量指定默认值”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI