Logging
dLeyna components allow information to be output using a logging mechanism. This service currently implements 2 output mechanisms and different ‘levels’ of importance for messages.
Logging types
dLeyna components can choose between traditional syslog or glib logging system.
The default logging type can be set at configuration time and changed dynamically at runtime.
When configuring the project, use the -Dlog_type
option to select your
desired default logging service:
-Dlog_type=syslog for syslog logging.
-Dlog_type=glib for glib logging.
The logging options of a dLeyna service can also be modified at runtime by modifying the service’s configuration file. Each dLeyna service has its own configuration file, for example dleyna-server-service.conf or dleyna-renderer-service.conf. These files are located in the default local configuration folder (usually in your home folder, /home/<user>/.config/).
Each configuration file has an option called log-type:
log-type=0: syslog service will be used.
log-type=1: glib system will be used.
dLeyna components monitor these configuration files. Any changes on it are applied immediately.
Logging level
The logging level selects which kind of messages in the code are going to be logged.
The logging level is set at configuration time and a subset of this initial configuration can be changed dynamically at run time.
dLeyna components define 6 levels of importance:
1: errors
2: critical messages
3: warnings
4: messages/notices
5: informational messages
6: debug messages
When configuring the project, use the -Dlog_level
option to select your
desired logging messages.
Allowed values for -Dlog-level
are:
0 = disabled
7 = default (=1,2,5)
8 = all (=1,2,3,4,5,6)
1,..,6 = a comma separated list of log level
For example, -Dlog_level=2,5,6
will log only critical, informational and debug
messages.
The service can also be changed at runtime by modifying the configuration file.
The service’s configuration file has an option called log-level.
The values for log-level are the same as for -Dlog_level
.
Be careful, logging messages not selected during the configuration of the
project, could not be enabled at runtime. These messages are stripped at
compilation time. You can only specify a sub selection of the one defined with
-Dlog_level
option.
Consider the following example:
-Dlog_level=2,5,6
At run time you can change log-level to
log-level=2: Only critical messages will be logged.
log-level=5,6: sub selection of
-Dlog_level
.log-level=8: enable all options define by
-Dlog_level
. Same as=2,5,6
log-level=0: disable logging
Caution
DOES NOT WORK: log-level=1,3
. It is not part of the -Dlog_level
option.
Macros
To log messages, use the predefined macros below:
DLEYNA_LOG_LEVEL_ERROR
DLEYNA_LOG_LEVEL_CRITICAL
DLEYNA_LOG_LEVEL_WARNING
DLEYNA_LOG_LEVEL_MESSAGE
DLEYNA_LOG_LEVEL_INFO
DLEYNA_LOG_LEVEL_DEBUG
DLEYNA_LOG_LEVEL_ERROR
should not be used in release code but only for debug
purpose.
When log-level=1
(error message) is used with log-type=1
(glib), a call to
the the logging function is always fatal, and results in a call to abort()
.
This is not acceptable in release.