c0426ff10b
Currently logmsg() is only available as a variadic function. This is fine for normal use, but is awkward if we ever want to write wrappers around it which (for example) add standardised prefix information. To allow that, add a vlogmsg() function which takes a va_list instead, and implement logmsg() in terms of it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright (c) 2022 Red Hat GmbH
|
|
* Author: Stefano Brivio <sbrivio@redhat.com>
|
|
*/
|
|
|
|
#ifndef LOG_H
|
|
#define LOG_H
|
|
|
|
#include <syslog.h>
|
|
|
|
#define LOGFILE_SIZE_DEFAULT (1024 * 1024UL)
|
|
#define LOGFILE_CUT_RATIO 30 /* When full, cut ~30% size */
|
|
#define LOGFILE_SIZE_MIN (5UL * MAX(BUFSIZ, PAGE_SIZE))
|
|
|
|
void vlogmsg(int pri, const char *format, va_list ap);
|
|
void logmsg(int pri, const char *format, ...)
|
|
__attribute__((format(printf, 2, 3)));
|
|
|
|
#define err(...) logmsg(LOG_ERR, __VA_ARGS__)
|
|
#define warn(...) logmsg(LOG_WARNING, __VA_ARGS__)
|
|
#define info(...) logmsg(LOG_INFO, __VA_ARGS__)
|
|
#define debug(...) logmsg(LOG_DEBUG, __VA_ARGS__)
|
|
|
|
#define die(...) \
|
|
do { \
|
|
err(__VA_ARGS__); \
|
|
exit(EXIT_FAILURE); \
|
|
} while (0)
|
|
|
|
extern int log_trace;
|
|
extern int log_to_stdout;
|
|
void trace_init(int enable);
|
|
#define trace(...) \
|
|
do { \
|
|
if (log_trace) \
|
|
debug(__VA_ARGS__); \
|
|
} while (0)
|
|
|
|
void __openlog(const char *ident, int option, int facility);
|
|
void logfile_init(const char *name, const char *path, size_t size);
|
|
void passt_vsyslog(int pri, const char *format, va_list ap);
|
|
void logfile_write(int pri, const char *format, va_list ap);
|
|
void __setlogmask(int mask);
|
|
|
|
#endif /* LOG_H */
|