You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/07/17 02:24:39 UTC

[james-project] 25/31: JAMES-3302 Document logging for the Distributed Server

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

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit e8937d93a002f3e21ca07e58a616f4734e338999
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jul 10 13:38:11 2020 +0700

    JAMES-3302 Document logging for the Distributed Server
---
 docs/modules/servers/nav.adoc                      |   1 +
 .../servers/pages/distributed/operate/index.adoc   |  10 +-
 .../servers/pages/distributed/operate/logging.adoc | 108 +++++++++++++++++++++
 3 files changed, 115 insertions(+), 4 deletions(-)

diff --git a/docs/modules/servers/nav.adoc b/docs/modules/servers/nav.adoc
index ffd4c6e..78e7f7b 100644
--- a/docs/modules/servers/nav.adoc
+++ b/docs/modules/servers/nav.adoc
@@ -11,6 +11,7 @@
 *** xref:distributed/configure/index.adoc[]
 *** xref:distributed/operate/index.adoc[]
 **** xref:distributed/operate/guide.adoc[]
+**** xref:distributed/operate/logging.adoc[]
 **** xref:distributed/operate/webadmin.adoc[]
 **** xref:distributed/operate/metrics.adoc[]
 **** xref:distributed/operate/cli.adoc[]
diff --git a/docs/modules/servers/pages/distributed/operate/index.adoc b/docs/modules/servers/pages/distributed/operate/index.adoc
index 4c62a69..8b20adb 100644
--- a/docs/modules/servers/pages/distributed/operate/index.adoc
+++ b/docs/modules/servers/pages/distributed/operate/index.adoc
@@ -6,15 +6,17 @@ Once you have a Distributed James server up and running you then need to ensure
 You may also need to perform some operation maintenance or recover from incidents. This section covers
 these topics.
 
-The xref:main:servers:distributed:operate:webadmin.adoc[WebAdmin Restfull administration API] is the
+Read more about link:logging.adoc[Logging].
+
+The link:webadmin.adoc[WebAdmin Restfull administration API] is the
 recommended way to operate the Distributed James server. It allows managing and interacting with most
 server components.
 
-The xref:main:servers:distributed:operate:cli.adoc[Command line interface] allows to interact with some
+The link:cli.adoc[Command line interface] allows to interact with some
 server components. However it relies on JMX technologies and its use is discouraged.
 
-The xref:main:servers:distributed:operate:metrics.adoc[metrics] allows to build latency and throughput
+The link:metrics.adoc[metrics] allows to build latency and throughput
 graphs, that can be visualized, for instance in *Grafana*.
 
-Finally, we did put together a xref:main:servers:distributed:operate:metrics.adoc[detailed guide] for
+Finally, we did put together a link:metrics.adoc[detailed guide] for
 distributed James operators.
diff --git a/docs/modules/servers/pages/distributed/operate/logging.adoc b/docs/modules/servers/pages/distributed/operate/logging.adoc
new file mode 100644
index 0000000..e092b8f
--- /dev/null
+++ b/docs/modules/servers/pages/distributed/operate/logging.adoc
@@ -0,0 +1,108 @@
+= Logging
+
+We recommend to closely monitoring *ERROR* and *WARNING* logs. Those
+logs should be considered not normal.
+
+If you encounter some suspicious logs:
+
+* If you have any doubt about the log being caused by a bug in James
+source code, please reach us via the bug tracker, the user mailing list or our Gitter channel (see our
+http://james.apache.org/#second[community page])
+* They can be due to insufficient performance from tier applications (eg
+Cassandra timeouts). In such case we advise you to conduct a close
+review of performances at the tier level.
+
+Leveraging filters in Kibana discover view can help filtering out
+``already known'' frequently occurring logs.
+
+When reporting ERROR or WARNING logs, consider adding the full logs, and
+related data (eg the raw content of a mail triggering an issue) to the
+bug report in order to ease resolution.
+
+== Logging configuration
+
+Distributed James uses link:http://logback.qos.ch/[logback] as a logging library.
+
+Information about logback configuration can be found
+link:http://logback.qos.ch/manual/configuration.html[here].
+
+== Structured logging
+
+Distributed Server leverage the use of MDC in order to achieve structured logging,
+and better add context to the logged information. We furthermore ship
+link:https://github.com/linagora/logback-elasticsearch-appender[Logback Elasticsearch Appender]
+on the classpath to easily allow direct log indexation in
+link:https://www.elastic.co/elasticsearch[ElasticSearch].
+
+Here is a sample `conf/logback.xml` configuration file for logback with the following
+pre-requisites:
+
+* Logging both in an unstructured fashion on the console and in a structure fashion in
+ElasticSearch
+* Logging ElasticSearch Log appender logs in the console
+
+....
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="30 seconds">
+
+        <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+                <resetJUL>true</resetJUL>
+        </contextListener>
+
+        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+                <encoder>
+                        <pattern>%d{yyyy.MM.dd HH:mm:ss.SSS} %highlight([%-5level]) %logger{15} - %msg%n%rEx</pattern>
+                        <immediateFlush>false</immediateFlush>
+                </encoder>
+        </appender>
+
+        <appender name="ELASTIC" class="com.linagora.logback.elasticsearch.ElasticsearchAppender">
+            <url>http://elasticsearch:9200/_bulk</url>
+            <index>logs-james-%date{yyyy.MM.dd}</index>
+            <type>tester</type>
+            <includeMdc>true</includeMdc>
+            <excludedMdcKeys>host</excludedMdcKeys>
+            <errorLoggerName>es-error-logger</errorLoggerName>
+            <properties>
+                <property>
+                    <name>host</name>
+                    <value>${HOSTNAME}</value>
+                    <allowEmpty>false</allowEmpty>
+                </property>
+                <property>
+                    <name>severity</name>
+                    <value>%level</value>
+                </property>
+                <property>
+                    <name>thread</name>
+                    <value>%thread</value>
+                </property>
+                <property>
+                    <name>stacktrace</name>
+                    <value>%ex</value>
+                </property>
+                <property>
+                    <name>logger</name>
+                    <value>%logger</value>
+                </property>
+            </properties>
+            <headers>
+                <header>
+                    <name>Content-Type</name>
+                    <value>application/json</value>
+                </header>
+            </headers>
+        </appender>
+
+        <root level="WARN">
+                <appender-ref ref="ELASTIC" />
+        </root>
+
+        <logger name="es-error-logger" level="DEBUG" additivity="false">
+            <appender-ref ref="CONSOLE" />
+        </logger>
+
+        <logger name="org.apache.james" level="INFO" />
+
+</configuration>
+....


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org