Difference between revisions of "TCB:Logging Working Group"
Line 77: | Line 77: | ||
Logging frameworks define different log level granularity, and at times even mixing the scope (or domain). For example: | Logging frameworks define different log level granularity, and at times even mixing the scope (or domain). For example: | ||
==== | ===== Oracle Java6 ===== | ||
[http://docs.oracle.com/javase/6/docs/ Oracle Java 6] contains a default logging system for Java since the inception of Java 4. Since the logging subsystem is located in the java.lang namespace, it MUST be implemented in any compliant Java VM (OpenJDK, etc.) as well, and therefore is ubiquitously available on all Java platforms. | |||
Number of levels: | Number of levels: 7 (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST) [http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html] | ||
* | ===== Apache Log4* / Apache Commons ===== | ||
Apache Log4* used to be a separate Logging module (for Java), but has recently replaced the [http://commons.apache.org/logging/ Apache Commons] implementation for Java logging. Apache Log4* is available with a multitude of language bindings, e.g. C, C++, Java. It defines logging levels (in order of descending order) as follows: | |||
Number of levels: 6 (FATAL, ERROR, WARN, INFO, DEBUG, TRACE) [http://commons.apache.org/logging/apidocs/org/apache/commons/logging/Log.html] | |||
===== Python 2.7.2 ===== | |||
[http://docs.python.org Python 2.7.2], just as Java, provides a default platform-wide [http://docs.python.org/library/logging.html logging subsystem] and therefore will be available anywhere where Python is available. | |||
Number of levels: 5 (CRITICAL, ERROR, WARNING, INFO, DEBUG) [http://docs.python.org/howto/logging.html#logging-basic-tutorial] | |||
===== Ruby 1.9.3 ===== | |||
[http://www.ruby-doc.org/stdlib-1.9.3/ Ruby 1.9.3] also provides a [http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html standard library] for logging in Ruby, therefore available on all platforms where Ruby will be provided for. | |||
Number of levels: 5 (CRITICAL, ERROR, WARNING, INFO, DEBUG) [http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html] | |||
===== GNOME glibc 2.30.2 ===== | |||
Loggers are available for C and C++. Apart from multi-language binding loggers (e.g. [[TCB:Logging_Working_Group#Apache_Log4.2A_.2F_Apache_Commons|Apache Commons]]) the very popular [http://developer.gnome.org/glib/stable GNOME glibc]] provides a widely available logging subsystem. | |||
Number of levels: 5 (CRITICAL, ERROR, WARNING, MESSAGE, DEBUG) [http://developer.gnome.org/glib/stable/glib-Message-Logging.html] | |||
=== Logging level mapping === | === Logging level mapping === | ||
Line 130: | Line 118: | ||
! Ruby 1.9.1 | ! Ruby 1.9.1 | ||
! PERL/Log4perl | ! PERL/Log4perl | ||
! glibc 2.30.2 | |||
|- style="text-align:center;" | |- style="text-align:center;" | ||
| 1 | | 1 | ||
Line 138: | Line 127: | ||
| FATAL | | FATAL | ||
| FATAL | | FATAL | ||
| CRITICAL | |||
|- style="text-align:center;" | |- style="text-align:center;" | ||
| 2 | | 2 | ||
Line 143: | Line 133: | ||
| ERROR | | ERROR | ||
| - | | - | ||
| ERROR | |||
| ERROR | | ERROR | ||
| ERROR | | ERROR | ||
Line 154: | Line 145: | ||
| WARN | | WARN | ||
| WARN | | WARN | ||
| WARNING | |||
|- style="text-align:center;" | |- style="text-align:center;" | ||
| 4 | | 4 | ||
Line 162: | Line 154: | ||
| INFO | | INFO | ||
| INFO | | INFO | ||
| MESSAGE | |||
|- style="text-align:center;" | |- style="text-align:center;" | ||
| 5 | | 5 | ||
Line 167: | Line 160: | ||
| - | | - | ||
| CONFIG | | CONFIG | ||
| - | |||
| - | | - | ||
| - | | - | ||
Line 175: | Line 169: | ||
| DEBUG | | DEBUG | ||
| FINE | | FINE | ||
| DEBUG | |||
| DEBUG | | DEBUG | ||
| DEBUG | | DEBUG | ||
Line 186: | Line 181: | ||
| - | | - | ||
| TRACE | | TRACE | ||
| - | |||
|- style="text-align:center;" | |- style="text-align:center;" | ||
| 8 | | 8 | ||
Line 191: | Line 187: | ||
| - | | - | ||
| FINEST | | FINEST | ||
| - | |||
| - | | - | ||
| - | | - |
Revision as of 18:38, 30 January 2012
WG Charter
With the [TCB-9 Face to Face] meeting the TCB members agreed to set up a Working Group to address short-term and long-term issues related to logging infrastructure and log messages across Technology Providers.
The WG shall have a lifetime of 6 months and regularly report progress to the TCB through written reports and presentations at TCB meetings.
Representatives shall be sourced from EGI operations and Technology Providers currently contributing software deployed (or planned to be deployed) onto the EGI produciton infrastructure.
Representatives
Role | Name | Affiliation |
---|---|---|
WG coordinator | Michel Drescher | Technical Manager, EGI.eu |
EGI Operations representative | ||
EGI SPG representative | ||
Technology Provider | EMI (European Middleware Initiative) | |
Technology Provider / Platform integrator | IGE (Initiative for Globus in Europe) | |
Technology Provider | SAGA (Simple API for Grid Applications) | |
Technology Provider | StratusLab |
Roadmap
WG duration: 6 months
Rough timeline:
Short term
- Define taxonomies
Medium/long term
- Config file harmonisation
- Default configuration (EGI Ops/Security policy)
- Common service configuration interface
- Fabric management integration
Logging taxonomy
Logging levels
Logging levels indicate the severity of the logged incident. As the name indicates logging levels are implicitly ordered, in a filtering, or threshold model.
Logging levels are used in two components of a logging framework:
- When a log message is assembled in software code and sent at a defined level to the logging framework
- In a logging related configuration that controls the actual behaviour of the logging framework
When a specific logging level is configured for a given logging domain, then all messages of that level and of all higher levels are realised (e.g. printed to the console, a log file, etc.)
Available frameworks
Logging frameworks define different log level granularity, and at times even mixing the scope (or domain). For example:
Oracle Java6
Oracle Java 6 contains a default logging system for Java since the inception of Java 4. Since the logging subsystem is located in the java.lang namespace, it MUST be implemented in any compliant Java VM (OpenJDK, etc.) as well, and therefore is ubiquitously available on all Java platforms.
Number of levels: 7 (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST) [1]
Apache Log4* / Apache Commons
Apache Log4* used to be a separate Logging module (for Java), but has recently replaced the Apache Commons implementation for Java logging. Apache Log4* is available with a multitude of language bindings, e.g. C, C++, Java. It defines logging levels (in order of descending order) as follows:
Number of levels: 6 (FATAL, ERROR, WARN, INFO, DEBUG, TRACE) [2]
Python 2.7.2
Python 2.7.2, just as Java, provides a default platform-wide logging subsystem and therefore will be available anywhere where Python is available.
Number of levels: 5 (CRITICAL, ERROR, WARNING, INFO, DEBUG) [3]
Ruby 1.9.3
Ruby 1.9.3 also provides a standard library for logging in Ruby, therefore available on all platforms where Ruby will be provided for.
Number of levels: 5 (CRITICAL, ERROR, WARNING, INFO, DEBUG) [4]
GNOME glibc 2.30.2
Loggers are available for C and C++. Apart from multi-language binding loggers (e.g. Apache Commons) the very popular GNOME glibc] provides a widely available logging subsystem.
Number of levels: 5 (CRITICAL, ERROR, WARNING, MESSAGE, DEBUG) [5]
Logging level mapping
Relative order | EGEE JRA1 | Apache Log4* | Oracle Java 6 | Python 2.7.2 | Ruby 1.9.1 | PERL/Log4perl | glibc 2.30.2 |
---|---|---|---|---|---|---|---|
1 | FATAL | FATAL | SEVERE | CRITICAL | FATAL | FATAL | CRITICAL |
2 | ERROR | ERROR | - | ERROR | ERROR | ERROR | ERROR |
3 | WARN | WARN | WARN | WARNING | WARN | WARN | WARNING |
4 | INFO | INFO | INFO | INFO | INFO | INFO | MESSAGE |
5 | - | - | CONFIG | - | - | - | - |
6 | DEBUG | DEBUG | FINE | DEBUG | DEBUG | DEBUG | DEBUG |
7 | - | TRACE | FINER | - | - | TRACE | - |
8 | - | - | FINEST | - | - | - | - |
Logging domains
A suggestion of logging domains
- Security
(where is the distinction to service access?) - Service access
- Service management