This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch cn-site
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/cn-site by this push:
     new 87dd5d6069 deploy: 2825fefc0ef9d057cbaa5bafcbab7c516b4131c1
87dd5d6069 is described below

commit 87dd5d6069325c6b4c26d26deda119f013f2afaf
Author: AlbumenJ <[email protected]>
AuthorDate: Thu Feb 9 08:21:35 2023 +0000

    deploy: 2825fefc0ef9d057cbaa5bafcbab7c516b4131c1
---
 sitemap.xml                                        |   2 +-
 .../observability/index.xml                        | 155 ++++++++++++++++++++-
 .../observability/logging/index.html               | 130 ++++++++++++++++-
 zh/sitemap.xml                                     |   2 +-
 4 files changed, 283 insertions(+), 6 deletions(-)

diff --git a/sitemap.xml b/sitemap.xml
index 3a4323f54d..8174d9b353 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://cn.dubbo.apache.org/zh/sitemap.xml</loc><lastmod>2023-02-09T16:16:10+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-02-09T08:44:24+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-02-09T08:44:24+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/zh/sitemap.xml</loc><lastmod>2023-02-09T16:17:37+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git 
a/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/index.xml 
b/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/index.xml
index ede1efc42f..d094f54c61 100644
--- a/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/index.xml
+++ b/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/index.xml
@@ -476,4 +476,157 @@
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> logger&lt;span 
style="color:#719e07">.&lt;/span>error&lt;span 
style="color:#719e07">(&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Error 
occurred when pushing metrics to prometheus: &amp;#34;&lt;/span>&lt;span 
style="color:#719e07">,&lt;/span> e&lt;span style="color:#719e07">);&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs3-V2:
 
链路追踪</title><link>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/tracing/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/tracing/</guid><description/></item><item><title>Docs3-V2:
 日志管理</title><link>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/adv [...]
\ No newline at end of file
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs3-V2:
 
链路追踪</title><link>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/tracing/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/tracing/</guid><description/></item><item><title>Docs3-V2:
 日志管理</title><link>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/adv [...]
