39 static int logging_to_syslog = 0;
47 static FILE* logfile = NULL;
50 #define CTIME_LENGTH 26
57 #if defined(HAVE_SYSLOG_R) && defined(HAVE_OPENLOG_R) && defined(HAVE_CLOSELOG_R)
58 struct syslog_data sdata = SYSLOG_DATA_INIT;
62 #undef HAVE_CLOSELOG_R
72 #define MY_PACKAGE_TARNAME "ods-signerd"
74 static const char* log_str =
"log";
87 log_str, use_syslog?
"syslog":(filename&&filename[0]?filename:
"stderr"),
88 verbosity, verbosity+2);
89 if (logfile && logfile != stderr) {
92 log_level = verbosity + 2;
95 if(logging_to_syslog) {
96 #ifdef HAVE_CLOSELOG_R
101 logging_to_syslog = 0;
105 #ifdef HAVE_OPENLOG_R
110 logging_to_syslog = 1;
115 if(filename && filename[0]) {
116 logfile =
ods_fopen(filename, NULL,
"a");
123 "stderr", log_str, filename);
159 length = strlen(facility);
161 if (length == 4 && strncasecmp(facility,
"KERN", 4) == 0)
163 else if (length == 4 && strncasecmp(facility,
"USER", 4) == 0)
165 else if (length == 4 && strncasecmp(facility,
"MAIL", 4) == 0)
167 else if (length == 6 && strncasecmp(facility,
"DAEMON", 6) == 0)
169 else if (length == 4 && strncasecmp(facility,
"AUTH", 4) == 0)
171 else if (length == 3 && strncasecmp(facility,
"LPR", 3) == 0)
173 else if (length == 4 && strncasecmp(facility,
"NEWS", 4) == 0)
175 else if (length == 4 && strncasecmp(facility,
"UUCP", 4) == 0)
177 else if (length == 4 && strncasecmp(facility,
"CRON", 4) == 0)
179 else if (length == 6 && strncasecmp(facility,
"LOCAL0", 6) == 0)
181 else if (length == 6 && strncasecmp(facility,
"LOCAL1", 6) == 0)
183 else if (length == 6 && strncasecmp(facility,
"LOCAL2", 6) == 0)
185 else if (length == 6 && strncasecmp(facility,
"LOCAL3", 6) == 0)
187 else if (length == 6 && strncasecmp(facility,
"LOCAL4", 6) == 0)
189 else if (length == 6 && strncasecmp(facility,
"LOCAL5", 6) == 0)
191 else if (length == 6 && strncasecmp(facility,
"LOCAL6", 6) == 0)
193 else if (length == 6 && strncasecmp(facility,
"LOCAL7", 6) == 0)
196 "log_daemon", log_str, facility);
217 ods_log_vmsg(
int priority,
const char* t,
const char* s, va_list args)
219 char message[ODS_SE_MAXLINE];
223 vsnprintf(message,
sizeof(message), s, args);
226 if (logging_to_syslog) {
228 syslog_r(priority, &sdata,
"%s", message);
230 syslog(priority,
"%s", message);
240 (void) ctime_r(&now, nowstr);
243 fprintf(logfile,
"[%s] %s[%i] %s: %s\n", nowstr,
257 va_start(args, format);
259 ods_log_vmsg(
LOG_DEBUG,
"debug ", format, args);
273 va_start(args, format);
275 ods_log_vmsg(
LOG_DEBUG,
"debug ", format, args);
289 va_start(args, format);
291 ods_log_vmsg(
LOG_INFO,
"verbose", format, args);
305 va_start(args, format);
307 ods_log_vmsg(
LOG_NOTICE,
"msg ", format, args);
321 va_start(args, format);
323 ods_log_vmsg(
LOG_WARNING,
"warning", format, args);
337 va_start(args, format);
339 ods_log_vmsg(
LOG_ERR,
"error ", format, args);
353 va_start(args, format);
355 ods_log_vmsg(
LOG_CRIT,
"crit ", format, args);
369 va_start(args, format);
371 ods_log_vmsg(
LOG_ALERT,
"alert ", format, args);
385 va_start(args, format);
387 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,...)