logback日志使用if...else邏輯判斷

在項(xiàng)目中却音,存在使用條件判斷的場(chǎng)景,例如想為測(cè)試和生產(chǎn)設(shè)置不同的日志記錄級(jí)別矢炼。幸好的是系瓢,logback本身已經(jīng)支持這種場(chǎng)景。

一句灌、引入依賴

        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>3.0.6</version>
        </dependency>

二夷陋、條件表達(dá)式

2.1 語(yǔ)法

if-then語(yǔ)法:

<if condition="some conditional expression">
<then>
...
</then>
</if>

if-then-else語(yǔ)法:

<if condition="some conditional expression">
<then>
...
</then>
<else>
...
</else>
</if>

2.2 條件表達(dá)式

2.2.1 Using property() or p()

只能訪問(wèn)上下文屬性或者系統(tǒng)屬性欠拾。對(duì)于作為參數(shù)傳遞的鍵,property()p()方法返回屬性的String的值骗绕。

property("someKey").contains("someValue")

或者

p("someKey").contains("someValue")

2.2.2 Using isDefined()

用來(lái)檢查屬性是否定義

isDefined("someKey")

2.2.3 Using isNull()

用來(lái)檢查屬性是否為空

isNull("someKey")

三藐窄、簡(jiǎn)單案例

2.2中條件表達(dá)式如何讀取變量的值,下面介紹兩種方案:

3.1 方式一:讀取上下文變量的值

需要配置springProperty標(biāo)簽酬土,即配置上下文變量荆忍。

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <!--注意點(diǎn):獲取上下文變量的值-->
    <springProperty scope="context" name="PV_LOG" source="my.pvlog"/>

    <contextName>logback</contextName>
    <!--定義日志文件的存儲(chǔ)地址 勿在 LogBack 的配置中使用相對(duì)路徑-->
    <property name="log.path" value="/Users/libai/Documents/log"/>

    <!--輸出到控制臺(tái)-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
            <!--格式化輸出:%d:表示日期    %thread:表示線程名     %-5level:級(jí)別從左顯示5個(gè)字符寬度  %msg:日志消息    %n:是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--輸出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/main.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>main.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <!--格式化輸出:%d:表示日期    %thread:表示線程名     %-5level:級(jí)別從左顯示5個(gè)字符寬度  %msg:日志消息    %n:是換行符-->
            <pattern>文件記錄-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
    </root>

   <!--條件判斷-->
    <if condition='property("PV_LOG").equals("true")'>
        <then>
            <appender name="logAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${log.path}/pv.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>pv.%d{yyyy-MM-dd}.log</fileNamePattern>
                    <maxHistory>30</maxHistory>
                    <totalSizeCap>1GB</totalSizeCap>
                </rollingPolicy>
                <encoder>
                    <!--格式化輸出:%d:表示日期    %thread:表示線程名     %-5level:級(jí)別從左顯示5個(gè)字符寬度  %msg:日志消息    %n:是換行符-->
                    <pattern>文件記錄-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
                    <charset>UTF-8</charset>
                </encoder>
            </appender>

            <!-- 輸出攔截器的pv日志-->
            <logger name="com.tellme.interceptor.PvLogInterceptor" level="info" additivity="false">
                <appender-ref ref="logAppender"/>
            </logger>
        </then>
    </if>
</configuration>

application.yml的配置如下:

my:
  pvlog: true

3.2 方式二:讀取系統(tǒng)變量的值

這一種方案就是讀取JVM啟動(dòng)的值。無(wú)需配置springProperty標(biāo)簽撤缴。

讀取環(huán)境變量.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刹枉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子屈呕,更是在濱河造成了極大的恐慌微宝,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虎眨,死亡現(xiàn)場(chǎng)離奇詭異蟋软,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嗽桩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)岳守,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人涤躲,你說(shuō)我怎么就攤上這事棺耍。” “怎么了种樱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蒙袍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我嫩挤,道長(zhǎng)害幅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任岂昭,我火速辦了婚禮以现,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘约啊。我一直安慰自己发框,他們只是感情好拙徽,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布传惠。 她就那樣靜靜地躺著谦去,像睡著了一般。 火紅的嫁衣襯著肌膚如雪外傅。 梳的紋絲不亂的頭發(fā)上纪吮,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天俩檬,我揣著相機(jī)與錄音,去河邊找鬼碾盟。 笑死棚辽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冰肴。 我是一名探鬼主播屈藐,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熙尉!你這毒婦竟也來(lái)了估盘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤骡尽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后擅编,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體攀细,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年爱态,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谭贪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锦担,死狀恐怖俭识,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洞渔,我是刑警寧澤套媚,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站磁椒,受9級(jí)特大地震影響堤瘤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浆熔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一本辐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧医增,春花似錦慎皱、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至邓萨,卻和暖如春地梨,著一層夾襖步出監(jiān)牢的瞬間菊卷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工宝剖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洁闰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓万细,卻偏偏與公主長(zhǎng)得像扑眉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赖钞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容