3ff7927d2f
Use a private ANSI escape sequence to convey the priority of an internal syslog() message through to the syslog server. Signed-off-by: Michael Brown <mcb30@ipxe.org>
98 lines
1.9 KiB
C
98 lines
1.9 KiB
C
#ifndef _SYSLOG_H
|
|
#define _SYSLOG_H
|
|
|
|
/** @file
|
|
*
|
|
* System logger
|
|
*
|
|
*/
|
|
|
|
FILE_LICENCE ( GPL2_OR_LATER );
|
|
|
|
#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
|
|
|
|
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 */
|