+&lt;p>在 Dubbo 框架内所有的日志输出都是通过 LoggerFactory 这个静态工厂类来获得 Logger 的对象实体,并且抽离了一个 
LoggerAdapter 用于对接第三方日志框架,所以就有了JDKLoggerAdapter, Log4jLoggerAdapter, 
SLF4JLoggerAdapter等一些实现子类,分别对接了不同 Log 第三方实现。既然 Dubbo 能够支持这么多log实现,那么这些实现在 Dubbo 
中优先级是在呢么样的呢?这里的优先级是只未配置指定的 logger 提供方的情况下,由 Dubbo 框架自己选择。优先级如下:&lt;/p>
+&lt;table>
+&lt;thead>
+&lt;tr>
+&lt;th>第三方日志框架&lt;/th>
+&lt;th>优先级&lt;/th>
+&lt;/tr>
+&lt;/thead>
+&lt;tbody>
+&lt;tr>
+&lt;td>Log4j&lt;/td>
+&lt;td>最高(默认就用这个)&lt;/td>
+&lt;/tr>
+&lt;tr>
+&lt;td>SLF4J&lt;/td>
+&lt;td>次高(上面没有采用这个)&lt;/td>
+&lt;/tr>
+&lt;tr>
+&lt;td>Common Logging(jcl就是common logging)&lt;/td>
+&lt;td>次低(Log4j和SLF4J在项目中均没有就用这个)&lt;/td>
+&lt;/tr>
+&lt;tr>
+&lt;td>JDK log&lt;/td>
+&lt;td>最低(最后的选择)&lt;/td>
+&lt;/tr>
+&lt;/tbody>
+&lt;/table>
+&lt;p>Dubbo 日志的调用方式,针对不同的日志打印系统,采用统一的 API 调用及输出,如:&lt;/p>
+&lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#586e75">/**
+&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75"> * ChannelListenerDispatcher
+&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75"> */&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">public&lt;/span> &lt;span 
style="color:#268bd2">class&lt;/span> &lt;span 
style="color:#268bd2">ChannelHandlerDispatcher&lt;/span> &lt;span 
style="color:#268bd2">implements&lt;/span> ChannelHandler &lt;span 
style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">private&lt;/span> &lt;span 
style="color:#268bd2">static&lt;/span> &lt;span 
style="color:#268bd2">final&lt;/span> ErrorTypeAwareLogger logger &lt;span 
style="color:#719e07">=&lt;/span> LoggerFactory&lt;span 
style="color:#719e07">.&lt;/span>getErrorTypeAwareLogger&lt;span 
style="color:#719e07">(&lt;/span>ChannelHandlerDispatcher&lt;span 
style="color:#719e07">.&lt;/span>class&lt;span style="color:#71 [...]
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Dubbo 采用的日志输出方式是首先从 
dubbo.application.logger 
系统变量中获取属性值,来判断到底采用哪种日志输出方式,如果没设置则按照默认的加载顺序加载相应的日志输出类,直到成功加载:&lt;/p>
+&lt;p>顺序为:log4jLogger &amp;gt; slf4jLogger &amp;gt; JclLogger &amp;gt; 
JdkLogger&lt;/p>
+&lt;p>LoggerFactory 在类加载过程中变量的初始化过程:&lt;/p>
+&lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#586e75">// search 
common-used logging frameworks
+&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">static&lt;/span> 
&lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> String logger 
&lt;span style="color:#719e07">=&lt;/span> System&lt;span 
style="color:#719e07">.&lt;/span>getProperty&lt;span 
style="color:#719e07">(&lt;/span>&lt;span 
style="color:#2aa198">&amp;#34;dubbo.application.logger&amp;#34;&lt;/span>&lt;span
 style="color:#719e07">,&lt;/span> &lt;span 
style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>&lt;span 
style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">switch&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>logger&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">case&lt;/span> Slf4jLoggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>NAME&lt;span style="color:#719e07">:&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>&lt;span 
style="color:#719e07">new&lt;/span> Slf4jLoggerAdapter&lt;span 
style="color:#719e07">());&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">case&lt;/span> JclLoggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>NAME&lt;span style="color:#719e07">:&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>&lt;span 
style="color:#719e07">new&lt;/span> JclLoggerAdapter&lt;span 
style="color:#719e07">());&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">case&lt;/span> Log4jLoggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>NAME&lt;span style="color:#719e07">:&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>&lt;span 
style="color:#719e07">new&lt;/span> Log4jLoggerAdapter&lt;span 
style="color:#719e07">());&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">case&lt;/span> JdkLoggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>NAME&lt;span style="color:#719e07">:&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>&lt;span 
style="color:#719e07">new&lt;/span> JdkLoggerAdapter&lt;span 
style="color:#719e07">());&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">case&lt;/span> Log4j2LoggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>NAME&lt;span style="color:#719e07">:&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>&lt;span 
style="color:#719e07">new&lt;/span> Log4j2LoggerAdapter&lt;span 
style="color:#719e07">());&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">default&lt;/span>&lt;span 
style="color:#719e07">:&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> List&lt;span 
style="color:#719e07">&amp;lt;&lt;/span>Class&lt;span 
style="color:#719e07">&amp;lt;?&lt;/span> &lt;span 
style="color:#268bd2">extends&lt;/span> LoggerAdapter&lt;span 
style="color:#719e07">&amp;gt;&amp;gt;&lt;/span> candidates &lt;span 
style="color:#719e07">=&lt;/span> Arrays&lt;span 
style="color:#719e07">.&lt;/span>asList&lt;span 
style="color:#719e07">(&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
Log4jLoggerAdapter&lt;span style="color:#719e07">.&lt;/span>class&lt;span 
style="color:#719e07">,&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
Slf4jLoggerAdapter&lt;span style="color:#719e07">.&lt;/span>class&lt;span 
style="color:#719e07">,&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
Log4j2LoggerAdapter&lt;span style="color:#719e07">.&lt;/span>class&lt;span 
style="color:#719e07">,&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
JclLoggerAdapter&lt;span style="color:#719e07">.&lt;/span>class&lt;span 
style="color:#719e07">,&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
JdkLoggerAdapter&lt;span style="color:#719e07">.&lt;/span>class
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#dc322f">boolean&lt;/span> found &lt;span 
style="color:#719e07">=&lt;/span> &lt;span 
style="color:#cb4b16">false&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#586e75">// try to use the first available adapter
+&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">for&lt;/span> 
&lt;span style="color:#719e07">(&lt;/span>Class&lt;span 
style="color:#719e07">&amp;lt;?&lt;/span> &lt;span 
style="color:#268bd2">extends&lt;/span> LoggerAdapter&lt;span 
style="color:#719e07">&amp;gt;&lt;/span> clazz &lt;span 
style="color:#719e07">:&lt;/span> candidates&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:# [...]
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">try&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> LoggerAdapter 
loggerAdapter &lt;span style="color:#719e07">=&lt;/span> clazz&lt;span 
style="color:#719e07">.&lt;/span>getConstructor&lt;span 
style="color:#719e07">().&lt;/span>newInstance&lt;span 
style="color:#719e07">();&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
loggerAdapter&lt;span style="color:#719e07">.&lt;/span>getLogger&lt;span 
style="color:#719e07">(&lt;/span>LoggerFactory&lt;span 
style="color:#719e07">.&lt;/span>class&lt;span 
style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">if&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>loggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>isConfigured&lt;span 
style="color:#719e07">())&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>loggerAdapter&lt;span 
style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> found &lt;span 
style="color:#719e07">=&lt;/span> &lt;span 
style="color:#cb4b16">true&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span> &lt;span 
style="color:#719e07">catch&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>Exception &lt;span 
style="color:#719e07">|&lt;/span> LinkageError ignored&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#586e75">// ignore
+&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">if&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>found&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System&lt;span 
style="color:#719e07">.&lt;/span>err&lt;span 
style="color:#719e07">.&lt;/span>println&lt;span 
style="color:#719e07">(&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Dubbo: 
Unable to find a proper configured logger to log 
out.&amp;#34;&lt;/span>&lt;span style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">for&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>Class&lt;span 
style="color:#719e07">&amp;lt;?&lt;/span> &lt;span 
style="color:#268bd2">extends&lt;/span> LoggerAdapter&lt;span 
style="color:#719e07">&amp;gt;&lt;/span> clazz &lt;span 
style="color:#719e07">:&lt;/span> candidates&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">try&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> LoggerAdapter 
loggerAdapter &lt;span style="color:#719e07">=&lt;/span> clazz&lt;span 
style="color:#719e07">.&lt;/span>getConstructor&lt;span 
style="color:#719e07">().&lt;/span>newInstance&lt;span 
style="color:#719e07">();&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
loggerAdapter&lt;span style="color:#719e07">.&lt;/span>getLogger&lt;span 
style="color:#719e07">(&lt;/span>LoggerFactory&lt;span 
style="color:#719e07">.&lt;/span>class&lt;span 
style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
setLoggerAdapter&lt;span style="color:#719e07">(&lt;/span>loggerAdapter&lt;span 
style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> found &lt;span 
style="color:#719e07">=&lt;/span> &lt;span 
style="color:#cb4b16">true&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">break&lt;/span>&lt;span style="color:#719e07">;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span> &lt;span 
style="color:#719e07">catch&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>Throwable ignored&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#586e75">// ignore
+&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">if&lt;/span> &lt;span 
style="color:#719e07">(&lt;/span>found&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System&lt;span 
style="color:#719e07">.&lt;/span>err&lt;span 
style="color:#719e07">.&lt;/span>println&lt;span 
style="color:#719e07">(&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Dubbo: 
Using default logger: &amp;#34;&lt;/span> &lt;span 
style="color:#719e07">+&lt;/span> loggerAdapter&lt;span 
style="color:#719e07">.&lt;/span>getClass&lt;span 
style="color:#719e07">().&lt;/span>getName&lt;span 
style="color:#719e07">()&lt;/span> [...]
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#2aa198">&amp;#34;If you cannot see any log, please configure 
-Ddubbo.application.logger property to your preferred logging 
framework.&amp;#34;&lt;/span>&lt;span style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span> &lt;span style="color:#719e07">else&lt;/span> 
&lt;span style="color:#719e07">{&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System&lt;span 
style="color:#719e07">.&lt;/span>err&lt;span 
style="color:#719e07">.&lt;/span>println&lt;span 
style="color:#719e07">(&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Dubbo: 
Unable to find any available logger adapter to log out. Dubbo logs will be 
ignored. &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#2aa198">&amp;#34;Please configure -Ddubbo.application.logger 
property and add corresponding logging library to 
classpath.&amp;#34;&lt;/span>&lt;span style="color:#719e07">);&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上面这段静态块是在LoggerFactory里面,说明只要LoggerFactory类一加载就会去选择对应的日志提供方。大家可能会发现对日志的提供方其实是可以通过配置来指定的,因为静态块一开始是从当前jvm环境中获取dubbo.application.logger,这个参数是同java
 -Ddubbo.application.logger=xxxx去指定的,如果是放在容器里面,就需要配置在容器启动的jvm参数里面。&lt;/p>
+&lt;h2 id="使用log4j来提供日志输出">使用Log4j来提供日志输出&lt;/h2>
+&lt;p>你不用做过多的处理就可以开启dubbo的日志,因为dubbo默认就是使用log4j。你唯一需要做的就是配置一个name是&amp;quot;com.alibaba.dubbo&amp;quot;的logger就可以了,然后关联到对应的appender。如下:&lt;/p>
+&lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;appender&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;dubboAppender&amp;#34;&lt;/span> class=&lt;span 
style="color:#2aa198">&amp;#34;org.apache.log4j.DailyRollingFileAppender&amp;#34;&lt;/span>&lt;span
 style="color:#268bd [...]
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;param&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;File&amp;#34;&lt;/span> value=&lt;span 
style="color:#2aa198">&amp;#34;E:/dubbo.log&amp;#34;&lt;/span> &lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;param&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;DatePattern&amp;#34;&lt;/span> value=&lt;span 
style="color:#2aa198">&amp;#34;&amp;#39;.&amp;#39;yyyy-MM-dd&amp;#39;.log&amp;#39;&amp;#34;&lt;/span>
 &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;layout&lt;/span> class=&lt;span 
style="color:#2aa198">&amp;#34;org.apache.log4j.PatternLayout&amp;#34;&lt;/span>&lt;span
 style="color:#268bd2">&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;param&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;ConversionPattern&amp;#34;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> value=&lt;span 
style="color:#2aa198">&amp;#34;[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - 
%m%n&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;/layout&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;/appender&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;logger&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;com.alibaba.dubbo&amp;#34;&lt;/span> 
additivity=&lt;span 
style="color:#2aa198">&amp;#34;false&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;priority&lt;/span> value =&lt;span 
style="color:#2aa198">&amp;#34;info&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;appender-ref&lt;/span> ref=&lt;span 
style="color:#2aa198">&amp;#34;dubboAppender&amp;#34;&lt;/span> &lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;/logger&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 
id="使用logback来提供日志输出">使用logback来提供日志输出&lt;/h2>
+&lt;p>这种情况,默认是看不到dubbo的日志输出的,除非出现异常,被你当前系统的日志框架拦截住了。我这里就拿当前使用最多的日志框架logback来做示例。我们知道logback天生和slf4j进行了集成,所以要在项目里面使用logback,调用slf4j暴露的接口就可以。所以要把dubbo的日志输出切换到logback,也就变成了切换到slf4j了。&lt;/p>
+&lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;timestamp&lt;/span> key=&lt;span 
style="color:#2aa198">&amp;#34;byDate&amp;#34;&lt;/span> datePattern=&lt;span 
style="color:#2aa198">&amp;#34;yyyyMMdd&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#586e75">&amp;lt;!-- dubbo log --&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;appender&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;dubboRolling&amp;#34;&lt;/span> class=&lt;span 
style="color:#2aa198">&amp;#34;ch.qos.logback.core.rolling.RollingFileAppender&amp;#34;&lt;/span>&lt;span
 style="color:#268bd2">&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;Encoding&amp;gt;&lt;/span>UTF-8&lt;span 
style="color:#268bd2">&amp;lt;/Encoding&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;file&amp;gt;&lt;/span>${LOG_HOME_DUBBO}/MTP-DUBBO.log&lt;span
 style="color:#268bd2">&amp;lt;/file&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;rollingPolicy&lt;/span> class=&lt;span 
style="color:#2aa198">&amp;#34;ch.qos.logback.core.rolling.TimeBasedRollingPolicy&amp;#34;&lt;/span>&lt;span
 style="color:#268bd2">&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;fileNamePattern&amp;gt;&lt;/span>${LOG_HOME_DUBBO}/DEMO-%d{yyyy-MM-dd}.%i-DUBBO.zip&lt;span
 style="color:#268bd2">&amp;lt;/fileNamePattern&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;maxHistory&amp;gt;&lt;/span>30&lt;span 
style="color:#268bd2">&amp;lt;/maxHistory&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;TimeBasedFileNamingAndTriggeringPolicy&lt;/span> 
class=&lt;span 
style="color:#2aa198">&amp;#34;ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP&amp;#34;&lt;/span>&lt;span
 style="color:#268bd2">&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;MaxFileSize&amp;gt;&lt;/span>100MB&lt;span 
style="color:#268bd2">&amp;lt;/MaxFileSize&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;/TimeBasedFileNamingAndTriggeringPolicy&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;/rollingPolicy&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;encoder&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;pattern&amp;gt;&lt;/span>%d{yyyy-MM-dd 
HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n&lt;span 
style="color:#268bd2">&amp;lt;/pattern&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;immediateFlush&amp;gt;&lt;/span>true&lt;span 
style="color:#268bd2">&amp;lt;/immediateFlush&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;/encoder&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;/appender&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;logger&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;com.alibaba.dubbo&amp;#34;&lt;/span> 
level=&lt;span style="color:#2aa198">&amp;#34;DEBUG&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;appender-ref&lt;/span> ref=&lt;span 
style="color:#2aa198">&amp;#34;dubboRolling&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;/logger&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Dubbo 
也可以将日志信息记录或者保存到文件中。&lt;/p>
+&lt;ol>
+&lt;li>使用&lt;code>accesslog&lt;/code>输出到&lt;code>log4j&lt;/code>&lt;/li>
+&lt;/ol>
+&lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> accesslog=&lt;span 
style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span> port=&lt;span 
style="color:#2aa198">&amp;#34;20880&amp;#34;&lt [...]
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> accesslog=&lt;span 
style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span> name=&lt;span 
style="color:#2aa198">&amp;#34;rmi&amp;#34;&lt;/span> port=&lt;span 
style="color:#2aa198">&amp;#34;1099&amp;#34;&lt;/span> &lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
+&lt;li>输出到文件&lt;/li>
+&lt;/ol>
+&lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> accesslog=&lt;span 
style="color:#2aa198">&amp;#34;http://localhost/log.txt&amp;#34;&lt;/span> 
name=&lt;span style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span> 
port=&lt;span style="color:#2aa198">&amp;# [...]
+&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> accesslog=&lt;span 
style="color:#2aa198">&amp;#34;http://localhost/log2.txt&amp;#34;&lt;/span> 
name=&lt;span style="color:#2aa198">&amp;#34;rmi&amp;#34;&lt;/span> 
port=&lt;span style="color:#2aa198">&amp;#34;1099&amp;#34;&lt;/span> &lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs3-V2:
 
健康检查</title><link>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/health-information/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/health-information/</guid><description/></item><item><title>Docs3-V2:
 K8S探测器</title><link>https://cn.dubbo.apache.org/ [...]
\ No newline at end of file
diff --git 
a/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging/index.html
 
b/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging/index.html
index 4eb3cb1e81..65e293630a 100644
--- 
a/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging/index.html
+++ 
b/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging/index.html
@@ -1,10 +1,134 @@
-<!doctype html><html lang=zh class=no-js><head><meta charset=utf-8><meta 
name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.110.0"><meta name=ROBOTS content="INDEX, 
FOLLOW"><link rel="shortcut icon" href=/favicons/favicon.ico><link 
rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png 
sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png 
sizes=16x16><link rel=icon type=image/png href=/favicons [...]
+<!doctype html><html lang=zh class=no-js><head><meta charset=utf-8><meta 
name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.110.0"><meta name=ROBOTS content="INDEX, 
FOLLOW"><link rel="shortcut icon" href=/favicons/favicon.ico><link 
rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png 
sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png 
sizes=16x16><link rel=icon type=image/png href=/favicons [...]
+第三方日志框架 优先级 Log4j 最高(默认就用这个) SLF4J 次高(上面没有采用这个) Common Logging(jcl就是common 
logging) 次低(Log4j和SLF4J在项目中均没有就用这个) JDK log 最低(最后的选择) Dubbo 
日志的调用方式,针对不同的日志打印系统,采用统一的 API 调用及输出,如:
+/** * ChannelListenerDispatcher */ public class ChannelHandlerDispatcher 
implements ChannelHandler { private static final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(ChannelHandlerDispatcher.class); Dubbo 
采用的日志输出方式是首先从 dubbo.application.logger 
系统变量中获取属性值,来判断到底采用哪种日志输出方式,如果没设置则按照默认的加载顺序加载相应的日志输出类,直到成功加载:
+顺序为:log4jLogger > slf4jLogger > JclLogger > JdkLogger
+LoggerFactory 在类加载过程中变量的初始化过程:
+// search common-used logging frameworks static { String logger = 
System."><meta property="og:type" content="article"><meta property="og:url" 
content="https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging/";><meta
 property="article:section" content="docs3-v2"><meta 
property="article:modified_time" content="2023-02-09T16:17:37+08:00"><meta 
property="og:site_name" content="Apache Dubbo"><meta itemprop=name 
content="日志管理"><meta itemprop=descriptio [...]
+第三方日志框架 优先级 Log4j 最高(默认就用这个) SLF4J 次高(上面没有采用这个) Common Logging(jcl就是common 
logging) 次低(Log4j和SLF4J在项目中均没有就用这个) JDK log 最低(最后的选择) Dubbo 
日志的调用方式,针对不同的日志打印系统,采用统一的 API 调用及输出,如:
+/** * ChannelListenerDispatcher */ public class ChannelHandlerDispatcher 
implements ChannelHandler { private static final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(ChannelHandlerDispatcher.class); Dubbo 
采用的日志输出方式是首先从 dubbo.application.logger 
系统变量中获取属性值,来判断到底采用哪种日志输出方式,如果没设置则按照默认的加载顺序加载相应的日志输出类,直到成功加载:
+顺序为:log4jLogger > slf4jLogger > JclLogger > JdkLogger
+LoggerFactory 在类加载过程中变量的初始化过程:
+// search common-used logging frameworks static { String logger = 
System."><meta itemprop=dateModified content="2023-02-09T16:17:37+08:00"><meta 
itemprop=wordCount content="379"><meta itemprop=keywords content><meta 
name=twitter:card content="summary"><meta name=twitter:title 
content="日志管理"><meta name=twitter:description content="在 Dubbo 框架内所有的日志输出都是通过 
LoggerFactory 这个静态工厂类来获得 Logger 的对象实体,并且抽离了一个 LoggerAdapter 
用于对接第三方日志框架,所以就有了JDKLoggerAdapter, Log4jLoggerAdapter, SLF4JLoggerAdapter等一些实 
[...]
+第三方日志框架 优先级 Log4j 最高(默认就用这个) SLF4J 次高(上面没有采用这个) Common Logging(jcl就是common 
logging) 次低(Log4j和SLF4J在项目中均没有就用这个) JDK log 最低(最后的选择) Dubbo 
日志的调用方式,针对不同的日志打印系统,采用统一的 API 调用及输出,如:
+/** * ChannelListenerDispatcher */ public class ChannelHandlerDispatcher 
implements ChannelHandler { private static final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(ChannelHandlerDispatcher.class); Dubbo 
采用的日志输出方式是首先从 dubbo.application.logger 
系统变量中获取属性值,来判断到底采用哪种日志输出方式,如果没设置则按照默认的加载顺序加载相应的日志输出类,直到成功加载:
+顺序为:log4jLogger > slf4jLogger > JclLogger > JdkLogger
+LoggerFactory 在类加载过程中变量的初始化过程:
+// search common-used logging frameworks static { String logger = 
System."><script type=application/javascript>var 
doNotTrack=!1;doNotTrack||(window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new
 
Date,ga("create","UA-112489517-1","auto"),ga("send","pageview"))</script><script
 async src=https://www.google-analytics.com/analytics.js></script>
 <link rel=preload 
href=/scss/main.min.8637cb48af1c2672dbf22e4e83652c0cebe2d667477b88c8a046be155bcf7cfe.css
 as=style><link 
href=/scss/main.min.8637cb48af1c2672dbf22e4e83652c0cebe2d667477b88c8a046be155bcf7cfe.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" 
crossorigin=anonymous></script>
 <link rel=stylesheet 
href=https://cdn.jsdelivr.net/npm/@docsearch/css@3></head><body 
class=td-page><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand 
href=/zh/><span class=navbar-logo><svg xmlns="http://www.w3.org/2000/svg"; 
viewBox="0 0 321.39 78.54"><title id="title19">DUBBO LOGO</title><path 
class="cls-1" d="M68.46 50.38c0 14.06 11.39 22.11 25.45 22.11s25.45-8.05 
25.45-22.11V7.25H68.46zm21.24-28h8.6V31H89.7zm0  [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e6%97%a5%e5%bf%97%e7%ae%a1%e7%90%86";
 target=_blank><i class="fab fa-github fa-fw"></i> 提交文档问题</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></aside><main class="col-12 col-md-9 
col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class="d-none d-md-block 
d-print-none"><ol class="breadcrumb spb-1"><li class=breadcrumb-item><a 
href=https://cn.dubbo.apache.org/zh/docs3-v2/>SDK 手册</a></li><li 
class=breadcrumb-item><a 
href=https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/>Java</a></li><li 
class=breadcrumb-item><a  [...]
-<button class="btn btn-primary mb-4 feedback--answer 
feedback--answer-no">No</button><p class="feedback--response 
feedback--response-yes">Glad to hear it! Please <a 
href=https://github.com/apache/dubbo-website/issues/new>tell us how we can 
improve</a>.</p><p class="feedback--response feedback--response-no">Sorry to 
hear that. Please <a 
href=https://github.com/apache/dubbo-website/issues/new>tell us how we can 
improve</a>.</p></div><script>const yesButton=document.querySelector(".feedback 
[...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div><div class=td-toc><nav 
id=TableOfContents><ul><li><a 
href=#使用log4j来提供日志输出>使用Log4j来提供日志输出</a></li><li><a 
href=#使用logback来提供日志输出>使用logback来提供日志输出</a></li></ul></nav></div></aside><main 
class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class="d-none d-md-block d-print-none"><ol class="breadcrumb spb-1"><li 
class=breadcrumb-item><a href=https://cn.du [...]
+</span></span></span><span style=display:flex><span><span style=color:#586e75> 
* ChannelListenerDispatcher
+</span></span></span><span style=display:flex><span><span style=color:#586e75> 
*/</span>
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span 
style=color:#268bd2>ChannelHandlerDispatcher</span> <span 
style=color:#268bd2>implements</span> ChannelHandler <span 
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>private</span> <span style=color:#268bd2>static</span> 
<span style=color:#268bd2>final</span> ErrorTypeAwareLogger logger <span 
style=color:#719e07>=</span> LoggerFactory<span 
style=color:#719e07>.</span>getErrorTypeAwareLogger<span 
style=color:#719e07>(</span>ChannelHandlerDispatcher<span 
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span></code></pre></div><p>Dubbo 采用的日志输出方式是首先从 
dubbo.application.logger 
系统变量中获取属性值,来判断到底采用哪种日志输出方式,如果没设置则按照默认的加载顺序加载相应的日志输出类,直到成功加载:</p><p>顺序为:log4jLogger
 > slf4jLogger > JclLogger > JdkLogger</p><p>LoggerFactory 
在类加载过程中变量的初始化过程:</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#586e75>// search common-used logging [...]
+</span></span></span><span style=display:flex><span><span 
style=color:#586e75></span><span style=color:#268bd2>static</span> <span 
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>    String logger <span 
style=color:#719e07>=</span> System<span 
style=color:#719e07>.</span>getProperty<span style=color:#719e07>(</span><span 
style=color:#2aa198>&#34;dubbo.application.logger&#34;</span><span 
style=color:#719e07>,</span> <span style=color:#2aa198>&#34;&#34;</span><span 
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>    <span 
style=color:#719e07>switch</span> <span style=color:#719e07>(</span>logger<span 
style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#719e07>case</span> Slf4jLoggerAdapter<span 
style=color:#719e07>.</span>NAME<span style=color:#719e07>:</span>
+</span></span><span style=display:flex><span>            setLoggerAdapter<span 
style=color:#719e07>(</span><span style=color:#719e07>new</span> 
Slf4jLoggerAdapter<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#719e07>case</span> JclLoggerAdapter<span 
style=color:#719e07>.</span>NAME<span style=color:#719e07>:</span>
+</span></span><span style=display:flex><span>            setLoggerAdapter<span 
style=color:#719e07>(</span><span style=color:#719e07>new</span> 
JclLoggerAdapter<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#719e07>case</span> Log4jLoggerAdapter<span 
style=color:#719e07>.</span>NAME<span style=color:#719e07>:</span>
+</span></span><span style=display:flex><span>            setLoggerAdapter<span 
style=color:#719e07>(</span><span style=color:#719e07>new</span> 
Log4jLoggerAdapter<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#719e07>case</span> JdkLoggerAdapter<span 
style=color:#719e07>.</span>NAME<span style=color:#719e07>:</span>
+</span></span><span style=display:flex><span>            setLoggerAdapter<span 
style=color:#719e07>(</span><span style=color:#719e07>new</span> 
JdkLoggerAdapter<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#719e07>case</span> Log4j2LoggerAdapter<span 
style=color:#719e07>.</span>NAME<span style=color:#719e07>:</span>
+</span></span><span style=display:flex><span>            setLoggerAdapter<span 
style=color:#719e07>(</span><span style=color:#719e07>new</span> 
Log4j2LoggerAdapter<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#719e07>default</span><span style=color:#719e07>:</span>
+</span></span><span style=display:flex><span>            List<span 
style=color:#719e07>&lt;</span>Class<span style=color:#719e07>&lt;?</span> 
<span style=color:#268bd2>extends</span> LoggerAdapter<span 
style=color:#719e07>&gt;&gt;</span> candidates <span 
style=color:#719e07>=</span> Arrays<span 
style=color:#719e07>.</span>asList<span style=color:#719e07>(</span>
+</span></span><span style=display:flex><span>                
Log4jLoggerAdapter<span style=color:#719e07>.</span>class<span 
style=color:#719e07>,</span>
+</span></span><span style=display:flex><span>                
Slf4jLoggerAdapter<span style=color:#719e07>.</span>class<span 
style=color:#719e07>,</span>
+</span></span><span style=display:flex><span>                
Log4j2LoggerAdapter<span style=color:#719e07>.</span>class<span 
style=color:#719e07>,</span>
+</span></span><span style=display:flex><span>                
JclLoggerAdapter<span style=color:#719e07>.</span>class<span 
style=color:#719e07>,</span>
+</span></span><span style=display:flex><span>                
JdkLoggerAdapter<span style=color:#719e07>.</span>class
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#dc322f>boolean</span> found <span style=color:#719e07>=</span> 
<span style=color:#cb4b16>false</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#586e75>// try to use the first available adapter
+</span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>            <span style=color:#719e07>for</span> 
<span style=color:#719e07>(</span>Class<span style=color:#719e07>&lt;?</span> 
<span style=color:#268bd2>extends</span> LoggerAdapter<span 
style=color:#719e07>&gt;</span> clazz <span style=color:#719e07>:</span> 
candidates<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                <span 
style=color:#719e07>try</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                    LoggerAdapter 
loggerAdapter <span style=color:#719e07>=</span> clazz<span 
style=color:#719e07>.</span>getConstructor<span 
style=color:#719e07>().</span>newInstance<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span>                    
loggerAdapter<span style=color:#719e07>.</span>getLogger<span 
style=color:#719e07>(</span>LoggerFactory<span 
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>                    <span 
style=color:#719e07>if</span> <span 
style=color:#719e07>(</span>loggerAdapter<span 
style=color:#719e07>.</span>isConfigured<span style=color:#719e07>())</span> 
<span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                        
setLoggerAdapter<span style=color:#719e07>(</span>loggerAdapter<span 
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>                        found 
<span style=color:#719e07>=</span> <span style=color:#cb4b16>true</span><span 
style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>                        <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>                    <span 
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>                <span 
style=color:#719e07>}</span> <span style=color:#719e07>catch</span> <span 
style=color:#719e07>(</span>Exception <span style=color:#719e07>|</span> 
LinkageError ignored<span style=color:#719e07>)</span> <span 
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                    <span 
style=color:#586e75>// ignore
+</span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>                <span style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>if</span> <span style=color:#719e07>(</span>found<span 
style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>            System<span 
style=color:#719e07>.</span>err<span style=color:#719e07>.</span>println<span 
style=color:#719e07>(</span><span style=color:#2aa198>&#34;Dubbo: Unable to 
find a proper configured logger to log out.&#34;</span><span 
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>for</span> <span style=color:#719e07>(</span>Class<span 
style=color:#719e07>&lt;?</span> <span style=color:#268bd2>extends</span> 
LoggerAdapter<span style=color:#719e07>&gt;</span> clazz <span 
style=color:#719e07>:</span> candidates<span style=color:#719e07>)</span> <span 
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                <span 
style=color:#719e07>try</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                    LoggerAdapter 
loggerAdapter <span style=color:#719e07>=</span> clazz<span 
style=color:#719e07>.</span>getConstructor<span 
style=color:#719e07>().</span>newInstance<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span>                    
loggerAdapter<span style=color:#719e07>.</span>getLogger<span 
style=color:#719e07>(</span>LoggerFactory<span 
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>                    
setLoggerAdapter<span style=color:#719e07>(</span>loggerAdapter<span 
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>                    found <span 
style=color:#719e07>=</span> <span style=color:#cb4b16>true</span><span 
style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>                    <span 
style=color:#719e07>break</span><span style=color:#719e07>;</span>
+</span></span><span style=display:flex><span>                <span 
style=color:#719e07>}</span> <span style=color:#719e07>catch</span> <span 
style=color:#719e07>(</span>Throwable ignored<span style=color:#719e07>)</span> 
<span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                    <span 
style=color:#586e75>// ignore
+</span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>                <span style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>if</span> <span style=color:#719e07>(</span>found<span 
style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                System<span 
style=color:#719e07>.</span>err<span style=color:#719e07>.</span>println<span 
style=color:#719e07>(</span><span style=color:#2aa198>&#34;Dubbo: Using default 
logger: &#34;</span> <span style=color:#719e07>+</span> loggerAdapter<span 
style=color:#719e07>.</span>getClass<span 
style=color:#719e07>().</span>getName<span style=color:#719e07>()</span> <span 
style=color:#719e07>+</span> <span style=color:#2aa198>&#34;. &#3 [...]
+</span></span><span style=display:flex><span>                    <span 
style=color:#2aa198>&#34;If you cannot see any log, please configure 
-Ddubbo.application.logger property to your preferred logging 
framework.&#34;</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>}</span> <span style=color:#719e07>else</span> <span 
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>                System<span 
style=color:#719e07>.</span>err<span style=color:#719e07>.</span>println<span 
style=color:#719e07>(</span><span style=color:#2aa198>&#34;Dubbo: Unable to 
find any available logger adapter to log out. Dubbo logs will be ignored. 
&#34;</span> <span style=color:#719e07>+</span>
+</span></span><span style=display:flex><span>                    <span 
style=color:#2aa198>&#34;Please configure -Ddubbo.application.logger property 
and add corresponding logging library to classpath.&#34;</span><span 
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
+</span></span></code></pre></div><p>上面这段静态块是在LoggerFactory里面,说明只要LoggerFactory类一加载就会去选择对应的日志提供方。大家可能会发现对日志的提供方其实是可以通过配置来指定的,因为静态块一开始是从当前jvm环境中获取dubbo.application.logger,这个参数是同java
 -Ddubbo.application.logger=xxxx去指定的,如果是放在容器里面,就需要配置在容器启动的jvm参数里面。</p><h2 
id=使用log4j来提供日志输出>使用Log4j来提供日志输出</h2><p>你不用做过多的处理就可以开启dubbo的日志,因为dubbo默认就是使用log4j。你唯一需要做的就是配置一个name是"com.alibaba.dubbo"的logger就可以了,然后关联到对应的appender。如下:</p><div
 class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-m [...]
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;param</span> name=<span 
style=color:#2aa198>&#34;File&#34;</span> value=<span 
style=color:#2aa198>&#34;E:/dubbo.log&#34;</span> <span 
style=color:#268bd2>/&gt;</span>  
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;param</span> name=<span 
style=color:#2aa198>&#34;DatePattern&#34;</span> value=<span 
style=color:#2aa198>&#34;&#39;.&#39;yyyy-MM-dd&#39;.log&#39;&#34;</span> <span 
style=color:#268bd2>/&gt;</span>  
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;layout</span> class=<span 
style=color:#2aa198>&#34;org.apache.log4j.PatternLayout&#34;</span><span 
style=color:#268bd2>&gt;</span> 
+</span></span><span style=display:flex><span>         <span 
style=color:#268bd2>&lt;param</span> name=<span 
style=color:#2aa198>&#34;ConversionPattern&#34;</span>
+</span></span><span style=display:flex><span>            value=<span 
style=color:#2aa198>&#34;[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - 
%m%n&#34;</span> <span style=color:#268bd2>/&gt;</span> 
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;/layout&gt;</span>  
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;/appender&gt;</span> 
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;logger</span> name=<span 
style=color:#2aa198>&#34;com.alibaba.dubbo&#34;</span> additivity=<span 
style=color:#2aa198>&#34;false&#34;</span><span style=color:#268bd2>&gt;</span> 
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;priority</span> value =<span 
style=color:#2aa198>&#34;info&#34;</span><span style=color:#268bd2>/&gt;</span> 
 
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;appender-ref</span> ref=<span 
style=color:#2aa198>&#34;dubboAppender&#34;</span> <span 
style=color:#268bd2>/&gt;</span>  
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;/logger&gt;</span>
+</span></span></code></pre></div><h2 
id=使用logback来提供日志输出>使用logback来提供日志输出</h2><p>这种情况,默认是看不到dubbo的日志输出的,除非出现异常,被你当前系统的日志框架拦截住了。我这里就拿当前使用最多的日志框架logback来做示例。我们知道logback天生和slf4j进行了集成,所以要在项目里面使用logback,调用slf4j暴露的接口就可以。所以要把dubbo的日志输出切换到logback,也就变成了切换到slf4j了。</p><div
 class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span><span 
style=color:#268bd2>&lt;timestamp</ [...]
+</span></span><span style=display:flex><span>    <span 
style=color:#586e75>&lt;!-- dubbo log --&gt;</span>
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;appender</span> name=<span 
style=color:#2aa198>&#34;dubboRolling&#34;</span> class=<span 
style=color:#2aa198>&#34;ch.qos.logback.core.rolling.RollingFileAppender&#34;</span><span
 style=color:#268bd2>&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;Encoding&gt;</span>UTF-8<span 
style=color:#268bd2>&lt;/Encoding&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;file&gt;</span>${LOG_HOME_DUBBO}/MTP-DUBBO.log<span 
style=color:#268bd2>&lt;/file&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;rollingPolicy</span> class=<span 
style=color:#2aa198>&#34;ch.qos.logback.core.rolling.TimeBasedRollingPolicy&#34;</span><span
 style=color:#268bd2>&gt;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#268bd2>&lt;fileNamePattern&gt;</span>${LOG_HOME_DUBBO}/DEMO-%d{yyyy-MM-dd}.%i-DUBBO.zip<span
 style=color:#268bd2>&lt;/fileNamePattern&gt;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#268bd2>&lt;maxHistory&gt;</span>30<span 
style=color:#268bd2>&lt;/maxHistory&gt;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#268bd2>&lt;TimeBasedFileNamingAndTriggeringPolicy</span> 
class=<span 
style=color:#2aa198>&#34;ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP&#34;</span><span
 style=color:#268bd2>&gt;</span>
+</span></span><span style=display:flex><span>                <span 
style=color:#268bd2>&lt;MaxFileSize&gt;</span>100MB<span 
style=color:#268bd2>&lt;/MaxFileSize&gt;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#268bd2>&lt;/TimeBasedFileNamingAndTriggeringPolicy&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;/rollingPolicy&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;encoder&gt;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#268bd2>&lt;pattern&gt;</span>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] 
%-5level %logger{36} - %msg%n<span style=color:#268bd2>&lt;/pattern&gt;</span>
+</span></span><span style=display:flex><span>            <span 
style=color:#268bd2>&lt;immediateFlush&gt;</span>true<span 
style=color:#268bd2>&lt;/immediateFlush&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;/encoder&gt;</span>
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;/appender&gt;</span>
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;logger</span> name=<span 
style=color:#2aa198>&#34;com.alibaba.dubbo&#34;</span> level=<span 
style=color:#2aa198>&#34;DEBUG&#34;</span><span style=color:#268bd2>&gt;</span>
+</span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;appender-ref</span> ref=<span 
style=color:#2aa198>&#34;dubboRolling&#34;</span><span 
style=color:#268bd2>/&gt;</span>
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;/logger&gt;</span>
+</span></span></code></pre></div><p>Dubbo 
也可以将日志信息记录或者保存到文件中。</p><ol><li>使用<code>accesslog</code>输出到<code>log4j</code></li></ol><div
 class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:protocol</span> accesslog=<span 
style=color:#2aa198>&#34;true&#34;</span> name=<span 
style=color:#2aa198>&#34;dubbo&#34;</span> port=<s [...]
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:protocol</span> accesslog=<span 
style=color:#2aa198>&#34;true&#34;</span> name=<span 
style=color:#2aa198>&#34;rmi&#34;</span> port=<span 
style=color:#2aa198>&#34;1099&#34;</span> <span style=color:#268bd2>/&gt;</span>
+</span></span></code></pre></div><ol start=2><li>输出到文件</li></ol><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:protocol</span> accesslog=<span 
style=color:#2aa198>&#34;http://localhost/log.txt&#34;</span> name=<span 
style=color:#2aa198>&#34;dubbo&#34;</span> port=<span 
style=color:#2aa198>&#34;20880&#34;</spa [...]
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:protocol</span> accesslog=<span 
style=color:#2aa198>&#34;http://localhost/log2.txt&#34;</span> name=<span 
style=color:#2aa198>&#34;rmi&#34;</span> port=<span 
style=color:#2aa198>&#34;1099&#34;</span> <span style=color:#268bd2>/&gt;</span>
+</span></span></code></pre></div><style>.feedback--answer{display:inline-block}.feedback--answer-no{margin-left:1em}.feedback--response{display:none;margin-top:1em}.feedback--response__visible{display:block}</style><div
 class=d-print-none><h2 class=feedback--title>Feedback</h2><p 
class=feedback--question>Was this page helpful?</p><button class="btn 
btn-primary mb-4 feedback--answer feedback--answer-yes">Yes</button>
+<button class="btn btn-primary mb-4 feedback--answer 
feedback--answer-no">No</button><p class="feedback--response 
feedback--response-yes">Glad to hear it! Please <a 
href=https://github.com/apache/dubbo-website/issues/new>tell us how we can 
improve</a>.</p><p class="feedback--response feedback--response-no">Sorry to 
hear that. Please <a 
href=https://github.com/apache/dubbo-website/issues/new>tell us how we can 
improve</a>.</p></div><script>const yesButton=document.querySelector(".feedback 
[...]
 <script src=/js/bootstrap.min.js 
integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy
 crossorigin=anonymous></script>
 <script 
src=/js/main.min.67b5ab62cb078146d9ab8cea15d59ffc7645b89f33906c50ab421a4d5eca73e9.js
 integrity="sha256-Z7WrYssHgUbZq4zqFdWf/HZFuJ8zkGxQq0IaTV7Kc+k=" 
crossorigin=anonymous></script>
 <script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script>
diff --git a/zh/sitemap.xml b/zh/sitemap.xml
index ce3cf3aec4..d0d7dabbea 100644
--- a/zh/sitemap.xml
+++ b/zh/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml";><url><loc>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/faq/0/</loc><lastmod>2022-08-01T10:49:31+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link
 rel="alternate" hreflang="en" 
href="https://cn.dubbo.apache.org/en/docs3-v2/java-sdk/faq/0/"/><xhtml:link 
rel="alternate" hreflang="zh" href="https://c [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml";><url><loc>https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/faq/0/</loc><lastmod>2022-08-01T10:49:31+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link
 rel="alternate" hreflang="en" 
href="https://cn.dubbo.apache.org/en/docs3-v2/java-sdk/faq/0/"/><xhtml:link 
rel="alternate" hreflang="zh" href="https://c [...]
\ No newline at end of file

Reply via email to