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