Use the event log under Windows.

This commit is contained in:
Guus Sliepen 2003-08-17 09:04:00 +00:00
parent 5e7c52610f
commit 3112e6a863
2 changed files with 35 additions and 1 deletions

View file

@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: logger.c,v 1.1.2.9 2003/08/02 20:50:38 guus Exp $ $Id: logger.c,v 1.1.2.10 2003/08/17 09:04:00 guus Exp $
*/ */
#include "system.h" #include "system.h"
@ -30,6 +30,9 @@ static logmode_t logmode = LOGMODE_STDERR;
static pid_t logpid; static pid_t logpid;
extern char *logfilename; extern char *logfilename;
static FILE *logfile = NULL; static FILE *logfile = NULL;
#ifdef HAVE_MINGW
static HANDLE loghandle = NULL;
#endif
static const char *logident = NULL; static const char *logident = NULL;
void openlogger(const char *ident, logmode_t mode) { void openlogger(const char *ident, logmode_t mode) {
@ -47,9 +50,16 @@ void openlogger(const char *ident, logmode_t mode) {
logmode = LOGMODE_NULL; logmode = LOGMODE_NULL;
break; break;
case LOGMODE_SYSLOG: case LOGMODE_SYSLOG:
#ifdef HAVE_MINGW
loghandle = OpenEventLog(NULL, identname);
if(!loghandle)
logmode = LOGMODE_NULL;
break;
#else
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
openlog(logident, LOG_CONS | LOG_PID, LOG_DAEMON); openlog(logident, LOG_CONS | LOG_PID, LOG_DAEMON);
break; break;
#endif
#endif #endif
case LOGMODE_NULL: case LOGMODE_NULL:
break; break;
@ -74,6 +84,13 @@ void logger(int priority, const char *format, ...) {
fflush(logfile); fflush(logfile);
break; break;
case LOGMODE_SYSLOG: case LOGMODE_SYSLOG:
#ifdef HAVE_MINGW
{
char message[4096];
vsnprintf(message, sizeof(message), format, ap);
ReportEvent(loghandle, priority, 0, 0, NULL, 1, 0, &message, NULL);
}
#else
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
#ifdef HAVE_VSYSLOG #ifdef HAVE_VSYSLOG
vsyslog(priority, format, ap); vsyslog(priority, format, ap);
@ -85,6 +102,7 @@ void logger(int priority, const char *format, ...) {
} }
#endif #endif
break; break;
#endif
#endif #endif
case LOGMODE_NULL: case LOGMODE_NULL:
break; break;
@ -99,9 +117,14 @@ void closelogger(void) {
fclose(logfile); fclose(logfile);
break; break;
case LOGMODE_SYSLOG: case LOGMODE_SYSLOG:
#ifdef HAVE_MINGW
CloseEventLog(loghandle);
break;
#else
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
closelog(); closelog();
break; break;
#endif
#endif #endif
case LOGMODE_NULL: case LOGMODE_NULL:
case LOGMODE_STDERR: case LOGMODE_STDERR:

View file

@ -21,6 +21,16 @@ typedef enum logmode_t {
LOGMODE_SYSLOG LOGMODE_SYSLOG
} logmode_t; } logmode_t;
#ifdef HAVE_MINGW
#define LOG_EMERG EVENTLOG_ERROR_TYPE
#define LOG_ALERT EVENTLOG_ERROR_TYPE
#define LOG_CRIT EVENTLOG_ERROR_TYPE
#define LOG_ERR EVENTLOG_ERROR_TYPE
#define LOG_WARNING EVENTLOG_WARNING_TYPE
#define LOG_NOTICE EVENTLOG_INFORMATION_TYPE
#define LOG_INFO EVENTLOG_INFORMATION_TYPE
#define LOG_DEBUG EVENTLOG_INFORMATION_TYPE
#else
#ifndef HAVE_SYSLOG_H #ifndef HAVE_SYSLOG_H
enum { enum {
LOG_EMERG, LOG_EMERG,
@ -33,6 +43,7 @@ enum {
LOG_DEBUG, LOG_DEBUG,
}; };
#endif #endif
#endif
extern debug_t debug_level; extern debug_t debug_level;
extern void openlogger(const char *, logmode_t); extern void openlogger(const char *, logmode_t);