RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
Table of Contents |
---|
RDK Logger is a common logging library which is based on MPEOS logging & it uses log4c for formatting and supports multiple log levels
Provides common logging capability for all RDK components.
All RDK Components
All
Add link to SVN or published/generated documentation
Hong Li
Current Version - none
Change History - none
Known issues - none
By default, stdout is redirected to /opt/logs/ocapri_log.txt for OCAP RI related logs.
draw.io Diagram | ||||
---|---|---|---|---|
|
Code | Description |
---|---|
RDK_LOG_FATAL | Any error that is forcing a shutdown of the service or application to prevent data loss (or further data loss), reserve these only for the most heinous errors and situations where there is guaranteed to have been data corruption or loss. |
RDK_LOG_ERROR | Any error which is fatal to the operation but not the service (cant open a file, missing data, etc) |
RDK_LOG_WARN | Anything that can potentially cause application oddities, but for which the application automatically recovering. |
RDK_LOG_NOTICE | Anything that largely superfluous for application-level logging. |
RDK_LOG_INFO | Generally useful information to log (service start/stop, configuration assumptions, etc). |
RDK_LOG_DEBUG | Information that is diagnostically helpful to people more than just developers. |
RDK_LOG_TRACE1, RDK_LOG_TRACE2,... | Only when it would be "tracing" the code and trying to find one part of a function specifically. |
...
Default level of logging is ERROR. But Logging settings are configured in debug.ini
LOG.RDK.<component1> = FATAL ERROR WARNING NOTICE INFO
LOG.RDK.<component2> = FATAL ERROR WARNING NOTICE INFO DEBUG
Use RDK_LOG debug message as.
Include rdk_debug.h header file and make use of RDK_LOG for printing logs. Initialize RDK Logger by calling rdk_logger_init() in the respective module/component. Build new module/component by linking "librdkloggers.so" along with "liblog4c.so" and "libglib-2.0.so" shared object.
Example: -lrdkloggers -L ../opensource/lib -llog4c -lglib-2.0
RDK_LOG (rdk_LogLevel level, const char *module, const char *format,...) Here,
All the RDK components logs are stored under /opt/log/ with a naming convention <RDK component>="">_log.txt.
For example, /opt/log/pod_log.txt includes all events logged by POD Manager module.
Sample code for Logging
For example, add a Example:
The debug messages for "INBSI" module
RDK_LOG (RDK_LOG_NOTICE, "LOG.RDK.INBSI","<%s: %s>: Sending PMT_ACQUIRED event\n", PSIMODULE, __FUNCTION__);
Here,
User needs to provide the module name "LOG.RDK.INBSI" , which is the same as mentioned in debug.ini
$ cat debug.ini
EnableMPELog = TRUE
LOG.RDK.INBSI = ALL FATAL ERROR WARNING NOTICE INFO DEBUG
...
131011-21:21:49.578394 [mod=INBSI, lvl=NOTICE] [tid=4141] <SITP_PSI: NotifyTableChanged>: Sending PMT_ACQUIRED event
This In this way, user make use of the RDK logger in the respective modules and control the logging levels through configuration file.
Here, No need to build rdklogger RDK logger again for the addition of new components/module.
Note:
Now, "mediaframework/qamsource/debug.ini" is no more in use, instead "rdklogger/debug.ini" is used and it gets copied to "/mnt/nfs/env"
Example:
-lrdkloggers -L ../opensource/lib -llog4c -lglib-2.0
...
A callback function gst_debug_add_log_function()
...
is registered to receive GStreamer logs. Logs are converted to RDK logs in callback function.
...
RMF element which controls a gst-element shall register element name and corresponding log module using
void RMF_registerGstElementDbgModule(char *gst_module, char *rmf_module)
Callback function uses this information to get module names corresponding to gstreamer logs.
Default level for RDK logging is ERROR and logging settings are configured in /etc/debug.ini. RDK components reads the configuration details from config file at the beginning.
LOG.RDK.<component1> = FATAL ERROR WARNING NOTICE INFO
LOG.RDK.<component2> = FATAL ERROR WARNING NOTICE INFO DEBUG
For Example:
LOG.RDK.UI = NONE
LOG.RDK.QAMSRC = ALL FATAL ERROR
LOG.RDK.VODSRC = ALL FATAL ERROR WARNING NOTICE INFO
LOG.RDK.MS = ALL FATAL ERROR WARNING INFO
LOG.RDK.GSTQAM = ALL FATAL ERROR WARNING INFO
LOG.RDK.IPPV = ALL FATAL ERROR WARNING NOTICE INFO
LOG.RDK.RMFBASE = FATAL ERROR WARNING INFO
LOG.RDK.TRM = ALL FATAL ERROR WARNING NOTICE INFO
By default, stdout is redirected to /opt/logs/ocapri_log.txt for OCAP RI related logs.
Logs are uploaded to servers in following scenarios
the script uploadSTBLogs.sh is responsible for uploading the logs to the server. Logs are uploaded as tar files with sufficient information like Mac ID, date , timestamp. Log can be uploaded to server using scp or tftp protocol as per server requirement.
draw.io Diagram | ||||
---|---|---|---|---|
|
To know more about SoC/Application level APIs details use in RDK, refer the link RDK LOGGER API Documentation