Common logging across OSM components 66/166/4
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Tue, 14 Jun 2016 14:38:30 +0000 (16:38 +0200)
committerhoban <adrian.hoban@intel.com>
Tue, 28 Mar 2017 12:47:25 +0000 (13:47 +0100)
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
Release1/common_logging_across_OSM_components.md [new file with mode: 0644]

diff --git a/Release1/common_logging_across_OSM_components.md b/Release1/common_logging_across_OSM_components.md
new file mode 100644 (file)
index 0000000..35d392c
--- /dev/null
@@ -0,0 +1,53 @@
+# Common logging across OSM components #
+
+## Proposer ##
+- Gerardo García (Telefónica)
+- Alfonso Tierno (Telefónica)
+
+## Type ##
+**Feature**
+
+## Target MDG/TF ##
+UI, RO, SO
+
+## Description ##
+Format and log levels in all components must be uniform so that reading and debugging become easier
+for end user and developer. The following is suggested:
+
+- Each line should be prepended with date and time, in UTC or local time (to be decided).
+- Log level should be included and should be coherent across modules. Typical log levels, based on
+the description from [here](http://stackoverflow.com/questions/7839565/logging-levels-logback-rule-of-thumb-to-assign-log-levels "log levels"),
+are:
+    - **UNSET**: no logs will be shown.
+    - **ERROR**: the system is in distress, customers are probably being affected (or will soon be)
+    and the fix probably requires human intervention.
+    - **WARNING**: an unexpected technical or business event happened, customers may be affected,
+    but probably no immediate human intervention is required.
+    - **INFO**: things we want to see at high volume in case we need to forensically analyze an
+    issue. System lifecycle events (system start, stop) go here. "Session" lifecycle events (login,
+    logout, etc.) go here. Significant boundary events should be considered as well (e.g. database
+    calls, remote API calls).
+    - **DEBUG**: lowest level of detail, just about everything that doesn't make the "info" cut.
+- The module and function name should be included.
+
+The specific format is to be decided. A suggestion in Python language is the following:
+
+- datefmt="%Y-%m-%d %H:%M:%S"
+- format='%(asctime)s.%(msecs)d %(levelname)s %(module)s - %(funcName)s: %(message)s'
+
+
+## Demo or definition of done ##
+Best practices for the different programming languages used in OSM (e.g. Python) should be
+collected in a document or wiki page.
+
+A test must be also run to check that the format is appropriate. Any test is suitable, e.g.
+deployment of an NS instance, as long as it leads to ERROR and WARNING messages in all OSM
+components (UI, RO and SO). While a single test for all components is desired, another possibility
+is one test for each OSM component.
+
+The log level must be set to DEBUG in all OSM components before running the test.
+
+For each of the OSM components, the log file must be read and analyzed to find the first occurence
+for each of the error messages (ERROR, WARNING, INFO and DEBUG). For each of the log levels, there
+must be at least 1 occurrence, and the pattern must follow the agreed pattern.
+