Logging
NuttX provides the SYSLOG for application and OS logging, which can be configured in various ways to select how these messages are displayed (see details here).
Applications can emit logging messages using the standard syslog()
interface.
Note
The standard openlog()
and closelog()
are not currently supported.
-
void syslog(int priority, const char *fmt, ...)
This interface allows to send messages to SYSLOG using standard
printf()
formatting.Each message sent to SYSLOG is assigned a priority. Depending on system configuration this message may or not appear in the output.
- Parameters:
priority – A priority given by
LOG_*
family of definitions.fmt – The format string
-
void vsyslog(int priority, const char *fmt, va_list ap)
Performs the same task as
syslog()
with the difference that it takes a set of arguments which have been obtained using theinclude/stdarg.h
variable argument list macros.
-
int setlogmask(int mask)
Sets the logging mask which controls which messages appear on SYSLOG output.
setlogmask()
is not a thread-safe, re-entrant function. Concurrent use will have undefined behavior.- Parameters:
- Returns:
The previous mask.
Warning
Per POSIX the syslog mask should be a per-process value but in NuttX, the scope of the mask is dependent on the nature of the build:
Flat Build: There is one, global SYSLOG mask that controls all output.
Protected Build: There are two SYSLOG masks. One within the kernel that controls only kernel output. And one in user-space that controls only user SYSLOG output.
Kernel Build: The kernel build is compliant with the POSIX requirement: There will be one mask for each user process, controlling the SYSLOG output only form that process. There will be a separate mask accessible only in the kernel code to control kernel SYSLOG output.
Priority Levels
The following levels are defined:
Priority (macro) |
Description |
---|---|
|
System is unusable |
|
Action must be taken immediately |
|
Critical conditions |
|
Error conditions |
|
Warning conditions |
|
Normal, but significant, condition |
|
Informational message |
|
Debug-level message |
Priority mask
The following macros can be used with setlogmask()
:
-
LOG_MASK(p)
Returns the logmask corresponding priority
p
-
LOG_UPTO(p)
Returns the logmask of all SYSLOG priorities up to and including
p
.
-
LOG_ALL
Mask corresponding to all priorities enabled