From 29501203f7b6818258d438d8826ac02c60e08494 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 15 Jan 2006 16:42:37 +0100 Subject: [PATCH] Modified logging so that even on NPTL systems each line in the log file shows the individual thread's pid --- CONTRIBUTORS | 4 ++++ HISTORY | 2 ++ tools.c | 15 ++++++++++++++- tools.h | 10 ++++++---- vdr.c | 4 ++-- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4f5769c9..2c1949e0 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1659,3 +1659,7 @@ J Jesus Bravo Alvarez for reporting a second place where a message should be given when an instant recording is started + +Francois-Xavier Kowalski + for suggesting how to modify logging so that even on NPTL systems each line in + the log file shows the individual thread's pid diff --git a/HISTORY b/HISTORY index 0e2c5366..2d5e0c10 100644 --- a/HISTORY +++ b/HISTORY @@ -4194,3 +4194,5 @@ Video Disk Recorder Revision History - Fixed a second place where a message should be given when an instant recording is started (reported by Jesus Bravo Alvarez). +- Modified logging so that even on NPTL systems each line in the log file shows + the individual thread's pid (based on a suggestion from Francois-Xavier Kowalski). diff --git a/tools.c b/tools.c index 33b2ec62..85fd4061 100644 --- a/tools.c +++ b/tools.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 1.110 2006/01/15 14:31:45 kls Exp $ + * $Id: tools.c 1.111 2006/01/15 16:42:37 kls Exp $ */ #include "tools.h" @@ -26,9 +26,22 @@ extern "C" { #include #include #include "i18n.h" +#include "thread.h" int SysLogLevel = 3; +#define MAXSYSLOGBUF 256 + +void syslog_with_tid(int priority, const char *format, ...) +{ + va_list ap; + char fmt[MAXSYSLOGBUF]; + snprintf(fmt, sizeof(fmt), "[%d] %s", cThread::ThreadId(), format); + va_start(ap, format); + vsyslog(priority, fmt, ap); + va_end(ap); +} + int BCD2INT(int x) { return ((1000000 * BCDCHARTOINT((x >> 24) & 0xFF)) + diff --git a/tools.h b/tools.h index 23afea56..7e57744b 100644 --- a/tools.h +++ b/tools.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 1.89 2006/01/08 11:40:37 kls Exp $ + * $Id: tools.h 1.90 2006/01/15 16:19:56 kls Exp $ */ #ifndef __TOOLS_H @@ -26,9 +26,9 @@ typedef unsigned long long int uint64; extern int SysLogLevel; -#define esyslog(a...) void( (SysLogLevel > 0) ? syslog(LOG_ERR, a) : void() ) -#define isyslog(a...) void( (SysLogLevel > 1) ? syslog(LOG_INFO, a) : void() ) -#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog(LOG_DEBUG, a) : void() ) +#define esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() ) +#define isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_INFO, a) : void() ) +#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_DEBUG, a) : void() ) #define LOG_ERROR esyslog("ERROR (%s,%d): %m", __FILE__, __LINE__) #define LOG_ERROR_STR(s) esyslog("ERROR: %s: %m", s) @@ -52,6 +52,8 @@ template inline int sgn(T a) { return a < 0 ? -1 : a > 0 ? 1 : 0; } template inline void swap(T &a, T &b) { T t = a; a = b; b = t; } #endif +void syslog_with_tid(int priority, const char *format, ...); + #define BCDCHARTOINT(x) (10 * ((x & 0xF0) >> 4) + (x & 0xF)) int BCD2INT(int x); diff --git a/vdr.c b/vdr.c index 4c5aa7c2..cc4c0a64 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/vdr * - * $Id: vdr.c 1.239 2006/01/15 16:01:32 kls Exp $ + * $Id: vdr.c 1.240 2006/01/15 16:23:21 kls Exp $ */ #include @@ -447,7 +447,7 @@ int main(int argc, char *argv[]) // Log file: if (SysLogLevel > 0) - openlog("vdr", LOG_PID | LOG_CONS, SysLogTarget); + openlog("vdr", LOG_CONS, SysLogTarget); // LOG_PID doesn't work as expected under NPTL // Check the video directory: