欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java使用arthas修改日志級(jí)別詳解

 更新時(shí)間:2022年06月17日 09:48:56   作者:奇點(diǎn)_97  
在我們線上環(huán)境中,一般不會(huì)開啟debug級(jí)別的日志,為了提高性能?info和warning級(jí)別的日志也一般不會(huì)打印出來(lái),那么如果遇到線上問(wèn)題,除了使用arthas定位問(wèn)題,想通過(guò)查詢?nèi)罩緛?lái)實(shí)現(xiàn)問(wèn)題定位,如何查看logger信息,更新logger?level呢,下面我們來(lái)了解arthas修改日志級(jí)別

arthas能夠更改日志的級(jí)別,下面是logger的用法

查看logger信息,更新logger level

查看所有l(wèi)ogger信息

logger

以下面的logback.xml為例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>60</maxHistory>
            <totalSizeCap>2GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="APPLICATION" />
    </appender>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n
            </pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="ASYNC" />
    </root>
</configuration>

sc -d *FormulaEngine |grepclassLoaderHash

sc -d FormulaEngine.class*

使用logger命令打印的結(jié)果是:

[arthas@2062]$ logger
 name                                   ROOT
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  INFO
 effectiveLevel                         INFO
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders                              name            CONSOLE
                                        class           ch.qos.logback.core.ConsoleAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        target          System.out
                                        name            APPLICATION
                                        class           ch.qos.logback.core.rolling.RollingFileAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        file            app.log
                                        name            ASYNC
                                        class           ch.qos.logback.classic.AsyncAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        appenderRef     [APPLICATION]

appenders的信息里,可以看到

  • CONSOLElogger的target是System.out
  • APPLICATIONlogger是RollingFileAppender,它的file是app.log
  • ASYNC它的appenderRefAPPLICATION,即異步輸出到文件里

查看指定名字的logger信息

logger -n org.springframework.web

[arthas@2062]$ logger -n org.springframework.web
 name                                   org.springframework.web
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  null
 effectiveLevel                         INFO
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

查看指定classloader的logger信息

注意hashcode是變化的,需要先查看當(dāng)前的ClassLoader信息,提取對(duì)應(yīng)ClassLoader的hashcode。

如果你使用-c,你需要手動(dòng)輸入hashcode:-c <hashcode>

[arthas@2062]$ logger -c 2a139a55
 name                                   ROOT
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  DEBUG
 effectiveLevel                         DEBUG
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders                              name            CONSOLE
                                        class           ch.qos.logback.core.ConsoleAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        target          System.out
                                        name            APPLICATION
                                        class           ch.qos.logback.core.rolling.RollingFileAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        file            app.log
                                        name            ASYNC
                                        class           ch.qos.logback.classic.AsyncAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        appenderRef     [APPLICATION]

對(duì)于只有唯一實(shí)例的ClassLoader可以通過(guò)--classLoaderClass指定class name,使用起來(lái)更加方便:

logger --classLoaderClass sun.misc.Launcher$AppClassLoader

注: 這里classLoaderClass 在 java 8 是 sun.misc.Launcher$AppClassLoader,而java 11的classloader是jdk.internal.loader.ClassLoaders$AppClassLoader。

--classLoaderClass的值是ClassLoader的類名,只有匹配到唯一的ClassLoader實(shí)例時(shí)才能工作,目的是方便輸入通用命令,而-c <hashcode>是動(dòng)態(tài)變化的。

更新logger level

找到需要修改日志級(jí)別的類

命令:

sc -d FreeResourceQueryActionImpl.class*

或者

sc -d *FreeResourceQueryActionImpl | grep classLoaderHash

結(jié)果:目的就是為了找出classLoaderHash

修改

[arthas@2062]$ logger --name ROOT --level debug
update logger level success.

編輯指定classloader更新 logger level

默認(rèn)情況下,logger命令會(huì)在SystemClassloader下執(zhí)行,如果應(yīng)用是傳統(tǒng)的war應(yīng)用,或者spring boot fat jar啟動(dòng)的應(yīng)用,那么需要指定classloader。

可以先用sc -d yourClassName來(lái)查看具體的 classloader hashcode,然后在更新level時(shí)指定classloader:

[arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug

查看沒(méi)有appender的logger的信息

默認(rèn)情況下,logger命令只打印有appender的logger的信息。如果想查看沒(méi)有appender的logger的信息,可以加上參數(shù)--include-no-appender

注意,通常輸出結(jié)果會(huì)很長(zhǎng)。

[arthas@2062]$ logger --include-no-appender
 name                                   ROOT
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  DEBUG
 effectiveLevel                         DEBUG
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders                              name            CONSOLE
                                        class           ch.qos.logback.core.ConsoleAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        target          System.out
                                        name            APPLICATION
                                        class           ch.qos.logback.core.rolling.RollingFileAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        file            app.log
                                        name            ASYNC
                                        class           ch.qos.logback.classic.AsyncAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        appenderRef     [APPLICATION]
 
 name                                   com
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  null
 effectiveLevel                         DEBUG
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 
 name                                   com.alibaba
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  null
 effectiveLevel                         DEBUG
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
...

退出arthas

為了不影響性能,解決完問(wèn)題需要退出arthas

如果只是退出當(dāng)前的連接,可以用quit或者exit命令。Attach到目標(biāo)進(jìn)程上的arthas還會(huì)繼續(xù)運(yùn)行,端口會(huì)保持開放,下次連接時(shí)可以直接連接上。

如果想完全退出arthas,可以執(zhí)行stop命令。

退出之前恢復(fù)原來(lái)的日志級(jí)別

到此這篇關(guān)于Java使用arthas修改日志級(jí)別詳解的文章就介紹到這了,更多相關(guān)Java arthas內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot整合mqtt服務(wù)的示例代碼

    Springboot整合mqtt服務(wù)的示例代碼

    MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡(jiǎn)單、開放和易于實(shí)現(xiàn)的,這些特點(diǎn)使它適用范圍非常廣泛。本文為大家分享了Springboot整合mqtt服務(wù)的示例代碼,需要的可以參考一下
    2022-03-03
  • 完美解決在Servlet中出現(xiàn)一個(gè)輸出中文亂碼的問(wèn)題

    完美解決在Servlet中出現(xiàn)一個(gè)輸出中文亂碼的問(wèn)題

    下面小編就為大家?guī)?lái)一篇完美解決在Servlet中出現(xiàn)一個(gè)輸出中文亂碼的問(wèn)題。小編覺(jué)得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Java Files和Paths的使用demo詳解

    Java Files和Paths的使用demo詳解

    Java Files和Paths是Java 7中引入的新API,用于處理文件和目錄,F(xiàn)iles類提供了許多有用的靜態(tài)方法來(lái)操作文件和目錄,而Path類則表示文件系統(tǒng)中的路徑,這篇文章主要介紹了Java Files和Paths的使用詳解,需要的朋友可以參考下
    2023-03-03
  • Java遍歷Properties所有元素的方法實(shí)例

    Java遍歷Properties所有元素的方法實(shí)例

    這篇文章主要介紹了Java如何遍歷Properties所有元素的方法,大家可以參考使用
    2013-11-11
  • JAVA中SSM框架的搭建實(shí)現(xiàn)CRUD的方法

    JAVA中SSM框架的搭建實(shí)現(xiàn)CRUD的方法

    這篇文章主要介紹了JAVA中SSM框架的搭建實(shí)現(xiàn)CRUD的方法,小編把運(yùn)行代碼列了出來(lái),供大家參考。
    2017-11-11
  • 解決Dubbo應(yīng)用啟動(dòng)注冊(cè)ZK獲取IP慢的原因之一

    解決Dubbo應(yīng)用啟動(dòng)注冊(cè)ZK獲取IP慢的原因之一

    這篇文章主要介紹了解決Dubbo應(yīng)用啟動(dòng)注冊(cè)ZK獲取IP慢的原因之一,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java中JFinal框架動(dòng)態(tài)切換數(shù)據(jù)庫(kù)的方法

    Java中JFinal框架動(dòng)態(tài)切換數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了Java中JFinal框架動(dòng)態(tài)切換數(shù)據(jù)庫(kù)的方法,本文通過(guò)兩種方法結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • java web實(shí)現(xiàn)分頁(yè)查詢實(shí)例方法

    java web實(shí)現(xiàn)分頁(yè)查詢實(shí)例方法

    在本篇文章里我們給大家分享了java web實(shí)現(xiàn)分頁(yè)查詢的詳細(xì)方法知識(shí)點(diǎn),有需要的朋友們參考學(xué)習(xí)下。
    2018-10-10
  • Swing中依據(jù)鼠標(biāo)拖拽來(lái)畫出矩形的實(shí)現(xiàn)方法

    Swing中依據(jù)鼠標(biāo)拖拽來(lái)畫出矩形的實(shí)現(xiàn)方法

    這篇文章主要介紹了Swing中依據(jù)鼠標(biāo)拖拽來(lái)畫出矩形的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Springboot自定義全局異常問(wèn)題

    Springboot自定義全局異常問(wèn)題

    這篇文章主要介紹了Springboot自定義全局異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論