| #ifndef _SYSLOG_H | |
| #define _SYSLOG_H | |
| /** @file | |
| * | |
| * System logger | |
| * | |
| */ | |
| FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | |
| FILE_SECBOOT ( PERMITTED ); | |
| #include <stdarg.h> | |
| #include <ipxe/ansiesc.h> | |
| #include <config/console.h> | |
| /** | |
| * @defgroup syslogpri Syslog priorities | |
| * | |
| * These values are chosen to match those used in the syslog network | |
| * protocol (RFC 5424). | |
| * | |
| * @{ | |
| */ | |
| /** Emergency: system is unusable */ | |
| #define LOG_EMERG 0 | |
| /** Alert: action must be taken immediately */ | |
| #define LOG_ALERT 1 | |
| /** Critical: critical conditions */ | |
| #define LOG_CRIT 2 | |
| /** Error: error conditions */ | |
| #define LOG_ERR 3 | |
| /** Warning: warning conditions */ | |
| #define LOG_WARNING 4 | |
| /** Notice: normal but significant conditions */ | |
| #define LOG_NOTICE 5 | |
| /** Informational: informational messages */ | |
| #define LOG_INFO 6 | |
| /** Debug: debug-level messages */ | |
| #define LOG_DEBUG 7 | |
| /** @} */ | |
| /** Do not log any messages */ | |
| #define LOG_NONE -1 | |
| /** Log all messages */ | |
| #define LOG_ALL LOG_DEBUG | |
| extern void log_vprintf ( const char *fmt, va_list args ); | |
| extern void __attribute__ (( format ( printf, 1, 2 ) )) | |
| log_printf ( const char *fmt, ... ); | |
| /** ANSI private escape sequence to set syslog priority | |
| * | |
| * @v priority Priority | |
| */ | |
| #define SYSLOG_SET_PRIORITY( priority ) \ | |
| "\033[" #priority "p" | |
| /** ANSI private escape sequence to clear syslog priority */ | |
| #define SYSLOG_CLEAR_PRIORITY "\033[p" | |
| /** | |
| * Write message to system log | |
| * | |
| * @v priority Message priority | |
| * @v fmt Format string | |
| * @v ... Arguments | |
| */ | |
| #define vsyslog( priority, fmt, args ) do { \ | |
| if ( (priority) <= LOG_LEVEL ) { \ | |
| log_vprintf ( SYSLOG_SET_PRIORITY ( priority ) fmt \ | |
| SYSLOG_CLEAR_PRIORITY, (args) ); \ | |
| } \ | |
| } while ( 0 ) | |
| /** | |
| * Write message to system log | |
| * | |
| * @v priority Message priority | |
| * @v fmt Format string | |
| * @v ... Arguments | |
| */ | |
| #define syslog( priority, fmt, ... ) do { \ | |
| if ( (priority) <= LOG_LEVEL ) { \ | |
| log_printf ( SYSLOG_SET_PRIORITY ( priority ) fmt \ | |
| SYSLOG_CLEAR_PRIORITY, ##__VA_ARGS__ ); \ | |
| } \ | |
| } while ( 0 ) | |
| #endif /* _SYSLOG_H */ |