From 5f1328345f5adbeab7da271effed627138fc9109 Mon Sep 17 00:00:00 2001 From: dhirajverma Date: Thu, 17 Jun 2021 17:27:54 +0530 Subject: [PATCH] Dynamic loglevel change for mdclogging Change-Id: Iae34acfaa6c772a36f051c358339f8361fa549d1 Signed-off-by: dhirajverma --- RIC-E2-TERMINATION/Dockerfile | 10 ++--- RIC-E2-TERMINATION/sctpThread.cpp | 93 ++++++++++----------------------------- 2 files changed, 29 insertions(+), 74 deletions(-) diff --git a/RIC-E2-TERMINATION/Dockerfile b/RIC-E2-TERMINATION/Dockerfile index fcee6a7..c51382a 100644 --- a/RIC-E2-TERMINATION/Dockerfile +++ b/RIC-E2-TERMINATION/Dockerfile @@ -43,10 +43,10 @@ RUN mv /opt/e2/RIC-E2-TERMINATION/CMakeLists.txt /opt/e2/ && cat /opt/e2/RIC-E2- && dpkg -i rmr_4.7.4_amd64.deb \ && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_4.7.4_amd64.deb/download.deb \ && dpkg -i rmr-dev_4.7.4_amd64.deb \ - && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog_0.0.4-1_amd64.deb/download.deb \ - && dpkg -i mdclog_0.0.4-1_amd64.deb \ - && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog-dev_0.0.4-1_amd64.deb/download.deb \ - && dpkg -i mdclog-dev_0.0.4-1_amd64.deb \ + && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog_0.1.1-1_amd64.deb/download.deb \ + && dpkg -i mdclog_0.1.1-1_amd64.deb \ + && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog-dev_0.1.1-1_amd64.deb/download.deb \ + && dpkg -i mdclog-dev_0.1.1-1_amd64.deb \ && apt-get update && apt-get install -y libcurl4-gnutls-dev gawk libtbb-dev libtbb-doc libtbb2 libtbb2-dbg \ && apt-get install -y python3 python3-pip python3-setuptools python3-wheel ninja-build \ && pip3 install meson \ @@ -98,7 +98,7 @@ COPY --from=ubuntu /usr/local/lib/librmr_si.so /usr/local/lib/librmr_si.so COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libmdclog.so /usr/local/lib/libmdclog.so COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libmdclog.so.0 /usr/local/lib/libmdclog.so.0 -COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libmdclog.so.0.0.4 /usr/local/lib/libmdclog.so.0.0.4 +COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libmdclog.so.0.1.7 /usr/local/lib/libmdclog.so.0.1.7 COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libcgreen.so /usr/local/libcgreen.so COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libcgreen.so.1 /usr/local/libcgreen.so.1 diff --git a/RIC-E2-TERMINATION/sctpThread.cpp b/RIC-E2-TERMINATION/sctpThread.cpp index ba2425e..207ff9f 100644 --- a/RIC-E2-TERMINATION/sctpThread.cpp +++ b/RIC-E2-TERMINATION/sctpThread.cpp @@ -23,7 +23,7 @@ #include <3rdparty/oranE2/RANfunctions-List.h> #include "sctpThread.h" #include "BuildRunName.h" - +#include //#include "3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h" //#include "BuildXml.h" //#include "pugixml/src/pugixml.hpp" @@ -55,10 +55,13 @@ double cpuClock = 0.0; bool jsonTrace = false; void init_log() { + int log_change_monitor = 1; mdclog_attr_t *attr; mdclog_attr_init(&attr); mdclog_attr_set_ident(attr, "E2Terminator"); mdclog_init(attr); + if(mdclog_format_initialize(log_change_monitor)!=0) + mdclog_write(MDCLOG_ERR, "Failed to intialize MDC log format !!!"); mdclog_attr_destroy(attr); } auto start_time = std::chrono::high_resolution_clock::now(); @@ -157,54 +160,7 @@ int buildConfiguration(sctp_params_t &sctpParams) { } sctpParams.rmrPort = (uint16_t)rmrPort; snprintf(sctpParams.rmrAddress, sizeof(sctpParams.rmrAddress), "%d", (int) (sctpParams.rmrPort)); - - string tmpStr; - if(std::getenv("loglevel")) - { - auto tmpStr = std::getenv("loglevel"); - if (strlen(tmpStr) == 0) { - mdclog_write(MDCLOG_ERR, "illegal loglevel. Set loglevel to MDCLOG_ERR"); - tmpStr = "3"; - } - - if (!strcmp(tmpStr,"0")) { - sctpParams.logLevel = MDCLOG_DEBUG; - } else if (!strcmp(tmpStr,"1")) { - sctpParams.logLevel = MDCLOG_INFO; - } else if (!strcmp(tmpStr,"2")) { - sctpParams.logLevel = MDCLOG_WARN; - } else if (!strcmp(tmpStr,"3")) { - sctpParams.logLevel = MDCLOG_ERR; - } else { - mdclog_write(MDCLOG_ERR, "illegal loglevel = %s. Set loglevel to MDCLOG_ERR", tmpStr); - sctpParams.logLevel = MDCLOG_ERR; - } - } - else - { - auto tmpStr = conf.getStringValue("loglevel"); - if (tmpStr.length() == 0) { - mdclog_write(MDCLOG_ERR, "illegal loglevel. Set loglevel to MDCLOG_INFO"); - tmpStr = "info"; - } - transform(tmpStr.begin(), tmpStr.end(), tmpStr.begin(), ::tolower); - - if ((tmpStr.compare("debug")) == 0) { - sctpParams.logLevel = MDCLOG_DEBUG; - } else if ((tmpStr.compare("info")) == 0) { - sctpParams.logLevel = MDCLOG_INFO; - } else if ((tmpStr.compare("warning")) == 0) { - sctpParams.logLevel = MDCLOG_WARN; - } else if ((tmpStr.compare("error")) == 0) { - sctpParams.logLevel = MDCLOG_ERR; - } else { - mdclog_write(MDCLOG_ERR, "illegal loglevel = %s. Set loglevel to MDCLOG_INFO", tmpStr.c_str()); - sctpParams.logLevel = MDCLOG_INFO; - } - } - mdclog_level_set(sctpParams.logLevel); - - tmpStr = conf.getStringValue("volume"); + auto tmpStr = conf.getStringValue("volume"); if (tmpStr.length() == 0) { mdclog_write(MDCLOG_ERR, "illegal volume."); return -1; @@ -288,16 +244,15 @@ int buildConfiguration(sctp_params_t &sctpParams) { sctpParams.podName.c_str()); if (mdclog_level_get() >= MDCLOG_INFO) { - mdclog_mdc_add("RMR Port", to_string(sctpParams.rmrPort).c_str()); - mdclog_mdc_add("LogLevel", to_string(sctpParams.logLevel).c_str()); - mdclog_mdc_add("volume", sctpParams.volume); - mdclog_mdc_add("tmpLogFilespec", tmpLogFilespec); - mdclog_mdc_add("my ip", sctpParams.myIP.c_str()); - mdclog_mdc_add("pod name", sctpParams.podName.c_str()); + mdclog_write(MDCLOG_DEBUG,"RMR Port: %s", to_string(sctpParams.rmrPort).c_str()); + mdclog_write(MDCLOG_DEBUG,"LogLevel: %s", to_string(sctpParams.logLevel).c_str()); + mdclog_write(MDCLOG_DEBUG,"volume: %s", sctpParams.volume); + mdclog_write(MDCLOG_DEBUG,"tmpLogFilespec: %s", tmpLogFilespec); + mdclog_write(MDCLOG_DEBUG,"my ip: %s", sctpParams.myIP.c_str()); + mdclog_write(MDCLOG_DEBUG,"pod name: %s", sctpParams.podName.c_str()); mdclog_write(MDCLOG_INFO, "running parameters for instance : %s", sctpParams.ka_message); } - mdclog_mdc_clean(); // Files written to the current working directory boostLogger = logging::add_file_log( @@ -339,6 +294,7 @@ void startPrometheus(sctp_params_t &sctpParams) { sctpParams.prometheusExposer->RegisterCollectable(sctpParams.prometheusRegistry); } #ifndef UNIT_TEST + int main(const int argc, char **argv) { sctp_params_t sctpParams; @@ -355,8 +311,6 @@ int main(const int argc, char **argv) { unsigned num_cpus = std::thread::hardware_concurrency(); init_log(); - mdclog_level_set(MDCLOG_INFO); - if (std::signal(SIGINT, catch_function) == SIG_ERR) { mdclog_write(MDCLOG_ERR, "Error initializing SIGINT"); exit(1); @@ -562,11 +516,14 @@ int buildInotify(sctp_params_t &sctpParams) { void listener(sctp_params_t *params) { int num_of_SCTP_messages = 0; auto totalTime = 0.0; - mdclog_mdc_clean(); - mdclog_level_set(params->logLevel); - std::thread::id this_id = std::this_thread::get_id(); //save cout + auto pod_name = std::getenv("POD_NAME"); + auto container_name = std::getenv("CONTAINER_NAME"); + auto service_name = std::getenv("SERVICE_NAME"); + auto host_name = std::getenv("HOST_NAME"); + auto system_name = std::getenv("SYSTEM_NAME"); + auto pid = std::to_string(getpid()).c_str(); streambuf *oldCout = cout.rdbuf(); ostringstream memCout; // create new cout @@ -578,7 +535,12 @@ void listener(sctp_params_t *params) { char tid[32]; memcpy(tid, memCout.str().c_str(), memCout.str().length() < 32 ? memCout.str().length() : 31); tid[memCout.str().length()] = 0; - mdclog_mdc_add("thread id", tid); + mdclog_mdc_add("SYSTEM_NAME", system_name); + mdclog_mdc_add("HOST_NAME", host_name); + mdclog_mdc_add("SERVICE_NAME", service_name); + mdclog_mdc_add("CONTAINER_NAME", container_name); + mdclog_mdc_add("POD_NAME", pod_name); + mdclog_mdc_add("PID", pid); if (mdclog_level_get() >= MDCLOG_DEBUG) { mdclog_write(MDCLOG_DEBUG, "started thread number %s", tid); @@ -806,7 +768,6 @@ void handleConfigChange(sctp_params_t *sctpParams) { p.string().c_str(), strerror(errno)); return; } - auto tmpStr = conf.getStringValue("loglevel"); if (tmpStr.length() == 0) { mdclog_write(MDCLOG_ERR, "illegal loglevel. Set loglevel to MDCLOG_INFO"); @@ -831,8 +792,6 @@ void handleConfigChange(sctp_params_t *sctpParams) { sctpParams->logLevel = MDCLOG_INFO; } mdclog_level_set(sctpParams->logLevel); - - tmpStr = conf.getStringValue("trace"); if (tmpStr.length() == 0) { mdclog_write(MDCLOG_ERR, "illegal trace. Set trace to stop"); @@ -971,17 +930,13 @@ int setSocketNoBlocking(int socket) { auto flags = fcntl(socket, F_GETFL, 0); if (flags == -1) { - mdclog_mdc_add("func", "fcntl"); mdclog_write(MDCLOG_ERR, "%s, %s", __FUNCTION__, strerror(errno)); - mdclog_mdc_clean(); return -1; } flags = (unsigned) flags | (unsigned) O_NONBLOCK; if (fcntl(socket, F_SETFL, flags) == -1) { - mdclog_mdc_add("func", "fcntl"); mdclog_write(MDCLOG_ERR, "%s, %s", __FUNCTION__, strerror(errno)); - mdclog_mdc_clean(); return -1; } -- 2.16.6