Module: kamailio Branch: 5.7 Commit: 306b4b09e3cb46a0fe8bc2d25344e5cfa52941e0 URL: https://github.com/kamailio/kamailio/commit/306b4b09e3cb46a0fe8bc2d25344e5cf...
Author: Stefan-Cristian Mititelu stefan-cristian.mititelu@1and1.ro Committer: Stefan-Cristian Mititelu stefan-cristian.mititelu@1and1.ro Date: 2024-01-19T15:38:26+02:00
xlog: add kemi xlog_facility function
(cherry picked from commit e506b60c1045cfbd4485434165305fbc2fb57aa9)
---
Modified: src/modules/xlog/xlog.c
---
Diff: https://github.com/kamailio/kamailio/commit/306b4b09e3cb46a0fe8bc2d25344e5cf... Patch: https://github.com/kamailio/kamailio/commit/306b4b09e3cb46a0fe8bc2d25344e5cf...
---
diff --git a/src/modules/xlog/xlog.c b/src/modules/xlog/xlog.c index 03063bbfb1f..c7d239ea299 100644 --- a/src/modules/xlog/xlog.c +++ b/src/modules/xlog/xlog.c @@ -878,8 +878,9 @@ static int xlog_log_colors_param(modparam_t type, void *val) /** * write message after evaluation of lmsg for pseudo-variables */ -int ki_xlog_ex(sip_msg_t *msg, int llevel, str *lmsg) +int ki_xlog_ex(sip_msg_t *msg, str *lfacility, int llevel, str *lmsg) { + int lf = xlog_facility; pv_elem_t *xmodel = NULL; str txt = {0, 0};
@@ -896,13 +897,23 @@ int ki_xlog_ex(sip_msg_t *msg, int llevel, str *lmsg) pv_elem_free_all(xmodel); return -1; } - LOG_FN(xlog_facility, llevel, _xlog_prefix, "%.*s", txt.len, txt.s); + + if(lfacility != NULL) { + lfacility->s[lfacility->len] = '\0'; + lf = str2facility(lfacility->s); + if(lf == -1) { + LM_WARN("invalid syslog facility %.*s, using default\n", + lfacility->len, lfacility->s); + lf = xlog_facility; + } + } + LOG_FN(lf, llevel, _xlog_prefix, "%.*s", txt.len, txt.s); ; pv_elem_free_all(xmodel); return 1; }
-int ki_xlog(sip_msg_t *msg, str *slevel, str *lmsg) +int ki_xlog_get_level(str *slevel) { int llevel;
@@ -927,42 +938,55 @@ int ki_xlog(sip_msg_t *msg, str *slevel, str *lmsg) } else { llevel = L_ERR; } - return ki_xlog_ex(msg, llevel, lmsg); + + return llevel; +} + +int ki_xlog_facility(sip_msg_t *msg, str *lfacility, str *slevel, str *lmsg) +{ + int llevel = ki_xlog_get_level(slevel); + return ki_xlog_ex(msg, lfacility, llevel, lmsg); +} + +int ki_xlog(sip_msg_t *msg, str *slevel, str *lmsg) +{ + int llevel = ki_xlog_get_level(slevel); + return ki_xlog_ex(msg, NULL, llevel, lmsg); }
int ki_xdbg(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_DBG, lmsg); + return ki_xlog_ex(msg, NULL, L_DBG, lmsg); }
int ki_xerr(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_ERR, lmsg); + return ki_xlog_ex(msg, NULL, L_ERR, lmsg); }
int ki_xinfo(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_INFO, lmsg); + return ki_xlog_ex(msg, NULL, L_INFO, lmsg); }
int ki_xnotice(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_NOTICE, lmsg); + return ki_xlog_ex(msg, NULL, L_NOTICE, lmsg); }
int ki_xwarn(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_WARN, lmsg); + return ki_xlog_ex(msg, NULL, L_WARN, lmsg); }
int ki_xalert(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_ALERT, lmsg); + return ki_xlog_ex(msg, NULL, L_ALERT, lmsg); }
int ki_xcrit(sip_msg_t *msg, str *lmsg) { - return ki_xlog_ex(msg, L_CRIT, lmsg); + return ki_xlog_ex(msg, NULL, L_CRIT, lmsg); }
/** @@ -1010,6 +1034,11 @@ static sr_kemi_t sr_kemi_xlog_exports[] = { { SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } }, + { str_init("xlog"), str_init("xlog_facility"), + SR_KEMIP_INT, ki_xlog_facility, + { SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_STR, + SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } + },
{ {0, 0}, {0, 0}, 0, NULL, { 0, 0, 0, 0, 0, 0 } } };