Onappylog library improvement
[multicloud/framework.git] / docs / specs / logging_enablement.rst
index 5fb639e..1ec3df7 100644 (file)
@@ -6,8 +6,10 @@
 Multi-Vim logging
 =================
 
-The purpose of logging is to generate machine-readable, indexable output logs and support to trace
-requests through sub-component, it need to ship logs to logging enhancement project a centralized
+The purpose of logging is to generate machine-readable, indexable output logs
+and support to trace
+requests through sub-component, it need to ship logs to logging enhancement
+project a centralized
 logging analysis system capturing diagnostic information.
 
 
@@ -15,13 +17,17 @@ logging analysis system capturing diagnostic information.
 Problem Description
 ===================
 
-So far the logging of multi-vim is not able to support customer configuration, handler context specific logging like
-MDC[MDC_Document]_, also it dose't propagate transaction-ID in REST headers which is critical to tracing request.
-There are 4 python containers in oom project need to configure filebeat container for shipping logs.
+So far the logging of multi-vim is not able to support customer configuration,
+handler context specific logging like
+MDC[MDC_Document]_, also it dose't propagate transaction-ID in REST headers
+which is critical to tracing request.
+There are 4 python containers in oom project need to configure filebeat
+container for shipping logs.
 
 .. [MDC_Document] https://wiki.onap.org/display/DW/ONAP+Application+Logging+Guidelines+v1.1#ONAPApplicationLoggingGuidelinesv1.1-MDCs
 
-In addition the current logging is very difficult to understand behavior and performance.
+In addition the current logging is very difficult to understand behavior
+and performance.
 
 
 Proposed Change
@@ -32,8 +38,10 @@ The proposed change will include three parts.
 Filebeat container
 ------------------
 
-Logging architecture[Log_Architecture]_ use Filebeat collects logs from multi-vim containers and ships them to the
-centralized logging stack. To enable this feature it need to add Filebeat container in multi-vim pod that was
+Logging architecture[Log_Architecture]_ use Filebeat collects logs from
+multi-vim containers and ships them to the
+centralized logging stack. To enable this feature it need to add Filebeat
+container in multi-vim pod that was
 deployed by OOM, as well Yaml file will be used to configure Filebeat.
 
 .. [Log_Architecture] https://wiki.onap.org/display/DW/Logging+Architecture
@@ -41,12 +49,15 @@ deployed by OOM, as well Yaml file will be used to configure Filebeat.
 Tracing ID
 ----------
 
-ONAP logging uses a global unique "RequestID"[RequestID_Document]_ in logging to track the processing of each request
-across all the components, multi-vim will receive this id from http header by vary "X-TransactionID", then record it
-in logs.
-Meanwhile single component should generate a InvocationID that records the relationship between RequestID
-and InvocationID for proper tracing. So Mulit-vim will set unique InvocationID for each single request,also output it
+ONAP logging uses a global unique "RequestID"[RequestID_Document]_ in logging
+to track the processing of each request
+across all the components, multi-vim will receive this id from http header
+by vary "X-TransactionID", then record it
 in logs.
+Meanwhile single component should generate a InvocationID that records the
+relationship between RequestID
+and InvocationID for proper tracing. So Mulit-vim will set unique InvocationID
+for each single request,also output it in logs.
 
 .. [RequestID_Document] https://wiki.onap.org/pages/viewpage.action?pageId=20087036#ONAPApplicationLoggingGuidelinesv1.2(Beijing)-MDC-RequestID
 
@@ -54,30 +65,62 @@ in logs.
 python AOP logging library
 --------------------------
 
-Currently logging enhancement project just has java AOP logging library, For multi-vim which based on python need
-a python version. The basic feature of AOP logging library could provide customer configuration include retention
-policy、output location、text output format、message level and so on, support MDC context specific logging, able to
+Currently logging enhancement project just has java AOP logging library, For
+multi-vim which based on python need
+a python version. The basic feature of AOP logging library could provide
+customer configuration include retention
+policy、output location、text output format、message level and so on, support
+MDC context specific logging, able to
 change configuration at runtime, and make logging quite fast.
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+Supporting Python3 version
+-------------------------
+Right now, this library only has be used in Python2 version. Python2 will not been
+maintained after 2020, besides part of ONAP project have used python3 version.
+It's be better to support Python2 and Python3 version
+
+
+Markers
+-------
+Markers can be used to characterize log entries. They allow message that has
+a specific meaning to be cheaply and easily identified in logger output, without
+inherently unreliable schemes like scanning for magic strings in the text of each
+log message.
+Onap logging requires the emission of markers reporting entry, exit and invocation
+as the execution if requests pass between ONAP components. This information is used
+to generate a call graph.
+Useful and commonplace, See https://stackoverflow.com/questions/4165558/best-practices-for-using-markers-in-slf4j-logback
+
+
+colored terminal output
+-----------------------
+As we known, in log4j coloring is supported. It would be better to render logging messages in colors.
+Bash colors refer: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
+
+The standard colors(nosupport windows) list as below:
++---------------------+-------------------------+------------------------+
+| **Text color**      | **Hightlight color**    |  **Text Attribute**    |
++=====================+==================================================+
+|  Black              |   Black                 |   Normal               |
++---------------------+--------------------------------------------------+
+|  Red                |   Red                   |   Bold                 |
++---------------------+--------------------------------------------------+
+|  Green              |   Green                 |   Underline            |
++---------------------+--------------------------------------------------+
+|  Yellow             |   Yellow                |   Blink                |
++------------------------------------------------------------------------+
+|  Blue               |   Blue                  |   Invert               |
++------------------------------------------------------------------------+
+|  Purple             |   Purple                |   Hide                 |
++------------------------------------------------------------------------+
+|  Cyan               |   Cyan                  |                        |
++------------------------------------------------------------------------+
+|  White              |   White                 |                        |
++------------------------------------------------------------------------+
+
+
+Test
+====
+
+#. Unit tests with tox
+#. CSIT tests, verify marker label in logging message