diff --git a/logging.c b/logging.c index 33667c25..2d638745 100644 --- a/logging.c +++ b/logging.c @@ -111,3 +111,23 @@ void _applog(int prio, const char *str, bool force) my_log_curses(prio, datetime, str, force); } } + +void _simplelog(int prio, const char *str, bool force) +{ +#ifdef HAVE_SYSLOG_H + if (use_syslog) { + syslog(prio, "%s", str); + } +#else + if (0) {} +#endif + else { + /* Only output to stderr if it's not going to the screen as well */ + if (!isatty(fileno((FILE *)stderr))) { + fprintf(stderr, "%s\n", str); /* atomic write to stderr */ + fflush(stderr); + } + + my_log_curses(prio, "", str, force); + } +} diff --git a/logging.h b/logging.h index 2ca2c5f5..b54e0fd1 100644 --- a/logging.h +++ b/logging.h @@ -31,6 +31,7 @@ extern int opt_log_show_date; #define LOGBUFSIZ 256 extern void _applog(int prio, const char *str, bool force); +extern void _simplelog(int prio, const char *str, bool force); #define IN_FMT_FFL " in %s %s():%d" @@ -44,6 +45,16 @@ extern void _applog(int prio, const char *str, bool force); } \ } while (0) +#define simplelog(prio, fmt, ...) do { \ + if (opt_debug || prio != LOG_DEBUG) { \ + if (use_syslog || opt_log_output || prio <= opt_log_level) { \ + char tmp42[LOGBUFSIZ]; \ + snprintf(tmp42, sizeof(tmp42), fmt, ##__VA_ARGS__); \ + _simplelog(prio, tmp42, false); \ + } \ + } \ +} while (0) + #define applogsiz(prio, _SIZ, fmt, ...) do { \ if (opt_debug || prio != LOG_DEBUG) { \ if (use_syslog || opt_log_output || prio <= opt_log_level) { \