mirror of
https://github.com/alibaba/arthas.git
synced 2026-11-12 22:41:26 +00:00
209 lines
10 KiB
Plaintext
209 lines
10 KiB
Plaintext
logger
|
||
===
|
||
|
||
[`logger` online tutorial](https://arthas.aliyun.com/doc/arthas-tutorials?language=en&id=command-logger)
|
||
|
||
> Print the logger information, update the logger level
|
||
|
||
### Usage
|
||
|
||
#### Print the logger information
|
||
|
||
Take the following `logback.xml` as an example:
|
||
|
||
```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>
|
||
```
|
||
|
||
|
||
The result of the `logger` command:
|
||
|
||
```bash
|
||
[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]
|
||
```
|
||
|
||
In the `appenders` section:
|
||
|
||
* The target of `CONSOLE` logger is `System.out`
|
||
* `APPLICATION` logger is `RollingFileAppender`, the file is `app.log`
|
||
* `ASYNC` its `appenderRef` is `APPLICATION`, which means asynchronous output to the file
|
||
|
||
#### View logger information for the special name
|
||
|
||
```bash
|
||
[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
|
||
```
|
||
|
||
#### View logger information for the special classloader
|
||
|
||
Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.
|
||
|
||
if you use`-c`, you have to manually type hashcode by `-c <hashcode>`.
|
||
|
||
```bash
|
||
[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]
|
||
```
|
||
|
||
For classloader with only one instance, it can be specified by `--classLoaderClass` using class name, which is more convenient to use.
|
||
|
||
`logger --classLoaderClass sun.misc.Launcher$AppClassLoader`
|
||
|
||
* PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader.
|
||
|
||
The value of `--classloaderclass` is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, `-c <hashcode>` is dynamic.
|
||
|
||
#### Update logger level
|
||
|
||
```bash
|
||
[arthas@2062]$ logger --name ROOT --level debug
|
||
update logger level success.
|
||
```
|
||
|
||
#### Speecify classloader to update logger level
|
||
|
||
By default,logger command will be executed under SystemClassloader, if the application is a traditional `war`, or using spring boot fat jar, then it needs to specify classloader。
|
||
|
||
You can first use `sc -d yourClassName` to check specified classloader hashcode,then specify classloader when updating logger level:
|
||
|
||
```bash
|
||
[arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug
|
||
```
|
||
|
||
#### View the logger information without appenders
|
||
|
||
|
||
By default, the `logger` command only prints information about the logger with appenders. If you want to see information about loggers without `appender`, you can use the parameter `--include-no-appender`.
|
||
|
||
Note that the output will usually be very long.
|
||
|
||
```bash
|
||
[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
|
||
...
|
||
```
|