diff --git a/src/nvt_log.c b/src/nvt_log.c index 9f5d046..dee4247 100644 --- a/src/nvt_log.c +++ b/src/nvt_log.c @@ -14,7 +14,30 @@ #define gettid() (pid_t)syscall(__NR_gettid) char log_level = 0; -char log_stdout = 0; + +static FILE *log_dest = NULL; + +void nvt_log_dest(int dest) +{ + switch (dest) + { + default: + case NVT_LOG_SYSLOG: + log_dest = NULL; + break; + case NVT_LOG_STDOUT: + log_dest = stdout; + break; + case NVT_LOG_STDERR: + log_dest = stderr; + break; + } +} + +void nvt_log_level(int level) +{ + log_level = level; +} static const char *_hms_txt(char *buf, unsigned int len) { @@ -43,11 +66,11 @@ void nvt_log(int prio, const char *fmt, ...) va_start(arg, fmt); len = vsnprintf(buf, sizeof(buf), fmt, arg); - if (log_stdout) + if (log_dest) { eol = (len > 0 && buf[len - 1] != '\n') ? "\n" : ""; - printf("%s: [%d] %d: %s%s", - _hms_txt(buft, sizeof(buft)), gettid(), prio, buf, eol); + fprintf(log_dest, "%s: [%d] %d: %s%s", + _hms_txt(buft, sizeof(buft)), gettid(), prio, buf, eol); } else { diff --git a/src/nvt_log.h b/src/nvt_log.h index 72d8f68..31649b7 100644 --- a/src/nvt_log.h +++ b/src/nvt_log.h @@ -9,12 +9,17 @@ #define _PRF_N_(no) __attribute__((__format__(__printf__, (no), (no) + 1))) #define _PRF2_ _PRF_N_(2) +void nvt_log_dest(int dest); +void nvt_log_level(int level); _PRF2_ void nvt_log(int prio, const char *fmt, ...); void nvt_log_buf(int prio, const char *txt, const void *ptr, unsigned int len); +#define NVT_LOG_SYSLOG 0 +#define NVT_LOG_STDOUT 1 +#define NVT_LOG_STDERR 2 + extern char log_level; -extern char log_stdout; #define DBG(...) \ if (log_level > 0) nvt_log(LOG_DEBUG, __VA_ARGS__) diff --git a/src/ttynvt.c b/src/ttynvt.c index 2ed59e7..1708b15 100644 --- a/src/ttynvt.c +++ b/src/ttynvt.c @@ -1192,8 +1192,9 @@ int main(int argc, char *argv[]) return 1; } - log_level = ttynvt_param.debug; - log_stdout = ttynvt_param.logstd; + nvt_log_level(ttynvt_param.debug); + if (ttynvt_param.logstd) + nvt_log_dest(NVT_LOG_STDOUT); if (!ttynvt_param.dev_name) ttynvt_param.dev_name = "ttyNVT0";