41 static int logging_to_syslog = 0;
49 static FILE* logfile = NULL;
52 #define CTIME_LENGTH 26
59 #if defined(HAVE_SYSLOG_R) && defined(HAVE_OPENLOG_R) && defined(HAVE_CLOSELOG_R)
60 struct syslog_data sdata = SYSLOG_DATA_INIT;
64 #undef HAVE_CLOSELOG_R
74 #define MY_PACKAGE_TARNAME "ods-signerd"
76 static const char* log_str =
"log";
89 log_str, use_syslog?
"syslog":(filename&&filename[0]?filename:
"stderr"),
90 verbosity, verbosity+2);
91 if (logfile && logfile != stderr) {
94 log_level = verbosity + 2;
97 if(logging_to_syslog) {
98 #ifdef HAVE_CLOSELOG_R
103 logging_to_syslog = 0;
107 #ifdef HAVE_OPENLOG_R
112 logging_to_syslog = 1;
117 if(filename && filename[0]) {
118 logfile =
ods_fopen(filename, NULL,
"a");
125 "stderr", log_str, filename);
161 length = strlen(facility);
163 if (length == 4 && strncasecmp(facility,
"KERN", 4) == 0)
165 else if (length == 4 && strncasecmp(facility,
"USER", 4) == 0)
167 else if (length == 4 && strncasecmp(facility,
"MAIL", 4) == 0)
169 else if (length == 6 && strncasecmp(facility,
"DAEMON", 6) == 0)
171 else if (length == 4 && strncasecmp(facility,
"AUTH", 4) == 0)
173 else if (length == 3 && strncasecmp(facility,
"LPR", 3) == 0)
175 else if (length == 4 && strncasecmp(facility,
"NEWS", 4) == 0)
177 else if (length == 4 && strncasecmp(facility,
"UUCP", 4) == 0)
179 else if (length == 4 && strncasecmp(facility,
"CRON", 4) == 0)
181 else if (length == 6 && strncasecmp(facility,
"LOCAL0", 6) == 0)
183 else if (length == 6 && strncasecmp(facility,
"LOCAL1", 6) == 0)
185 else if (length == 6 && strncasecmp(facility,
"LOCAL2", 6) == 0)
187 else if (length == 6 && strncasecmp(facility,
"LOCAL3", 6) == 0)
189 else if (length == 6 && strncasecmp(facility,
"LOCAL4", 6) == 0)
191 else if (length == 6 && strncasecmp(facility,
"LOCAL5", 6) == 0)
193 else if (length == 6 && strncasecmp(facility,
"LOCAL6", 6) == 0)
195 else if (length == 6 && strncasecmp(facility,
"LOCAL7", 6) == 0)
198 "log_daemon", log_str, facility);
219 ods_log_vmsg(
int priority,
const char* t,
const char* s, va_list args)
221 char message[ODS_SE_MAXLINE];
225 vsnprintf(message,
sizeof(message), s, args);
228 if (logging_to_syslog) {
230 syslog_r(priority, &sdata,
"%s", message);
232 syslog(priority,
"%s", message);
242 (void) ctime_r(&now, nowstr);
245 fprintf(logfile,
"[%s] %s[%i] %s: %s\n", nowstr,
259 va_start(args, format);
261 ods_log_vmsg(
LOG_DEBUG,
"debug ", format, args);
275 va_start(args, format);
277 ods_log_vmsg(
LOG_DEBUG,
"debug ", format, args);
291 va_start(args, format);
293 ods_log_vmsg(
LOG_INFO,
"verbose", format, args);
307 va_start(args, format);
309 ods_log_vmsg(
LOG_NOTICE,
"msg ", format, args);
323 va_start(args, format);
325 ods_log_vmsg(
LOG_WARNING,
"warning", format, args);
339 va_start(args, format);
341 ods_log_vmsg(
LOG_ERR,
"error ", format, args);
355 va_start(args, format);
357 ods_log_vmsg(
LOG_CRIT,
"crit ", format, args);
371 va_start(args, format);
373 ods_log_vmsg(
LOG_ALERT,
"alert ", format, args);
387 va_start(args, format);
389 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,...)