48 static int logging_to_syslog = 0;
62 static FILE* logfile = NULL;
65 #define CTIME_LENGTH 26
72 #if defined(HAVE_SYSLOG_R) && defined(HAVE_OPENLOG_R) && defined(HAVE_CLOSELOG_R)
73 struct syslog_data sdata = SYSLOG_DATA_INIT;
77 #undef HAVE_CLOSELOG_R
87 #define MY_PACKAGE_TARNAME "ods-signerd"
89 static const char* log_str =
"log";
101 ods_log_verbose(
"[%s] switching log to %s verbosity %i (log level %i)",
102 log_str, use_syslog?
"syslog":(filename&&filename[0]?filename:
"stderr"),
103 verbosity, verbosity+2);
104 if (logfile && logfile != stderr) {
107 log_level = verbosity + 2;
110 if(logging_to_syslog) {
111 #ifdef HAVE_CLOSELOG_R
116 logging_to_syslog = 0;
120 #ifdef HAVE_OPENLOG_R
125 logging_to_syslog = 1;
130 if(filename && filename[0]) {
131 logfile =
ods_fopen(filename, NULL,
"a");
138 "stderr", log_str, filename);
174 length = strlen(facility);
176 if (length == 4 && strncasecmp(facility,
"KERN", 4) == 0)
178 else if (length == 4 && strncasecmp(facility,
"USER", 4) == 0)
180 else if (length == 4 && strncasecmp(facility,
"MAIL", 4) == 0)
182 else if (length == 6 && strncasecmp(facility,
"DAEMON", 6) == 0)
184 else if (length == 4 && strncasecmp(facility,
"AUTH", 4) == 0)
186 else if (length == 3 && strncasecmp(facility,
"LPR", 3) == 0)
188 else if (length == 4 && strncasecmp(facility,
"NEWS", 4) == 0)
190 else if (length == 4 && strncasecmp(facility,
"UUCP", 4) == 0)
192 else if (length == 4 && strncasecmp(facility,
"CRON", 4) == 0)
194 else if (length == 6 && strncasecmp(facility,
"LOCAL0", 6) == 0)
196 else if (length == 6 && strncasecmp(facility,
"LOCAL1", 6) == 0)
198 else if (length == 6 && strncasecmp(facility,
"LOCAL2", 6) == 0)
200 else if (length == 6 && strncasecmp(facility,
"LOCAL3", 6) == 0)
202 else if (length == 6 && strncasecmp(facility,
"LOCAL4", 6) == 0)
204 else if (length == 6 && strncasecmp(facility,
"LOCAL5", 6) == 0)
206 else if (length == 6 && strncasecmp(facility,
"LOCAL6", 6) == 0)
208 else if (length == 6 && strncasecmp(facility,
"LOCAL7", 6) == 0)
211 "log_daemon", log_str, facility);
232 ods_log_vmsg(
int priority,
const char* t,
const char* s, va_list args)
234 char message[ODS_SE_MAXLINE];
238 vsnprintf(message,
sizeof(message), s, args);
241 if (logging_to_syslog) {
243 syslog_r(priority, &sdata,
"%s", message);
245 syslog(priority,
"%s", message);
255 (void) ctime_r(&now, nowstr);
258 fprintf(logfile,
"[%s] %s[%i] %s: %s\n", nowstr,
272 va_start(args, format);
274 ods_log_vmsg(
LOG_DEBUG,
"debug ", format, args);
288 va_start(args, format);
290 ods_log_vmsg(
LOG_DEBUG,
"debug ", format, args);
304 va_start(args, format);
306 ods_log_vmsg(
LOG_INFO,
"verbose", format, args);
320 va_start(args, format);
322 ods_log_vmsg(
LOG_NOTICE,
"msg ", format, args);
336 va_start(args, format);
338 ods_log_vmsg(
LOG_WARNING,
"warning", format, args);
352 va_start(args, format);
354 ods_log_vmsg(
LOG_ERR,
"error ", format, args);
368 va_start(args, format);
370 ods_log_vmsg(
LOG_CRIT,
"crit ", format, args);
384 va_start(args, format);
386 ods_log_vmsg(
LOG_ALERT,
"alert ", format, args);
400 va_start(args, format);
402 ods_log_vmsg(
LOG_CRIT,
"fatal ", format, args);
void ods_log_alert(const char *format,...)
void ods_log_debug(const char *format,...)
#define MY_PACKAGE_TARNAME
void ods_fatal_exit(const char *format,...)
void ods_log_info(const char *format,...)
void ods_log_error(const char *format,...)
int ods_log_get_facility(const char *facility)
FILE * ods_fopen(const char *file, const char *dir, const char *mode)
void ods_log_crit(const char *format,...)
void ods_log_verbose(const char *format,...)
void ods_fclose(FILE *fd)
void ods_log_deeebug(const char *format,...)
void ods_log_init(const char *filename, int use_syslog, int verbosity)
void ods_log_warning(const char *format,...)