/* Flag indicating we have initialised */
static int initialised = 0;
+static FILE *file_log;
static int system_log = 0;
static int parent_fd = 0;
LOG_Initialise(void)
{
initialised = 1;
+ file_log = stderr;
}
/* ================================================== */
{
if (system_log) {
closelog();
+ } else {
+ fclose(file_log);
}
LOG_CycleLogFiles();
}
syslog(priority, fatal ? "Fatal error : %s" : "%s", message);
} else {
- fprintf(stderr, fatal ? "Fatal error : %s\n" : "%s\n", message);
+ fprintf(file_log, fatal ? "Fatal error : %s\n" : "%s\n", message);
}
}
time(&t);
stm = *gmtime(&t);
strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%SZ", &stm);
- fprintf(stderr, "%s ", buf);
+ fprintf(file_log, "%s ", buf);
#if DEBUG > 0
if (debug_level >= DEBUG_LEVEL_PRINT_FUNCTION)
- fprintf(stderr, "%s:%d:(%s) ", filename, line_number, function_name);
+ fprintf(file_log, "%s:%d:(%s) ", filename, line_number, function_name);
#endif
}
}
}
+/* ================================================== */
+
+void
+LOG_OpenFileLog(const char *log_file)
+{
+ FILE *f;
+
+ f = fopen(log_file, "a");
+ if (!f)
+ LOG_FATAL("Could not open log file %s", log_file);
+
+ file_log = f;
+}
+
+
/* ================================================== */
void
*/
extern void LOG_SetDebugLevel(int level);
+/* Log messages to a file instead of stderr */
+extern void LOG_OpenFileLog(const char *log_file);
+
/* Log messages to syslog instead of stderr */
extern void LOG_OpenSystemLog(void);