From dbc525d2a99c0daa520eb7f115f53b2678e35a4e Mon Sep 17 00:00:00 2001 From: Hollow Man Date: Wed, 12 Aug 2020 20:23:09 +0800 Subject: [PATCH] Arthas logger command scenario tutorial #847 (#1365) --- site/src/site/sphinx/en/logger.md | 2 + site/src/site/sphinx/logger.md | 2 + .../katacoda/command-logger-cn/arthas-boot.md | 16 ++ .../katacoda/command-logger-cn/finish.md | 12 ++ .../katacoda/command-logger-cn/index.json | 45 +++++ tutorials/katacoda/command-logger-cn/intro.md | 23 +++ .../katacoda/command-logger-cn/logger.md | 163 ++++++++++++++++++ .../katacoda/command-logger-cn/start-demo.md | 14 ++ .../katacoda/command-logger-en/arthas-boot.md | 16 ++ .../katacoda/command-logger-en/finish.md | 8 + .../katacoda/command-logger-en/index.json | 45 +++++ tutorials/katacoda/command-logger-en/intro.md | 40 +++++ .../katacoda/command-logger-en/logger.md | 163 ++++++++++++++++++ .../katacoda/command-logger-en/start-demo.md | 14 ++ 14 files changed, 563 insertions(+) create mode 100644 tutorials/katacoda/command-logger-cn/arthas-boot.md create mode 100644 tutorials/katacoda/command-logger-cn/finish.md create mode 100644 tutorials/katacoda/command-logger-cn/index.json create mode 100644 tutorials/katacoda/command-logger-cn/intro.md create mode 100644 tutorials/katacoda/command-logger-cn/logger.md create mode 100644 tutorials/katacoda/command-logger-cn/start-demo.md create mode 100644 tutorials/katacoda/command-logger-en/arthas-boot.md create mode 100644 tutorials/katacoda/command-logger-en/finish.md create mode 100644 tutorials/katacoda/command-logger-en/index.json create mode 100644 tutorials/katacoda/command-logger-en/intro.md create mode 100644 tutorials/katacoda/command-logger-en/logger.md create mode 100644 tutorials/katacoda/command-logger-en/start-demo.md diff --git a/site/src/site/sphinx/en/logger.md b/site/src/site/sphinx/en/logger.md index 960cf297f..bedc9320c 100644 --- a/site/src/site/sphinx/en/logger.md +++ b/site/src/site/sphinx/en/logger.md @@ -1,6 +1,8 @@ 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 diff --git a/site/src/site/sphinx/logger.md b/site/src/site/sphinx/logger.md index 1d8f18208..38337a46c 100644 --- a/site/src/site/sphinx/logger.md +++ b/site/src/site/sphinx/logger.md @@ -1,6 +1,8 @@ logger === +[`logger`在线教程](https://arthas.aliyun.com/doc/arthas-tutorials?language=cn&id=command-logger) + > 查看logger信息,更新logger level ### 使用参考 diff --git a/tutorials/katacoda/command-logger-cn/arthas-boot.md b/tutorials/katacoda/command-logger-cn/arthas-boot.md new file mode 100644 index 000000000..5c6cb8a17 --- /dev/null +++ b/tutorials/katacoda/command-logger-cn/arthas-boot.md @@ -0,0 +1,16 @@ + + + + +在新的`Terminal 2`里,下载`arthas-boot.jar`,再用`java -jar`命令启动: + +`wget https://arthas.aliyun.com/doc/arthas-boot.jar +java -jar arthas-boot.jar`{{execute T2}} + +`arthas-boot`是`Arthas`的启动程序,它启动后,会列出所有的Java进程,用户可以选择需要诊断的目标进程。 + +选择第一个进程,输入 `1`{{execute T2}} ,再`Enter/回车`: + +Attach成功之后,会打印Arthas LOGO。输入 `help`{{execute T2}} 可以获取到更多的帮助信息。 + +![Arthas Boot](/arthas/scenarios/common-resources/assets/arthas-boot.png) diff --git a/tutorials/katacoda/command-logger-cn/finish.md b/tutorials/katacoda/command-logger-cn/finish.md new file mode 100644 index 000000000..8c61ca1b3 --- /dev/null +++ b/tutorials/katacoda/command-logger-cn/finish.md @@ -0,0 +1,12 @@ + +在“logger”中,我们演示了了Arthas的logger命令。如果有更多的技巧或者使用疑问,欢迎在Issue里提出。 + +* Issues: https://github.com/alibaba/arthas/issues +* 文档: https://arthas.aliyun.com/doc + + +如果您在使用Arthas,请让我们知道,您的使用对我们非常重要:[查看](https://github.com/alibaba/arthas/issues/111) + +欢迎关注公众号,获取Arthas项目的信息,源码分析,案例实践。 + +![Arthas公众号](/arthas/scenarios/common-resources/assets/qrcode_gongzhonghao.jpg) \ No newline at end of file diff --git a/tutorials/katacoda/command-logger-cn/index.json b/tutorials/katacoda/command-logger-cn/index.json new file mode 100644 index 000000000..3481afb75 --- /dev/null +++ b/tutorials/katacoda/command-logger-cn/index.json @@ -0,0 +1,45 @@ +{ + "title": "Arthas logger命令", + "description": "Arthas logger命令", + "difficulty": "精通者", + "time": "10-20 分钟", + "details": { + "steps": [ + { + "title": "启动demo", + "text": "start-demo.md" + }, + { + "title": "启动arthas-boot", + "text": "arthas-boot.md" + }, + { + "title": "logger命令", + "text": "logger.md" + } + ], + "intro": { + "text": "intro.md" + }, + "finish": { + "text": "finish.md" + }, + "assets": { + "host01": [] + } + }, + "environment": { + "uilayout": "terminal", + "showdashboard": true, + "dashboards": [ + { + "name": "Web Port 80", + "port": 80 + } + ] + }, + "backend": { + "imageid": "java", + "environmentsprotocol": "http" + } +} diff --git a/tutorials/katacoda/command-logger-cn/intro.md b/tutorials/katacoda/command-logger-cn/intro.md new file mode 100644 index 000000000..9a87b8ea0 --- /dev/null +++ b/tutorials/katacoda/command-logger-cn/intro.md @@ -0,0 +1,23 @@ + + + +![Arthas](https://arthas.aliyun.com/doc/_images/arthas.png) + +`Arthas` 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。 + +`Arthas` 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 `Tab` 自动补全功能,进一步方便进行问题的定位和诊断。 + +当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: + +- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? +- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? +- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? +- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! +- 是否有一个全局视角来查看系统的运行状况? +- 有什么办法可以监控到JVM的实时运行状态? +- 怎么快速定位应用的热点,生成火焰图? + +本教程会以一个普通的Spring Boot应用为例,演示logger命令。 + +* Github: https://github.com/alibaba/arthas +* 文档: https://arthas.aliyun.com/doc/ diff --git a/tutorials/katacoda/command-logger-cn/logger.md b/tutorials/katacoda/command-logger-cn/logger.md new file mode 100644 index 000000000..894d4f8ae --- /dev/null +++ b/tutorials/katacoda/command-logger-cn/logger.md @@ -0,0 +1,163 @@ + +查看logger信息,更新logger level + +### 使用参考 + +#### 查看所有logger信息 + +`logger`{{execute T2}} + +```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] +``` + + +#### 查看指定名字的logger信息 + +`logger -n org.springframework.web`{{execute T2}} + +```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 +``` + +请记下你的classLoaderHash,后面需要使用它。在这里,它是 `2a139a55`。 + +注意:请使用你的classLoaderHash值覆盖 `` ,然后手动执行下面所述命令: + +#### 查看指定classloader的logger信息 + +`logger -c ` + +```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] +``` + +#### 更新logger level + +`logger --name ROOT --level debug`{{execute T2}} + +```bash +[arthas@2062]$ logger --name ROOT --level debug +update logger level success. +``` + +#### 指定classloader更新 logger level + +默认情况下,logger命令会在SystemClassloader下执行,如果应用是传统的`war`应用,或者spring boot fat jar启动的应用,那么需要指定classloader。 + +可以先用 `sc -d yourClassName` 来查看具体的 classloader hashcode,然后在更新level时指定classloader: + +`logger -c --name ROOT --level debug` + +```bash +[arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug +``` + +#### 查看没有appender的logger的信息 + + +默认情况下,`logger`命令只打印有appender的logger的信息。如果想查看没有`appender`的logger的信息,可以加上参数`--include-no-appender`。 + +注意,通常输出结果会很长。 + +`logger --include-no-appender`{{execute T2}} + +```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 +... +``` diff --git a/tutorials/katacoda/command-logger-cn/start-demo.md b/tutorials/katacoda/command-logger-cn/start-demo.md new file mode 100644 index 000000000..59be66ea6 --- /dev/null +++ b/tutorials/katacoda/command-logger-cn/start-demo.md @@ -0,0 +1,14 @@ + + + + +下载`demo-arthas-spring-boot.jar`,再用`java -jar`命令启动: + +`wget https://github.com/hengyunabc/spring-boot-inside/raw/master/demo-arthas-spring-boot/demo-arthas-spring-boot.jar +java -jar demo-arthas-spring-boot.jar`{{execute T1}} + +`demo-arthas-spring-boot`是一个很简单的spring boot应用,源代码:[查看](https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-arthas-spring-boot) + +启动之后,可以访问80端口: https://[[HOST_SUBDOMAIN]]-80-[[KATACODA_HOST]].environments.katacoda.com + +![Demo Web](/arthas/scenarios/common-resources/assets/demo-web.png) \ No newline at end of file diff --git a/tutorials/katacoda/command-logger-en/arthas-boot.md b/tutorials/katacoda/command-logger-en/arthas-boot.md new file mode 100644 index 000000000..5f6d3f246 --- /dev/null +++ b/tutorials/katacoda/command-logger-en/arthas-boot.md @@ -0,0 +1,16 @@ + + + + +In the new `Terminal 2`, download `arthas-boot.jar` and start with the `java -jar` command: + +`wget https://arthas.aliyun.com/doc/arthas-boot.jar +java -jar arthas-boot.jar`{{execute T2}} + +`arthas-boot` is the launcher for `Arthas`. It lists all the Java processes, and the user can select the target process to be diagnosed. + +Select the first process, type `1`{{execute T2}} ,then type `Enter`: + +After the Attach is successful, Arthas LOGO is printed. Enter `help`{{execute T2}} for more help. + +![Arthas Boot](/arthas/scenarios/common-resources/assets/arthas-boot.png) diff --git a/tutorials/katacoda/command-logger-en/finish.md b/tutorials/katacoda/command-logger-en/finish.md new file mode 100644 index 000000000..75ff80ec1 --- /dev/null +++ b/tutorials/katacoda/command-logger-en/finish.md @@ -0,0 +1,8 @@ + +The `logger Tutorial` demonstrates the usage of logger. If you have more tips or questions, please feel free to ask in Issue. + +* Issues: https://github.com/alibaba/arthas/issues +* Documentation: https://arthas.aliyun.com/doc/en + + +If you are using Arthas, please let us know. Your use is very important to us: [View](https://github.com/alibaba/arthas/issues/111) \ No newline at end of file diff --git a/tutorials/katacoda/command-logger-en/index.json b/tutorials/katacoda/command-logger-en/index.json new file mode 100644 index 000000000..91bacb753 --- /dev/null +++ b/tutorials/katacoda/command-logger-en/index.json @@ -0,0 +1,45 @@ +{ + "title": "Arthas logger Command", + "description": "Arthas logger Command", + "difficulty": "master", + "time": "10-20 minutes", + "details": { + "steps": [ + { + "title": "Arthas demo", + "text": "arthas-demo.md" + }, + { + "title": "Start arthas-boot", + "text": "arthas-boot.md" + }, + { + "title": "logger Command", + "text": "logger.md" + } + ], + "intro": { + "text": "intro.md" + }, + "finish": { + "text": "finish.md" + }, + "assets": { + "host01": [] + } + }, + "environment": { + "uilayout": "terminal", + "showdashboard": true, + "dashboards": [ + { + "name": "Web Port 80", + "port": 80 + } + ] + }, + "backend": { + "imageid": "java", + "environmentsprotocol": "http" + } +} diff --git a/tutorials/katacoda/command-logger-en/intro.md b/tutorials/katacoda/command-logger-en/intro.md new file mode 100644 index 000000000..f794dc2e7 --- /dev/null +++ b/tutorials/katacoda/command-logger-en/intro.md @@ -0,0 +1,40 @@ + + + +![Arthas](https://arthas.aliyun.com/doc/_images/arthas.png) + +`Arthas` is a Java diagnostic tool open-sourced by Alibaba middleware team. Arthas helps developers in trouble-shooting issues in production environment for Java based applications without modifying code or restarting servers. + +`Arthas` supports JDK 6+, supports Linux/Mac/Windows. + +## Background + +Oftentimes the production system network is inaccessible from local development environment. If issues are encountered in production systems, it is impossible to use IDE to debug the application remotely. What’s even worse, debugging in production environment is unacceptable, as it will suspend all the threads, leading to services downtime. + +Developers could always try to reproduce the same issue on the test/staging environment. However, this is tricky as some issues cannot be reproduced easily in a different environment, or even disappear once restarted. + +And if you’re thinking of adding some logs to your code to help trouble-shoot the issue, you will have to go through the following lifecycle: test, staging, and then to production. Time is money! This approach is inefficient! Worse still, the issue may not be fixed since it might be irreproducible once the JVM is restarted, as described above. + +Arthas is built to solve these issues. A developer can troubleshoot production issues on the fly. No JVM restart, no additional code changes. Arthas works as an observer, that is, it will never suspend your running threads. + +## Key features + +- Check whether a class is loaded? Or where the class is loaded from? (Useful for trouble-shooting jar file conflicts) +- Decompile a class to ensure the code is running as expected. +- Check classloader statistics, e.g. the number of classloaders, the number of classes loaded per classloader, the classloader hierarchy, possible classloader leaks, etc. +- Check the method invocation details, e.g. method parameter, returned values, exceptions and etc. +- Check the stack trace of specified method invocation. This is useful when a developer wants to know the caller of the method. +- Trace the method invocation to find slow sub-invocations. +- Monitor method invocation statistics, e.g. QPS (Query Per Second), RT (Return Time), success rate and etc. +- Monitor system metrics, thread states and CPU usage, GC statistics and etc. +- Supports command line interactive mode, with auto-complete feature enabled. +- Supports telnet and WebSocket, which enables both local and remote diagnostics with command line and browsers. +- Supports profiler/Flame Graph +- Supports JDK 6+ +- Supports Linux/Mac/Windows + +This tutorial takes a normal Spring Boot application as an example to demonstrate the the usage of logger. + +* Github: https://github.com/alibaba/arthas +* Docs: https://arthas.aliyun.com/doc/en + diff --git a/tutorials/katacoda/command-logger-en/logger.md b/tutorials/katacoda/command-logger-en/logger.md new file mode 100644 index 000000000..1f085c359 --- /dev/null +++ b/tutorials/katacoda/command-logger-en/logger.md @@ -0,0 +1,163 @@ + +Print the logger information, update the logger level + +### Usage + +#### Print the logger information + +`logger`{{execute T2}} + +```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] +``` + +#### View logger information for the special name + +`logger -n org.springframework.web`{{execute T2}} + +```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 +``` + + +Please write down your classLoaderHash here, in the case here, it's `2a139a55`. It will be used in the future steps. + +Note: Please replace `` with your classLoaderHash above, then execute the commands manually in the following steps: + +#### View logger information for the special classloader + +`logger -c ` + +```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] +``` + +#### Update logger level + +`logger --name ROOT --level debug`{{execute T2}} + +```bash +[arthas@2062]$ logger --name ROOT --level debug +update logger level success. +``` + +#### 指定classloader更新 logger level + +默认情况下,logger命令会在SystemClassloader下执行,如果应用是传统的`war`应用,或者spring boot fat jar启动的应用,那么需要指定classloader。 + +可以先用 `sc -d yourClassName` 来查看具体的 classloader hashcode,然后在更新level时指定classloader: + +`logger -c --name ROOT --level debug` + +```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. + +`logger --include-no-appender`{{execute T2}} + +```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 +... +``` diff --git a/tutorials/katacoda/command-logger-en/start-demo.md b/tutorials/katacoda/command-logger-en/start-demo.md new file mode 100644 index 000000000..4915b847a --- /dev/null +++ b/tutorials/katacoda/command-logger-en/start-demo.md @@ -0,0 +1,14 @@ + + + + +Download `demo-arthas-spring-boot.jar`, and start with `java -jar` command: + +`wget https://github.com/hengyunabc/spring-boot-inside/raw/master/demo-arthas-spring-boot/demo-arthas-spring-boot.jar +java -jar demo-arthas-spring-boot.jar`{{execute T1}} + +`demo-arthas-spring-boot` is a simple Spring Boot demo, the source code here: [View](https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-arthas-spring-boot) + +After booting, access port 80: https://[[HOST_SUBDOMAIN]]-80-[[KATACODA_HOST]].environments.katacoda.com + +![Demo Web](/arthas/scenarios/common-resources/assets/demo-web.png) \ No newline at end of file