2 * Sherlock Library -- Logging
4 * (c) 1997--2001 Martin Mares <mj@ucw.cz>
17 static char *log_progname, log_name_patt[64], log_name[64];
19 static int log_params;
28 log_switch(struct tm *tm)
33 if (!log_name_patt[0] ||
34 log_name[0] && !log_params)
36 strftime(name, sizeof(name), log_name_patt, tm);
37 if (!strcmp(name, log_name))
39 strcpy(log_name, name);
40 fd = open(name, O_WRONLY | O_CREAT | O_APPEND, 0666);
42 die("Unable to open log file %s: %m", name);
49 vlog(unsigned int cat, const char *msg, va_list args)
51 time_t tim = time(NULL);
52 struct tm *tm = localtime(&tim);
56 strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tm);
57 fprintf(stderr, "%c %s ", cat, buf);
61 fprintf(stderr, "[%s (%d)] ", log_progname, log_pid);
63 fprintf(stderr, "[%s] ", log_progname);
68 fprintf(stderr, "[%d] ", log_pid);
70 vfprintf(stderr, msg, args);
76 log(unsigned int cat, const char *msg, ...)
91 vlog(L_FATAL, msg, args);
108 log_init(byte *argv0)
111 log_progname = log_basename(argv0);
119 time_t tim = time(NULL);
120 struct tm *tm = localtime(&tim);
121 strcpy(log_name_patt, name);
122 log_params = !!strchr(name, '%');