From 8c9ef6745167959855cf6671a9540cef04492e9e Mon Sep 17 00:00:00 2001 From: Maciej Lipinski <maciej.lipinski@cern.ch> Date: Tue, 18 Jun 2019 18:48:19 +0200 Subject: [PATCH] [issue #194] add facility to wrs_msg and <facility*8+priority> to output msgs Logger can interpret get log facility & level (error, info, etc) from log message if such info is provided properly. I.e. it needs to be enclosed in <> and the first thing in the message. The wrs-msg.c file in the libwr was changed such that the log facility & level ares properly printed in log messages, and thus later properly interpreted by the syslog elastic search on the server. For this, wrs_msg lib needs to know the faciltiy of the application that uses it. Thus, the wrs_msg_init() function was updated (in the library and all its calls in applications) --- userspace/libwr/include/libwr/wrs-msg.h | 4 +++- userspace/libwr/wrs-msg.c | 17 ++++++++++------- userspace/tools/wr_mon.c | 2 +- userspace/tools/wr_phytool.c | 2 +- userspace/tools/wrs_checkcfg.c | 2 +- userspace/tools/wrs_leapsec.c | 2 +- userspace/tools/wrs_sfp_dump.c | 2 +- userspace/tools/wrs_status_led.c | 2 +- userspace/tools/wrs_throttling.c | 2 +- userspace/tools/wrs_version.c | 2 +- userspace/tools/wrs_vlans.c | 2 +- userspace/wrs_watchdog/wrs_watchdog.c | 2 +- userspace/wrsw_hal/hal_main.c | 2 +- userspace/wrsw_rtud/rtud.c | 2 +- 14 files changed, 25 insertions(+), 20 deletions(-) diff --git a/userspace/libwr/include/libwr/wrs-msg.h b/userspace/libwr/include/libwr/wrs-msg.h index 4b04ede1c..5ea28726e 100644 --- a/userspace/libwr/include/libwr/wrs-msg.h +++ b/userspace/libwr/include/libwr/wrs-msg.h @@ -28,7 +28,7 @@ extern void wrs_msg_filename(char *name); extern int wrs_msg_level; /* user can set it in main() or whatever */ /* Optional: prepare all defaults. Like argv[0] to be prefixed, signals... */ -extern void wrs_msg_init(int argc, char **argv); +extern void wrs_msg_init(int argc, char **argv, int facility); #ifdef DEBUG /* We had it, so let's keep this build-time thing */ # define WRS_MSG_DEFAULT_LEVEL LOG_DEBUG @@ -36,6 +36,8 @@ extern void wrs_msg_init(int argc, char **argv); # define WRS_MSG_DEFAULT_LEVEL LOG_INFO #endif +#define WRS_MSG_DEFAULT_FACILITY LOG_USER /* User facility by default */ + #define WRS_MSG_DETAILS_AT LOG_DEBUG /* >= for debug use __LINE__ */ /* This is the external function for it all */ diff --git a/userspace/libwr/wrs-msg.c b/userspace/libwr/wrs-msg.c index 44a3e53de..7208650ca 100644 --- a/userspace/libwr/wrs-msg.c +++ b/userspace/libwr/wrs-msg.c @@ -14,6 +14,7 @@ #endif int wrs_msg_level = WRS_MSG_DEFAULT_LEVEL; +int wrs_msg_facility = WRS_MSG_DEFAULT_FACILITY; /* We use debug, info, warning, error and "silent" */ static int wrs_msg_used_levels[] = { @@ -40,7 +41,7 @@ static FILE *wrs_msg_f = (FILE *)-1; /* Means "not yet set" */ static char *prgname; /* always print argv[0], or we get lost */ /* This function is optional, up to the user whether to call it or not */ -void wrs_msg_init(int argc, char **argv) +void wrs_msg_init(int argc, char **argv, int facility) { int i; int max = ARRAY_SIZE(wrs_msg_used_levels) - 1; @@ -116,6 +117,7 @@ void wrs_msg_init(int argc, char **argv) } wrs_msg_level = wrs_msg_used_levels[wrs_msg_pos]; + wrs_msg_facility = facility; /* Prepare for run-time changes */ signal(SIGUSR1, wrs_msg_sighandler); @@ -139,11 +141,11 @@ void __wrs_msg(int level, const char *func, int line, const char *fmt, ...) { va_list args; static char *header_string[] = { - [LOG_ALERT] = "", - [LOG_ERR] = "Error: ", - [LOG_WARNING] = "Warning: ", - [LOG_INFO] = "", - [LOG_DEBUG] = "" + [LOG_ALERT] = "Alert ", + [LOG_ERR] = "Error ", + [LOG_WARNING] = "Warning", + [LOG_INFO] = "Info ", + [LOG_DEBUG] = "Debug " }; /* If the user didn't set the file, nor init, enforce default now */ @@ -158,7 +160,8 @@ void __wrs_msg(int level, const char *func, int line, const char *fmt, ...) asprintf(&prgname, "<pid-%i>", getpid()); /* Program name and header, and possibly function and line too */ - fprintf(wrs_msg_f, "%s: %s", prgname, header_string[level]); + fprintf(wrs_msg_f, "<%d>%s (%s):", (wrs_msg_facility | level), + header_string[level], prgname); if (level >= WRS_MSG_DETAILS_AT) fprintf(wrs_msg_f, "%s:%i: ", func, line); diff --git a/userspace/tools/wr_mon.c b/userspace/tools/wr_mon.c index 73566beae..a2b590bbb 100644 --- a/userspace/tools/wr_mon.c +++ b/userspace/tools/wr_mon.c @@ -1137,7 +1137,7 @@ int main(int argc, char *argv[]) /* try a pps_gen based approach */ uint64_t last_seconds = 0; - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_USER); while ((opt = getopt(argc, argv, "himsoetabwqvH:")) != -1) { switch(opt) diff --git a/userspace/tools/wr_phytool.c b/userspace/tools/wr_phytool.c index aeafe24d1..5ef6510bf 100644 --- a/userspace/tools/wr_phytool.c +++ b/userspace/tools/wr_phytool.c @@ -591,7 +591,7 @@ int main(int argc, char **argv) int i; int ep; - wrs_msg_init(1, argv); /* only use argv[0]: no cmdline */ + wrs_msg_init(1, argv, LOG_USER); /* only use argv[0]: no cmdline */ if(argc<3) { diff --git a/userspace/tools/wrs_checkcfg.c b/userspace/tools/wrs_checkcfg.c index 111332f09..cc283f150 100644 --- a/userspace/tools/wrs_checkcfg.c +++ b/userspace/tools/wrs_checkcfg.c @@ -12,7 +12,7 @@ int main(int argc, char **argv) { int err, verbose = 0; - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_USER); me_lazy: if (argc < 2 || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { diff --git a/userspace/tools/wrs_leapsec.c b/userspace/tools/wrs_leapsec.c index c64d2a7fb..3df8fb6b7 100644 --- a/userspace/tools/wrs_leapsec.c +++ b/userspace/tools/wrs_leapsec.c @@ -266,7 +266,7 @@ int main(int argc, char *argv[]) { int ret; - wrs_msg_init(argc,argv); + wrs_msg_init(argc,argv, LOG_DAEMON); prgName=argv[0]; diff --git a/userspace/tools/wrs_sfp_dump.c b/userspace/tools/wrs_sfp_dump.c index 6bdf8711b..545542b7d 100644 --- a/userspace/tools/wrs_sfp_dump.c +++ b/userspace/tools/wrs_sfp_dump.c @@ -303,7 +303,7 @@ int main(int argc, char **argv) struct shw_sfp_dom hal_sfp_raw_dom_lc[HAL_MAX_PORTS]; - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_USER); nports = 18; dump_port = 1; diff --git a/userspace/tools/wrs_status_led.c b/userspace/tools/wrs_status_led.c index 3d4c58715..9c7dae159 100644 --- a/userspace/tools/wrs_status_led.c +++ b/userspace/tools/wrs_status_led.c @@ -55,7 +55,7 @@ int main(int argc, char **argv) int opt; /* argc forced to 1: -q and -v are not "quiet" and "verbose" */ - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_USER); assert_init(shw_pio_mmap_init()); shw_io_init(); diff --git a/userspace/tools/wrs_throttling.c b/userspace/tools/wrs_throttling.c index 230a53691..2e2ed08a0 100644 --- a/userspace/tools/wrs_throttling.c +++ b/userspace/tools/wrs_throttling.c @@ -115,7 +115,7 @@ int main(int argc, char *argv[]) prgname = argv[0]; - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_USER); if (shw_fpga_mmap_init() < 0) { pr_error("%s: Can't access device memory\n", prgname); diff --git a/userspace/tools/wrs_version.c b/userspace/tools/wrs_version.c index 0c1d342e8..a592f8e94 100644 --- a/userspace/tools/wrs_version.c +++ b/userspace/tools/wrs_version.c @@ -208,7 +208,7 @@ int main(int argc, char **argv) char func='a'; /* argc forced to 1: -t and -v are not "terse" and "verbose" */ - wrs_msg_init(1, argv); + wrs_msg_init(1, argv, LOG_USER); if(argc>=2 && argv[1][0]=='-') { diff --git a/userspace/tools/wrs_vlans.c b/userspace/tools/wrs_vlans.c index 59ae6f2b3..8a4aedc27 100644 --- a/userspace/tools/wrs_vlans.c +++ b/userspace/tools/wrs_vlans.c @@ -161,7 +161,7 @@ int main(int argc, char *argv[]) char *prgname; wrs_msg_level = LOG_WARNING; - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_USER); prgname = argv[0]; if (NPORTS > 8 * sizeof(portmask)) { diff --git a/userspace/wrs_watchdog/wrs_watchdog.c b/userspace/wrs_watchdog/wrs_watchdog.c index 32ddad7d1..0aea35292 100644 --- a/userspace/wrs_watchdog/wrs_watchdog.c +++ b/userspace/wrs_watchdog/wrs_watchdog.c @@ -275,7 +275,7 @@ int main(int argc, char *argv[]) return 0; } - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_DAEMON); if (shw_fpga_mmap_init() < 0) { pr_error("%s: Can't access device memory\n", prgname); diff --git a/userspace/wrsw_hal/hal_main.c b/userspace/wrsw_hal/hal_main.c index 161465bfe..a1695be49 100644 --- a/userspace/wrsw_hal/hal_main.c +++ b/userspace/wrsw_hal/hal_main.c @@ -229,7 +229,7 @@ int main(int argc, char *argv[]) static timeout_t update_fan_tmo; static timeout_t update_all_tmo; - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_DAEMON); /* Print HAL's version */ pr_info("wrsw_hal. Commit %s, built on " __DATE__ "\n", __GIT_VER__); diff --git a/userspace/wrsw_rtud/rtud.c b/userspace/wrsw_rtud/rtud.c index f96d85414..4a3782534 100644 --- a/userspace/wrsw_rtud/rtud.c +++ b/userspace/wrsw_rtud/rtud.c @@ -375,7 +375,7 @@ int main(int argc, char **argv) unsigned long aging_res = DEFAULT_AGING_RES; // Aging resolution [sec.] unsigned long aging_time = DEFAULT_AGING_TIME; // Aging time [sec.] - wrs_msg_init(argc, argv); + wrs_msg_init(argc, argv, LOG_DAEMON); /* Print RTUd's version */ pr_info("wrsw_rtud. Commit %s, built on " __DATE__ "\n", __GIT_VER__); -- GitLab