Ctrllogger is used for logging messages in Ctrl, the logs will be available in the user's home directory as "ctrl.log".

CrtlLogger is a singleton class which extends the python logging module, a standard library module which provides a set of functions for simple logging usage.

The logging module provides functions that are named after the level or severity of the events they are used to track.

LEVEL When it's used
DEBUG Detailed information, typically of interest only when diagnosing problems.
INFO Confirmation that things are working as expected.
WARNING An indication that something unexpected happened, or indicative of some problem in the near future. The software is still working as expected.
ERROR Due to a more serious problem, the software has not been able to perform some function.
CRITICAL A serious error, indicating that the program itself may be unable to continue running.

CtrlLogger includes a new function named journal that will log detailed information of the start of a command execution as a result of the same.

journal(command:Command, result:CommandResult=None)

command: The command object has important information as the command name, the target device and the arguments. result: The command result has the return code and the message after a command execution.

Using the CtrlLogger.

To instance a logger use the CtrlLogger function get_ctrl_logger(). As CtrlLogger is following a Singleton pattern, multiple calls to get_ctrl_logger() will always return a reference to the same Logger object named "ctrl".

Simple example

Simple message to log

from control.ctrl_logger.ctrl_logger import get_ctrl_logger
logger  = get_ctrl_logger()
logger.warning('This is a simple warning message')

and will display: 2016-12-15 16:53:40,479 WARNING ctrl : This is a simple warning message

Log variable data

To log variable data, use the format string for the message and append the variable data as arguments:

from control.ctrl_logger.ctrl_logger import get_ctrl_logger
logger  = get_ctrl_logger()
logger.error('Device %s failed', 'node03')

will display: 2016-12-15 16:53:40,479 ERROR ctrl : Device node03 failed.

Log multiple messages

If you want to log multiple messages you can do it by sending a list of messages. Journal doesn't support multiple messages and variable data is not supported for multiple messages.

from control.ctrl_logger.ctrl_logger import get_ctrl_logger
logger  = get_ctrl_logger()
messages = ['With CtrlLogger', 'you can send', 'multiple messages']

will display each item as a different message:

2016-12-16 11:51:45,400 INFO     ctrl  : With CtrlLogger
2016-12-16 11:51:45,400 INFO     ctrl  : you can send
2016-12-16 11:51:45,400 INFO     ctrl  : multiple messages