Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Logging technology
  • Logging implementation
  • Notification Channel
  • Central Logger
  • Notification Channel
  • *ACS Log Service

* The ACS Log Service is only used by the Python logging implementation, but it could be used by any ACS / CORBA application.

...

The logging implementation is the programming language specific code to integrate one or more of the logging technologies into ACS. The code for each of the programming languages is in different modules:

  • Python: ACS/LGPL/CommonSoftware/acspycommon
  • Java: ACS/LGPL/CommonSoftware/acsjlog
  • C++: ACS/LGPL/CommonSoftware/logging

Python

The Python logging implementation is based in the standard Python 'logging' module. Some conventions are introduced to standardize log levels among the implementations as well as other convenient functionalities. The logging.Logger class is specialized for ACS by defining a local and a remote handler.

The local handler just formats the logs in a convenient way to stdout, while the central handler takes advantage of the ACS Log Service to distribute the logs to any interested client.

Java

C++

The C++ logging implementation is based in the ACE Logging framework which imposes several restrictions and complications for the implementation. The design for the logging system is similar to log4j, python logging, etc. which is convenient and familiar, offering different handlers for stdout, file, central logger, etc.

As opposed to Java and Python, in C++ it was decided that the logger reference would not be handled by developers, but instead there are macros that can be called from any place and those macros have the responsibility of obtaining an appropriate logger instance for performing the log calls.

Notification Channel

The Notification Channel is a CORBA service for decoupled messaging through events. We're currently using the implementation provided by ACE/TAO through the Notify Service. For more details please look at the Notification Channel technical document.

Central Logger

The Central Logger is a CORBA-based service that is used to receive a set of logs and redistribute it to interested parties in a decoupled way through the Notification Channel.

This service is implemented in C++ and is part of the ACS/LGPL/CommonSoftware/logging module.

ACS Log Service

The ACS Log Service is a simple CORBA service that receives log requests to be propagated to the Central Logger. It takes advantage of the C++ logging implementation and simply calls the existing C++ macros that will call the Central Logger service methods.

This service is implemented in C++ and is part of the ACS/LGPL/CommonSoftware/acslog module.

Design and Implementation

Children Display