#ifndef _SYSLOG_H #define _SYSLOG_H /** @file * * System logger * */ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include #include /** * @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 */