char *buf = malloc(LOG_MAX_MESSAGE_SIZE);
vsnprintf(buf, LOG_MAX_MESSAGE_SIZE, fmt, ap_copy);
- syslog(LOG_MAKEPRI(facility, sev), "%s", buf);
+ /* syslog.h provides a macro for generating priorities, however in versions of glibc < 2.17 it is
+ broken if you use it as documented: https://sourceware.org/bugzilla/show_bug.cgi?id=14347
+ RHEL6 uses glibc 2.12, so do not use LOG_MAKEPRI until around 2020.
+ */
+ syslog((facility|sev), "%s", buf);
free(buf);
}
return buf;
}
+const char *sev2str(int sev)
+{
+ switch (sev) {
+ case LOG_DEBUG: return "debug";
+ case LOG_INFO: return "info";
+ case LOG_NOTICE: return "notice";
+ case LOG_WARNING: return "warning";
+ case LOG_ERR: return "err";
+ case LOG_CRIT: return "crit";
+ case LOG_ALERT: return "alert";
+ default: return "invalid";
+ }
+}
+
int str2sev(const char* sev) {
- if (strcmp(sev, "debug")) {
+ if (strcmp(sev, "debug") ==0 ) {
return LOG_DEBUG;
}
- else if (strcmp(sev, "info")) {
+ else if (strcmp(sev, "info") == 0) {
return LOG_INFO;
}
- else if (strcmp(sev, "notice")) {
+ else if (strcmp(sev, "notice") == 0) {
return LOG_NOTICE;
}
- else if (strcmp(sev, "warning")) {
+ else if (strcmp(sev, "warning") == 0 ) {
return LOG_WARNING;
}
- else if (strcmp(sev, "err")) {
+ else if (strcmp(sev, "err") == 0) {
return LOG_ERR;
}
- else if (strcmp(sev, "crit")) {
+ else if (strcmp(sev, "crit") == 0) {
return LOG_CRIT;
}
- else if (strcmp(sev, "alert")) {
+ else if (strcmp(sev, "alert") == 0) {
return LOG_ALERT;
}
- else if (strcmp(sev, "emerg")) {
+ else if (strcmp(sev, "emerg") == 0) {
return LOG_EMERG;
}
void tr_log(const int sev, const char *fmt, ...) {
- tr_log_open();
-
if (NULL != fmt) {
va_list ap;
void tr_audit_resp(TID_RESP *resp) {
- tr_log_open();
-
if (NULL != resp) {
char *attrs[] = { audit_fmt("result", resp->result ? "error" : "success"),
void tr_audit_req(TID_REQ *req) {
- tr_log_open();
-
if (NULL != req) {
char *attrs[] = { audit_fmt("comm", NULL != req->comm ? req->comm->buf : NULL),