2 * mono-log-windows.c: Simplistic simulation of a syslog logger for Windows
4 * This module contains the Windows syslog logger interface
7 * Neale Ferguson <neale@sinenomine.net>
25 #include "mono-logger.h"
27 static FILE *logFile = NULL;
28 static void *logUserData = NULL;
29 static char *logFileName = L".//mono.log";
34 * @level - GLogLevelFlags value
35 * @returns The equivalent character identifier
38 mapLogFileLevel(GLogLevelFlags level)
40 if (level & G_LOG_LEVEL_ERROR)
42 if (level & G_LOG_LEVEL_CRITICAL)
44 if (level & G_LOG_LEVEL_WARNING)
46 if (level & G_LOG_LEVEL_MESSAGE)
48 if (level & G_LOG_LEVEL_INFO)
50 if (level & G_LOG_LEVEL_DEBUG)
56 * mono_log_open_logfile
58 * Open the logfile. If the path is not specified default to stdout. If the
59 * open fails issue a warning and use stdout as the log file destination.
61 * @ident - Identifier: ignored
62 * @userData - Not used
65 mono_log_open_syslog(const char *ident, void *userData)
67 logFile = fopen(logFileName, "w");
68 if (logFile == NULL) {
69 g_warning("opening of log file %s failed with %s",
72 logUserData = userData;
76 * mono_log_write_logfile
78 * Write data to the log file.
80 * @domain - Identifier string
81 * @level - Logging level flags
82 * @format - Printf format string
83 * @vargs - Variable argument list
86 mono_log_write_syslog(const char *domain, GLogLevelFlags level, mono_bool hdr, const char *format, va_list args)
97 mono_log_open_logfile(NULL, NULL);
102 strftime(logTime, sizeof(logTime), "%F %T", tod);
103 iLog = snprintf(logMessage, sizeof(logMessage), "%s level[%c] mono[%d]: ",
104 logTime,mapLogFileLevel(level),pid);
105 nLog = sizeof(logMessage) - iLog - 2;
106 iLog = vsnprintf(logMessage+iLog, nLog, format, args);
107 logMessage[iLog++] = '\n';
108 logMessage[iLog++] = 0;
109 fputs(logMessage, logFile);
112 if (level == G_LOG_FLAG_FATAL)
117 * mono_log_close_logfile
122 mono_log_close_syslog()