arthas 通过logger -c --name --level 修改日志级别 提示是成功 实际没修改成功

kninwzqo  于 2022-04-21  发布在  Java
关注(0)|答案(3)|浏览(211)
  • 我已经在 issues 里搜索,没有重复的issue。

环境信息

  • arthas-boot.jar 或者 as.sh 的版本:3.3.6
  • Arthas 版本: 3.3.6
  • 操作系统版本: linux amd64 4.4.198-1.el7.elrepo.x86_64
  • 目标进程的JVM版本: 1.8
  • 执行arthas-boot的版本: xxx

重现问题的步骤

1 logback-spring日志配置 logback-core1.2.3 springboot 2.0.7RELEASE logstash-logback-encoder 6.1
`

<!--控制台日志不做限制-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd TollStationInformLogEntityHH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

<!-- 输出至ELK -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!--<destination>${LOGSTASH_HOST:-logstash.hngsetc.com:20034}</destination>-->
    <destination>${LOGSTASH_HOST:-logstash.hngsetc.com:5044}</destination>
    <!--<destination>localhost:5044</destination>-->
    <listener class="net.logstash.logback.appender.listener.FailureSummaryLoggingAppenderListener"/>
    <queueSize>1048576</queueSize>
    <keepAliveDuration>5 minutes</keepAliveDuration>

    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
        <providers>
            <timestamp>
                <timeZone>UTC</timeZone>
            </timestamp>
            <pattern>
                <pattern>
                    {
                    "severity": "%level",
                    "service": "${springAppName:-}",
                    "trace": "%X{X-B3-TraceId:-}",
                    "span": "%X{X-B3-SpanId:-}",
                    "parent": "%X{X-B3-ParentSpanId:-}",
                    "exportable": "%X{X-Span-Export:-}",
                    "pid": "${PID:-}",
                    "thread": "%thread",
                    "class": "%logger{40}",
                    "message": "%message"
                    }
                </pattern>
            </pattern>
            <stackTrace>
                <fieldName>stackTrace</fieldName>
                <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                    <exclude>net\.sf\.cglib\..*</exclude>
                    <maxDepthPerThrowable>30</maxDepthPerThrowable>
                    <rootCauseFirst>true</rootCauseFirst>
                    <maxLength>7500</maxLength>
                    <shortenedClassNameLength>30</shortenedClassNameLength>
                </throwableConverter>
            </stackTrace>
        </providers>
    </encoder>
</appender>

<springProfile name="prod">
    <logger name="com.talkweb" level="INFO" additivity="true"/>
    <logger name="com.alibaba.nacos" level="INFO" additivity="true"/>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</springProfile>

<springProfile name="test,local">
    <logger name="com.talkweb" level="INFO" additivity="true"/>
    <logger name="com.alibaba.nacos" level="ERROR" additivity="true"/>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>

</springProfile>

` 2、修改完日志级别为error后提示成功 再去查询日志级别也已经变更

3、内网环境无法提供复现的demo

期望的结果

只会输入error级别的日志

实际运行的结果

还是正常输出info

把异常信息贴到这里

kmb7vmvb

kmb7vmvb1#

logger是有层级的,logger没有设置 level,才会向上取到 ROOT的 level。 要查看,修改具体的logger的信息,比如 com.test.AAA 之类的。

wlp8pajw

wlp8pajw2#

通过 logger --include-no-appender 然后在找到对应的 name 和classLoaderHash 再次进行修改吗? 这里修改level 还是effectiveLevel 或者都要

k10s72fa

k10s72fa3#

还是一样的打印info

相关问题