Ack tested.
-AVM
On 11/3/2016 1:58 PM, Anders Widell wrote:
> Hi!
>
> Yes agreed, using this mechanism also for trace is a logical next
> step. It should be fairly easy to implement once this MDS logging
> mechanism is fully in place.
>
> regards,
>
> Anders Widell
>
> On 11/03/2016 06:14 AM, A V Mahesh wrote:
>> Hi Anders Widell,
>>
>> >>Using a standardized format means that OpenSAF can more easily be
>> used together with third-party log servers and log processing tools.
>>
>> I know the complexity of implementing , but i putting my proposal :
>>
>> Even our TRACE`s are not formatted according to the protocol
>> described in rfc5424, but they have TRACE level (T5, T8, T2 )
>>
>> and any way we are using separate process `osaftransportd` for MDS
>> loging, so why don't we use TRACE`s even for MDS logging and let
>> us have common logic
>> at TRACE library which formatted according to the protocol described
>> in rfc5424 based on exported variable like `export
>> LOG_FARMAT_RFC5424=true`
>>
>> -AVM
>>
>>
>> On 11/2/2016 4:59 PM, Anders Widell wrote:
>>> See replies inline, marked AndersW>.
>>>
>>> regards,
>>>
>>> Anders Widell
>>>
>>>
>>> On 11/02/2016 11:16 AM, A V Mahesh wrote:
>>>> Hi Anders Widell,
>>>>
>>>> Thanks the attached patches works. Following are my initial comments:
>>>>
>>>> 1) Based on the current format , user will not be able to
>>>> distinguished the category of CRITICAL , ERR , NOTIFY , INFO , DBG
>>> AndersW> You can distinguish them, but the priority level is
>>> presented in a numerical format which arguably is not so
>>> human-readable. The reason is that the messages are formatted
>>> according to the protocol described in rfc5424. Using a standardized
>>> format means that OpenSAF can more easily be used together with
>>> third-party log servers and log processing tools. I supposed I could
>>> translate the log priority level into a human-readable string before
>>> writing the log messages to disk. But this would mean that the
>>> format on disk will no longer comply with the rfc, and it would also
>>> cost some performance. In most cases the MDS log messages will be
>>> rotated away without anyone ever reading them - so instead I would
>>> propose to create an offline log parser that can translate the log
>>> priority level. This tool could later be extended with filtering
>>> capabilities etc. What do you think?
>>>>
>>>> ================================================================================================================================
>>>>
>>>>
>>>>
>>>> <135>1 2016-11-02T15:37:52.179638+05:30 SC-1 osafimmloadd 30875
>>>> 41517 - << mcm_msg_encode_full_or_flat_and_send
>>>> <134>1 2016-11-02T15:37:52.179663+05:30 SC-1 osafimmloadd 30875
>>>> 41518 - MDTM: User Sending Data lenght=384 From svc_id =
>>>> IMMA_OM(26) to svc_id = IMMND(25)
>>>> <135>1 2016-11-02T15:37:52.179691+05:30 SC-1 osafimmloadd 30875
>>>> 41519 - MDTM:Sending message with Service Seqno=695, TO
>>>> Dest_Tipc_id=<0x01001001:821559312>
>>>> <134>1 2016-11-02T15:37:52.179716+05:30 SC-1 osafimmloadd 30875
>>>> 41520 - MDTM: TIPC Sending Len=423
>>>> <134>1 2016-11-02T15:37:52.179753+05:30 SC-1 osafimmnd 30642 117944
>>>> - MDTM: Data received: Processing data
>>>> <135>1 2016-11-02T15:37:52.179768+05:30 SC-1 osafimmnd 30642 117945
>>>> - MDTM: size: 423 anc is NULL
>>>> <135>1 2016-11-02T15:37:52.179777+05:30 SC-1 osafimmnd 30642 117946
>>>> - >> mds_svc_tbl_get_svc_h
>>>>
>>>> ================================================================================================================================
>>>>
>>>>
>>>>
>>>> We use to have it *DBG/**INFO/***ERR/*****NOTIFY ***prefix, let us
>>>> restore it , other wise it become complex to debug , when
>>>> `MDS_LOG_LEVEL=5`
>>>>
>>>> ================================================================================================================================
>>>>
>>>>
>>>>
>>>> Nov 15 3:10:10.381033 osafimmnd[3912] *DBG *|MDTM: Recd
>>>> Unfragmented message with SVC Seq num =810, from src Adest =
>>>> <72075197334002405>
>>>> Nov 15 3:10:10.381051 osafimmnd[3912] *INFO *|MDTM: User Recd msg
>>>> len=56595
>>>>
>>>> Oct 6 11:57:20.040978 osafamfnd[4492] *ERR *|MCM_API :
>>>> vdest_chg_role : VDEST id = 0 Doesn't exist
>>>> Oct 6 11:57:20.041824 osafamfnd[4492] *NOTIFY *|MDTM: install_tipc
>>>> : svc_id = IMMA_OM(26), vdest=65535
>>>>
>>>> ================================================================================================================================
>>>>
>>>>
>>>>
>>>> 2) The new format should be explained in some README `<135>1
>>>> 2016-11-02T15:37:52.179638+05:30 SC-1 osafimmloadd 30875 41517`
>>> AndersW> The format is explained in rfc5424. I can insert a
>>> reference to the RFC in some README file.
>>>>
>>>>
>>>> -AVM
>>>>
>>>>
>>>> On 11/2/2016 2:44 PM, Anders Widell wrote:
>>>>> Hi!
>>>>>
>>>>> I tried applying the patches on the latest from opensaf-staging,
>>>>> and building with GCC 4.8.4. I works for me, so it could be that
>>>>> the patches have been corrupted by the mail system. Please find
>>>>> the patches attached in a tar file. I have removed the pref
>>>>> variable in the attached patches, as you suggested.
>>>>>
>>>>> regards,
>>>>> Anders Widell
>>>>>
>>>>>
>>>>> On 11/02/2016 06:51 AM, A V Mahesh wrote:
>>>>>> Hi Anders Widell,
>>>>>>
>>>>>> Can you please re-send the v1 patches fixing following three
>>>>>> issues , so that I can proceed for test.
>>>>>>
>>>>>>
>>>>>> 1) build fails with gcc version 4.8.3
>>>>>>
>>>>>> libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../..
>>>>>> -I../../../.. -I../../../../osaf/libs/saf/include
>>>>>> -I../../../../osaf/libs/core/include
>>>>>> -I../../../../osaf/libs/core/leap/include
>>>>>> -I../../../../osaf/libs/core/mds/include
>>>>>> -I../../../../osaf/libs/core/common/include
>>>>>> -I../../../../osaf/libs/core/cplusplus -std=gnu++11 -Wall
>>>>>> -fno-strict-aliasing -Werror -fPIC -D__STDC_FORMAT_MACROS
>>>>>> -D_FORTIFY_SOURCE=2 -fstack-protector -DINTERNAL_VERSION_ID=\"\"
>>>>>> -O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2
>>>>>> -fstack-protector -funwind-tables -fasynchronous-unwind-tables
>>>>>> -MT libmds_la-mds_log.lo -MD -MP -MF .deps/libmds_la-mds_log.Tpo
>>>>>> -c mds_log.cc -fPIC -DPIC -o .libs/libmds_la-mds_log.o
>>>>>> mds_log.cc:37:50: fatal error:
>>>>>> osaf/libs/core/cplusplus/base/buffer.h: No such file or directory
>>>>>> #include "osaf/libs/core/cplusplus/base/buffer.h"
>>>>>>
>>>>>> 2) [PATCH 3 of 3] need to be re-based It fails on latest stating
>>>>>> ( but applies clean on change-set : 8200 )
>>>>>>
>>>>>> 3) We can remove pref[50] varible
>>>>>>
>>>>>> --- a/osaf/libs/core/mds/mds_main.c
>>>>>> +++ b/osaf/libs/core/mds/mds_main.c
>>>>>>
>>>>>> @@ -558,7 +557,7 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
>>>>>> char buff[50], pref[50];
>>>>>>
>>>>>> -AVM
>>>>>>
>>>>>>
>>>>>> On 11/2/2016 10:47 AM, A V Mahesh wrote:
>>>>>>> Hi Anders Widell,
>>>>>>>
>>>>>>> I used hg command patches applied cleanly on `change-set :
>>>>>>> 8200` .
>>>>>>>
>>>>>>> But for your information [PATCH 3 of 3] need to be re-based ,
>>>>>>> it fails
>>>>>>> on latest stating.
>>>>>>>
>>>>>>> =============================================================================
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> # hg import /avm/2015_1.patch /avm/2015_2.patch /avm/2015_3.patch
>>>>>>> --no-commit
>>>>>>> applying /avm/2015_1.patch
>>>>>>> applying /avm/2015_2.patch
>>>>>>> applied to working directory
>>>>>>> applying /avm/2015_3.patch
>>>>>>> patching file
>>>>>>> osaf/services/infrastructure/dtms/scripts/osaf-transport.in
>>>>>>> Hunk #1 FAILED at 33
>>>>>>> Hunk #2 FAILED at 99
>>>>>>> 2 out of 2 hunks FAILED -- saving rejects to file
>>>>>>> osaf/services/infrastructure/dtms/scripts/osaf-transport.in.rej
>>>>>>> unable to find
>>>>>>> 'osaf/services/infrastructure/dtms/transport/Makefile.am'
>>>>>>> for patching
>>>>>>> 2 out of 2 hunks FAILED -- saving rejects to file
>>>>>>> osaf/services/infrastructure/dtms/transport/Makefile.am.rej
>>>>>>> unable to find
>>>>>>> 'osaf/services/infrastructure/dtms/transport/main.cc' for
>>>>>>> patching
>>>>>>> 2 out of 2 hunks FAILED -- saving rejects to file
>>>>>>> osaf/services/infrastructure/dtms/transport/main.cc.rej
>>>>>>> unable to find
>>>>>>> 'osaf/services/infrastructure/dtms/transport/transport_monitor.cc'
>>>>>>> for
>>>>>>> patching
>>>>>>> 3 out of 3 hunks FAILED -- saving rejects to file
>>>>>>> osaf/services/infrastructure/dtms/transport/transport_monitor.cc.rej
>>>>>>>
>>>>>>> unable to find
>>>>>>> 'osaf/services/infrastructure/dtms/transport/transport_monitor.h'
>>>>>>> for
>>>>>>> patching
>>>>>>> 4 out of 4 hunks FAILED -- saving rejects to file
>>>>>>> osaf/services/infrastructure/dtms/transport/transport_monitor.h.rej
>>>>>>> osaf/services/infrastructure/dtms/transport/Makefile.am: No such
>>>>>>> file or
>>>>>>> directory
>>>>>>> osaf/services/infrastructure/dtms/transport/main.cc: No such
>>>>>>> file or
>>>>>>> directory
>>>>>>> osaf/services/infrastructure/dtms/transport/transport_monitor.cc:
>>>>>>> No
>>>>>>> such file or directory
>>>>>>> osaf/services/infrastructure/dtms/transport/transport_monitor.h:
>>>>>>> No such
>>>>>>> file or directory
>>>>>>> abort: patch failed to apply
>>>>>>>
>>>>>>> =============================================================================
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> -AVM
>>>>>>>
>>>>>>> On 11/1/2016 2:50 PM, Anders Widell wrote:
>>>>>>>> Hi!
>>>>>>>>
>>>>>>>> I tried the patches that were sent out on the list, and they apply
>>>>>>>> cleanly for me. Maybe your version of the patch command does not
>>>>>>>> support renaming files? I tried and it works with version 2.7.1
>>>>>>>> of the
>>>>>>>> patch command. Could you try with patching a newer version of the
>>>>>>>> command, or by using Mercurial instead, e.g. hg qimport; hg
>>>>>>>> qpush ?
>>>>>>>>
>>>>>>>> regards,
>>>>>>>>
>>>>>>>> Anders Widell
>>>>>>>>
>>>>>>>>
>>>>>>>> On 11/01/2016 09:59 AM, A V Mahesh wrote:
>>>>>>>>> Hi Anders Widell,
>>>>>>>>>
>>>>>>>>> It seems you missed to do `hg add
>>>>>>>>> osaf/libs/core/mds/mds_log.cc` ,
>>>>>>>>> while trying to apply [PATCH 2 of 3]
>>>>>>>>>
>>>>>>>>> I getting following error , can you please send the updated
>>>>>>>>> patch.
>>>>>>>>>
>>>>>>>>> ===========================================================
>>>>>>>>>
>>>>>>>>> # patch -p1 </avm/[PATCH 2 of 3].patch
>>>>>>>>> can't find file to patch at input line 4
>>>>>>>>> Perhaps you used the wrong -p or --strip option?
>>>>>>>>> The text leading up to this was:
>>>>>>>>> --------------------------
>>>>>>>>> |diff --git a/osaf/libs/core/mds/mds_log.cc
>>>>>>>>> b/osaf/libs/core/mds/mds_log.cc
>>>>>>>>> |--- a/osaf/libs/core/mds/mds_log.cc
>>>>>>>>> |+++ b/osaf/libs/core/mds/mds_log.cc
>>>>>>>>> --------------------------
>>>>>>>>> File to patch:
>>>>>>>>>
>>>>>>>>> ===========================================================
>>>>>>>>> -AVM
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 10/19/2016 5:18 PM, Anders Widell wrote:
>>>>>>>>>> osaf/libs/core/mds/Makefile.am | 2 +-
>>>>>>>>>> osaf/libs/core/mds/include/mds_dt2c.h | 3 -
>>>>>>>>>> osaf/libs/core/mds/include/mds_log.h | 59 +++--
>>>>>>>>>> osaf/libs/core/mds/mds_dt_tipc.c | 5 +-
>>>>>>>>>> osaf/libs/core/mds/mds_log.cc | 369
>>>>>>>>>> +++++++++++++++++----------------
>>>>>>>>>> osaf/libs/core/mds/mds_main.c | 3 +-
>>>>>>>>>> 6 files changed, 228 insertions(+), 213 deletions(-)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Convert the mds_log.c file to C++ so that it can use C++ classes
>>>>>>>>>> without the
>>>>>>>>>> need for any wrappers.
>>>>>>>>>>
>>>>>>>>>> diff --git a/osaf/libs/core/mds/Makefile.am
>>>>>>>>>> b/osaf/libs/core/mds/Makefile.am
>>>>>>>>>> --- a/osaf/libs/core/mds/Makefile.am
>>>>>>>>>> +++ b/osaf/libs/core/mds/Makefile.am
>>>>>>>>>> @@ -37,7 +37,7 @@ libmds_la_SOURCES = \
>>>>>>>>>> mds_papi.c \
>>>>>>>>>> mds_c_sndrcv.c \
>>>>>>>>>> mds_c_api.c \
>>>>>>>>>> - mds_log.c \
>>>>>>>>>> + mds_log.cc \
>>>>>>>>>> ncs_ada.c \
>>>>>>>>>> ncs_mda.c \
>>>>>>>>>> ncs_vda.c
>>>>>>>>>> diff --git a/osaf/libs/core/mds/include/mds_dt2c.h
>>>>>>>>>> b/osaf/libs/core/mds/include/mds_dt2c.h
>>>>>>>>>> --- a/osaf/libs/core/mds/include/mds_dt2c.h
>>>>>>>>>> +++ b/osaf/libs/core/mds/include/mds_dt2c.h
>>>>>>>>>> @@ -316,9 +316,6 @@ typedef struct mds_mbx_evt_info {
>>>>>>>>>> /* ******************************************** */
>>>>>>>>>> /* ******************************************** */
>>>>>>>>>> -/* Initialize Logging */
>>>>>>>>>> -extern uint32_t mds_log_init(char *log_file_name, char
>>>>>>>>>> *line_prefix);
>>>>>>>>>> -
>>>>>>>>>> /* extern gl_mds_checksum */
>>>>>>>>>> extern uint32_t gl_mds_checksum;
>>>>>>>>>> diff --git a/osaf/libs/core/mds/include/mds_log.h
>>>>>>>>>> b/osaf/libs/core/mds/include/mds_log.h
>>>>>>>>>> --- a/osaf/libs/core/mds/include/mds_log.h
>>>>>>>>>> +++ b/osaf/libs/core/mds/include/mds_log.h
>>>>>>>>>> @@ -22,39 +22,50 @@
>>>>>>>>>> ******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> */
>>>>>>>>>> -#ifndef _MDS_LOG_H
>>>>>>>>>> -#define _MDS_LOG_H
>>>>>>>>>> +#ifndef OSAF_LIBS_CORE_MDS_INCLUDE_MDS_LOG_H_
>>>>>>>>>> +#define OSAF_LIBS_CORE_MDS_INCLUDE_MDS_LOG_H_
>>>>>>>>>> -#include <ncsgl_defs.h>
>>>>>>>>>> -#include "ncs_lib.h"
>>>>>>>>>> +#include <stdint.h>
>>>>>>>>>> +
>>>>>>>>>> +#ifdef __cplusplus
>>>>>>>>>> +extern "C" {
>>>>>>>>>> +#endif
>>>>>>>>>> /* Logging utility functions - Phani */
>>>>>>>>>> -extern uint32_t gl_mds_log_level;
>>>>>>>>>> +extern int gl_mds_log_level;
>>>>>>>>>> -#define NCSMDS_LC_CRITICAL 1
>>>>>>>>>> -#define NCSMDS_LC_ERR 2
>>>>>>>>>> -#define NCSMDS_LC_NOTIFY 3
>>>>>>>>>> -#define NCSMDS_LC_INFO 4
>>>>>>>>>> -#define NCSMDS_LC_DBG 5
>>>>>>>>>> +enum {
>>>>>>>>>> + NCSMDS_LC_CRITICAL = 1,
>>>>>>>>>> + NCSMDS_LC_ERR = 2,
>>>>>>>>>> + NCSMDS_LC_NOTIFY = 3,
>>>>>>>>>> + NCSMDS_LC_INFO = 4,
>>>>>>>>>> + NCSMDS_LC_DBG = 5
>>>>>>>>>> +};
>>>>>>>>>> -#define m_MDS_LOG_CRITICAL if (gl_mds_log_level <
>>>>>>>>>> NCSMDS_LC_CRITICAL) {} else log_mds_critical
>>>>>>>>>> -
>>>>>>>>>> -#define m_MDS_LOG_ERR if (gl_mds_log_level < NCSMDS_LC_ERR)
>>>>>>>>>> {} else
>>>>>>>>>> log_mds_err
>>>>>>>>>> -
>>>>>>>>>> -#define m_MDS_LOG_NOTIFY if (gl_mds_log_level <
>>>>>>>>>> NCSMDS_LC_NOTIFY)
>>>>>>>>>> {} else log_mds_notify
>>>>>>>>>> -
>>>>>>>>>> -#define m_MDS_LOG_INFO if (gl_mds_log_level <
>>>>>>>>>> NCSMDS_LC_INFO) {}
>>>>>>>>>> else log_mds_info
>>>>>>>>>> -
>>>>>>>>>> -#define m_MDS_LOG_DBG if (gl_mds_log_level < NCSMDS_LC_DBG)
>>>>>>>>>> {} else
>>>>>>>>>> log_mds_dbg
>>>>>>>>>> +#define m_MDS_LOG_CRITICAL log_mds_critical
>>>>>>>>>> +#define m_MDS_LOG_ERR log_mds_err
>>>>>>>>>> +#define m_MDS_LOG_NOTIFY log_mds_notify
>>>>>>>>>> +#define m_MDS_LOG_INFO log_mds_info
>>>>>>>>>> +#define m_MDS_LOG_DBG log_mds_dbg
>>>>>>>>>> #define m_MDS_ENTER() m_MDS_LOG_DBG(">> %s", __FUNCTION__)
>>>>>>>>>> #define m_MDS_LEAVE() m_MDS_LOG_DBG("<< %s", __FUNCTION__)
>>>>>>>>>> -extern void log_mds_dbg(char *fmt, ...);
>>>>>>>>>> -extern void log_mds_info(char *fmt, ...);
>>>>>>>>>> -extern void log_mds_notify(char *fmt, ...);
>>>>>>>>>> -extern void log_mds_err(char *fmt, ...);
>>>>>>>>>> -extern void log_mds_critical(char *fmt, ...);
>>>>>>>>>> +uint32_t mds_log_init(const char *log_file_name);
>>>>>>>>>> +void log_mds_dbg(const char *fmt, ...)
>>>>>>>>>> + __attribute__ ((format(printf, 1, 2)));
>>>>>>>>>> +void log_mds_info(const char *fmt, ...)
>>>>>>>>>> + __attribute__ ((format(printf, 1, 2)));
>>>>>>>>>> +void log_mds_notify(const char *fmt, ...)
>>>>>>>>>> + __attribute__ ((format(printf, 1, 2)));
>>>>>>>>>> +void log_mds_err(const char *fmt, ...)
>>>>>>>>>> + __attribute__ ((format(printf, 1, 2)));
>>>>>>>>>> +void log_mds_critical(const char *fmt, ...)
>>>>>>>>>> + __attribute__ ((format(printf, 1, 2)));
>>>>>>>>>> +#ifdef __cplusplus
>>>>>>>>>> +}
>>>>>>>>>> #endif
>>>>>>>>>> +
>>>>>>>>>> +#endif // OSAF_LIBS_CORE_MDS_INCLUDE_MDS_LOG_H_
>>>>>>>>>> diff --git a/osaf/libs/core/mds/mds_dt_tipc.c
>>>>>>>>>> b/osaf/libs/core/mds/mds_dt_tipc.c
>>>>>>>>>> --- a/osaf/libs/core/mds/mds_dt_tipc.c
>>>>>>>>>> +++ b/osaf/libs/core/mds/mds_dt_tipc.c
>>>>>>>>>> @@ -31,6 +31,7 @@
>>>>>>>>>> #include "ncssysf_tsk.h"
>>>>>>>>>> #include "ncssysf_mem.h"
>>>>>>>>>> +#include <inttypes.h>
>>>>>>>>>> #include <stdbool.h>
>>>>>>>>>> #include <stdlib.h>
>>>>>>>>>> #include <sched.h>
>>>>>>>>>> @@ -1107,12 +1108,12 @@ static uint32_t mdtm_process_discovery_e
>>>>>>>>>> m_MDS_LOG_INFO("MDTM: Raising the NODE UP
>>>>>>>>>> event
>>>>>>>>>> for NODE id = %d", node_id);
>>>>>>>>>> uint32_t up_node_id;
>>>>>>>>>> if ((up_node_id =
>>>>>>>>>> m_MDS_GET_NODE_ID_FROM_ADEST(m_MDS_GET_ADEST)) == node_id) {
>>>>>>>>>> - m_MDS_LOG_INFO("MDTM:NODE_UP for
>>>>>>>>>> subtn_ref_val:%lu node_name:%s, node_id:%u addr_family:%d ",
>>>>>>>>>> + m_MDS_LOG_INFO("MDTM:NODE_UP for
>>>>>>>>>> subtn_ref_val:%" PRIu64 " node_name:%s, node_id:%u
>>>>>>>>>> addr_family:%d ",
>>>>>>>>>> (uint64_t)subtn_ref_val,gl_mds_mcm_cb->node_name, node_id,
>>>>>>>>>> AF_TIPC);
>>>>>>>>>> return mds_mcm_node_up(svc_hdl,
>>>>>>>>>> node_id, NULL,
>>>>>>>>>> AF_TIPC, gl_mds_mcm_cb->node_name);
>>>>>>>>>> } else {
>>>>>>>>>> - m_MDS_LOG_INFO("MDTM:NODE_UP for
>>>>>>>>>> subtn_ref_val:%lu node_name:%s, node_id:%u addr_family:%d ",
>>>>>>>>>> + m_MDS_LOG_INFO("MDTM:NODE_UP for
>>>>>>>>>> subtn_ref_val:%" PRIu64 " node_name:%s, node_id:%u
>>>>>>>>>> addr_family:%d ",
>>>>>>>>>> (uint64_t)subtn_ref_val, "REMOTE_NODE", node_id, AF_TIPC);
>>>>>>>>>> return mds_mcm_node_up(svc_hdl,
>>>>>>>>>> node_id, NULL,
>>>>>>>>>> AF_TIPC, "REMOTE_NODE");
>>>>>>>>>> }
>>>>>>>>>> diff --git a/osaf/libs/core/mds/mds_log.c
>>>>>>>>>> b/osaf/libs/core/mds/mds_log.cc
>>>>>>>>>> rename from osaf/libs/core/mds/mds_log.c
>>>>>>>>>> rename to osaf/libs/core/mds/mds_log.cc
>>>>>>>>>> --- a/osaf/libs/core/mds/mds_log.c
>>>>>>>>>> +++ b/osaf/libs/core/mds/mds_log.cc
>>>>>>>>>> @@ -19,233 +19,240 @@
>>>>>>>>>> ..............................................................................
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> DESCRIPTION: MDS LOG APIs
>>>>>>>>>> -******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -*/
>>>>>>>>>> +
>>>>>>>>>> ******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> + */
>>>>>>>>>> -#include "mds_log.h"
>>>>>>>>>> -#include "mds_dt2c.h" /* Include for arch-word
>>>>>>>>>> definitions */
>>>>>>>>>> +#include "osaf/libs/core/mds/include/mds_log.h"
>>>>>>>>>> +#include <sys/time.h>
>>>>>>>>>> +#include <time.h>
>>>>>>>>>> +#include <unistd.h>
>>>>>>>>>> +#include <cstdarg>
>>>>>>>>>> +#include <cstdio>
>>>>>>>>>> +#include <cstring>
>>>>>>>>>> +#include "osaf/libs/core/include/mds_papi.h"
>>>>>>>>>> +#include "osaf/libs/core/include/ncsgl_defs.h"
>>>>>>>>>> +#include "osaf/libs/core/mds/include/mds_dt2c.h"
>>>>>>>>>> -static char *lf = NULL;
>>>>>>>>>> +constexpr static const size_t kMaxMdsFileNameLen = 256;
>>>>>>>>>> static void log_mds(const char *str);
>>>>>>>>>> +
>>>>>>>>>> +int gl_mds_log_level = 3;
>>>>>>>>>> +static char *lf = nullptr;
>>>>>>>>>> static char process_name[MDS_MAX_PROCESS_NAME_LEN];
>>>>>>>>>> +static char mds_log_fname[kMaxMdsFileNameLen];
>>>>>>>>>> /*****************************************************
>>>>>>>>>> Function NAME: get_process_name()
>>>>>>>>>> Returns : <process_name>[<pid> or <tipc_port_ref>]
>>>>>>>>>> *****************************************************/
>>>>>>>>>> -static void get_process_name(void)
>>>>>>>>>> -{
>>>>>>>>>> - char pid_path[1024];
>>>>>>>>>> - uint32_t process_id = getpid();
>>>>>>>>>> - char *token, *saveptr;
>>>>>>>>>> - char *pid_name = NULL;
>>>>>>>>>> +static void get_process_name() {
>>>>>>>>>> + char pid_path[1024];
>>>>>>>>>> + uint32_t process_id = getpid();
>>>>>>>>>> + char *token, *saveptr;
>>>>>>>>>> + char *pid_name = nullptr;
>>>>>>>>>> - sprintf(pid_path, "/proc/%d/cmdline", process_id);
>>>>>>>>>> - FILE* f = fopen(pid_path,"r");
>>>>>>>>>> - if(f){
>>>>>>>>>> - size_t size;
>>>>>>>>>> - size = fread(pid_path, sizeof(char), 1024, f);
>>>>>>>>>> - if(size>0){
>>>>>>>>>> - if('\n' == pid_path[size-1])
>>>>>>>>>> - pid_path[size-1]='\0';
>>>>>>>>>> - }
>>>>>>>>>> - fclose(f);
>>>>>>>>>> - }
>>>>>>>>>> - token = strtok_r(pid_path, "/", &saveptr);
>>>>>>>>>> - while( token != NULL )
>>>>>>>>>> - {
>>>>>>>>>> - pid_name = token;
>>>>>>>>>> - token = strtok_r(NULL, "/", &saveptr);
>>>>>>>>>> - }
>>>>>>>>>> - snprintf(process_name, MDS_MAX_PROCESS_NAME_LEN, "%s[%d]",
>>>>>>>>>> pid_name, process_id);
>>>>>>>>>> - return;
>>>>>>>>>> + snprintf(pid_path, sizeof(pid_path), "/proc/%d/cmdline",
>>>>>>>>>> process_id);
>>>>>>>>>> + FILE* f = fopen(pid_path, "r");
>>>>>>>>>> + if (f) {
>>>>>>>>>> + size_t size;
>>>>>>>>>> + size = fread(pid_path, sizeof(char), 1024, f);
>>>>>>>>>> + if (size > 0) {
>>>>>>>>>> + if ('\n' == pid_path[size-1])
>>>>>>>>>> + pid_path[size-1] = '\0';
>>>>>>>>>> + }
>>>>>>>>>> + fclose(f);
>>>>>>>>>> + }
>>>>>>>>>> + token = strtok_r(pid_path, "/", &saveptr);
>>>>>>>>>> + while (token != nullptr) {
>>>>>>>>>> + pid_name = token;
>>>>>>>>>> + token = strtok_r(nullptr, "/", &saveptr);
>>>>>>>>>> + }
>>>>>>>>>> + snprintf(process_name, MDS_MAX_PROCESS_NAME_LEN, "%s[%d]",
>>>>>>>>>> pid_name,
>>>>>>>>>> + process_id);
>>>>>>>>>> + return;
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : mds_log_init
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : None
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -#define MAX_MDS_FNAME_LEN 256
>>>>>>>>>> -static char mds_log_fname[MAX_MDS_FNAME_LEN];
>>>>>>>>>> + * Funtion Name : mds_log_init
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : None
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +uint32_t mds_log_init(const char *log_file_name) {
>>>>>>>>>> + FILE *fh;
>>>>>>>>>> + memset(process_name, 0, MDS_MAX_PROCESS_NAME_LEN);
>>>>>>>>>> + tzset();
>>>>>>>>>> + get_process_name();
>>>>>>>>>> -uint32_t mds_log_init(char *log_file_name, char
>>>>>>>>>> *line_prefix)
>>>>>>>>>> -{
>>>>>>>>>> - FILE *fh;
>>>>>>>>>> - memset(process_name, 0, MDS_MAX_PROCESS_NAME_LEN);
>>>>>>>>>> - tzset();
>>>>>>>>>> - get_process_name();
>>>>>>>>>> + if (lf != nullptr)
>>>>>>>>>> + return NCSCC_RC_FAILURE;
>>>>>>>>>> - if (lf != NULL)
>>>>>>>>>> - return NCSCC_RC_FAILURE;
>>>>>>>>>> + if (strlen(log_file_name) >= kMaxMdsFileNameLen)
>>>>>>>>>> + return NCSCC_RC_FAILURE;
>>>>>>>>>> - if (strlen(log_file_name) >= MAX_MDS_FNAME_LEN)
>>>>>>>>>> - return NCSCC_RC_FAILURE;
>>>>>>>>>> + snprintf(mds_log_fname, sizeof(mds_log_fname), "%s",
>>>>>>>>>> log_file_name);
>>>>>>>>>> - strcpy(mds_log_fname, log_file_name);
>>>>>>>>>> + lf = mds_log_fname;
>>>>>>>>>> - lf = mds_log_fname;
>>>>>>>>>> + if ((fh = fopen(lf, "a+")) != nullptr) {
>>>>>>>>>> + fclose(fh);
>>>>>>>>>> + log_mds_notify("BEGIN MDS LOGGING| PID=<%s> |
>>>>>>>>>> ARCHW=%x|64bit=%zu\n",
>>>>>>>>>> + process_name, MDS_SELF_ARCHWORD,
>>>>>>>>>> MDS_WORD_SIZE_TYPE);
>>>>>>>>>> + }
>>>>>>>>>> - if ((fh = fopen(lf, "a+")) != NULL) {
>>>>>>>>>> - fclose(fh);
>>>>>>>>>> - log_mds_notify("BEGIN MDS LOGGING| PID=<%s> |
>>>>>>>>>> ARCHW=%x|64bit=%ld\n",
>>>>>>>>>> - process_name, MDS_SELF_ARCHWORD,
>>>>>>>>>> (long)MDS_WORD_SIZE_TYPE);
>>>>>>>>>> - }
>>>>>>>>>> -
>>>>>>>>>> - return NCSCC_RC_SUCCESS;
>>>>>>>>>> + return NCSCC_RC_SUCCESS;
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : log_mds_critical
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : None
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -void log_mds_critical(char *fmt, ...)
>>>>>>>>>> -{
>>>>>>>>>> - char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> - int i;
>>>>>>>>>> - va_list ap;
>>>>>>>>>> + * Funtion Name : log_mds_critical
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : None
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +void log_mds_critical(const char *fmt, ...) {
>>>>>>>>>> + if (gl_mds_log_level < NCSMDS_LC_CRITICAL) return;
>>>>>>>>>> + char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> + int i;
>>>>>>>>>> + va_list ap;
>>>>>>>>>> - i = snprintf(str, sizeof(str), "%s CRITICAL |",
>>>>>>>>>> process_name);
>>>>>>>>>> - va_start(ap, fmt);
>>>>>>>>>> - vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> - va_end(ap);
>>>>>>>>>> - log_mds(str);
>>>>>>>>>> + i = snprintf(str, sizeof(str), "%s CRITICAL |",
>>>>>>>>>> process_name);
>>>>>>>>>> + va_start(ap, fmt);
>>>>>>>>>> + vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> + va_end(ap);
>>>>>>>>>> + log_mds(str);
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : log_mds_err
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : None
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -void log_mds_err(char *fmt, ...)
>>>>>>>>>> -{
>>>>>>>>>> - char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> - int i;
>>>>>>>>>> - va_list ap;
>>>>>>>>>> + * Funtion Name : log_mds_err
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : None
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +void log_mds_err(const char *fmt, ...) {
>>>>>>>>>> + if (gl_mds_log_level < NCSMDS_LC_ERR) return;
>>>>>>>>>> + char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> + int i;
>>>>>>>>>> + va_list ap;
>>>>>>>>>> - i = snprintf(str, sizeof(str), "%s ERR |",
>>>>>>>>>> process_name);
>>>>>>>>>> - va_start(ap, fmt);
>>>>>>>>>> - vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> - va_end(ap);
>>>>>>>>>> - log_mds(str);
>>>>>>>>>> + i = snprintf(str, sizeof(str), "%s ERR |", process_name);
>>>>>>>>>> + va_start(ap, fmt);
>>>>>>>>>> + vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> + va_end(ap);
>>>>>>>>>> + log_mds(str);
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : log_mds_notify
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : None
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -void log_mds_notify(char *fmt, ...)
>>>>>>>>>> -{
>>>>>>>>>> - char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> - int i;
>>>>>>>>>> - va_list ap;
>>>>>>>>>> + * Funtion Name : log_mds_notify
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : None
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +void log_mds_notify(const char *fmt, ...) {
>>>>>>>>>> + if (gl_mds_log_level < NCSMDS_LC_NOTIFY) return;
>>>>>>>>>> + char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> + int i;
>>>>>>>>>> + va_list ap;
>>>>>>>>>> - i = snprintf(str, sizeof(str), "%s NOTIFY |",
>>>>>>>>>> process_name);
>>>>>>>>>> - va_start(ap, fmt);
>>>>>>>>>> - vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> - va_end(ap);
>>>>>>>>>> - log_mds(str);
>>>>>>>>>> + i = snprintf(str, sizeof(str), "%s NOTIFY |", process_name);
>>>>>>>>>> + va_start(ap, fmt);
>>>>>>>>>> + vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> + va_end(ap);
>>>>>>>>>> + log_mds(str);
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : log_mds_info
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : None
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -void log_mds_info(char *fmt, ...)
>>>>>>>>>> -{
>>>>>>>>>> - char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> - int i;
>>>>>>>>>> - va_list ap;
>>>>>>>>>> + * Funtion Name : log_mds_info
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : None
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +void log_mds_info(const char *fmt, ...) {
>>>>>>>>>> + if (gl_mds_log_level < NCSMDS_LC_INFO) return;
>>>>>>>>>> + char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> + int i;
>>>>>>>>>> + va_list ap;
>>>>>>>>>> - i = snprintf(str, sizeof(str), "%s INFO |",
>>>>>>>>>> process_name);
>>>>>>>>>> - va_start(ap, fmt);
>>>>>>>>>> - vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> - va_end(ap);
>>>>>>>>>> - log_mds(str);
>>>>>>>>>> + i = snprintf(str, sizeof(str), "%s INFO |", process_name);
>>>>>>>>>> + va_start(ap, fmt);
>>>>>>>>>> + vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> + va_end(ap);
>>>>>>>>>> + log_mds(str);
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : log_mds_dbg
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : NCSCC_RC_SUCCESS
>>>>>>>>>> -* NCSCC_RC_FAILURE
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -void log_mds_dbg(char *fmt, ...)
>>>>>>>>>> -{
>>>>>>>>>> - char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> - int i;
>>>>>>>>>> - va_list ap;
>>>>>>>>>> + * Funtion Name : log_mds_dbg
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : NCSCC_RC_SUCCESS
>>>>>>>>>> + * NCSCC_RC_FAILURE
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +void log_mds_dbg(const char *fmt, ...) {
>>>>>>>>>> + if (gl_mds_log_level < NCSMDS_LC_DBG) return;
>>>>>>>>>> + char str[MDS_MAX_PROCESS_NAME_LEN + 32];
>>>>>>>>>> + int i;
>>>>>>>>>> + va_list ap;
>>>>>>>>>> - i = snprintf(str, sizeof(str), "%s DBG |",
>>>>>>>>>> process_name);
>>>>>>>>>> - va_start(ap, fmt);
>>>>>>>>>> - vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> - va_end(ap);
>>>>>>>>>> - log_mds(str);
>>>>>>>>>> + i = snprintf(str, sizeof(str), "%s DBG |", process_name);
>>>>>>>>>> + va_start(ap, fmt);
>>>>>>>>>> + vsnprintf(str + i, sizeof(str) - i, fmt, ap);
>>>>>>>>>> + va_end(ap);
>>>>>>>>>> + log_mds(str);
>>>>>>>>>> }
>>>>>>>>>> /*******************************************************************************
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -* Funtion Name : log_mds
>>>>>>>>>> -*
>>>>>>>>>> -* Purpose :
>>>>>>>>>> -*
>>>>>>>>>> -* Return Value : None
>>>>>>>>>> -*
>>>>>>>>>> -*******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -static void log_mds(const char *str)
>>>>>>>>>> -{
>>>>>>>>>> - FILE *fp;
>>>>>>>>>> - struct tm *tstamp_data, tm_info;
>>>>>>>>>> + * Funtion Name : log_mds
>>>>>>>>>> + *
>>>>>>>>>> + * Purpose :
>>>>>>>>>> + *
>>>>>>>>>> + * Return Value : None
>>>>>>>>>> + *
>>>>>>>>>> +
>>>>>>>>>> *******************************************************************************/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> +static void log_mds(const char *str) {
>>>>>>>>>> + FILE *fp;
>>>>>>>>>> - if (lf != NULL && ((fp = fopen(lf, "a+")) != NULL)) {
>>>>>>>>>> - struct timeval tv;
>>>>>>>>>> - char asc_tod[128];
>>>>>>>>>> - char log_string[512];
>>>>>>>>>> - int i;
>>>>>>>>>> + if (lf != nullptr && ((fp = fopen(lf, "a+")) != nullptr)) {
>>>>>>>>>> + struct tm tm_info;
>>>>>>>>>> + struct timeval tv;
>>>>>>>>>> + char asc_tod[128];
>>>>>>>>>> + char log_string[512];
>>>>>>>>>> + int i;
>>>>>>>>>> - gettimeofday(&tv, NULL);
>>>>>>>>>> - tstamp_data = localtime_r(&tv.tv_sec, &tm_info);
>>>>>>>>>> - osafassert(tstamp_data);
>>>>>>>>>> + gettimeofday(&tv, nullptr);
>>>>>>>>>> + struct tm* tstamp_data = localtime_r(&tv.tv_sec, &tm_info);
>>>>>>>>>> + osafassert(tstamp_data);
>>>>>>>>>> - strftime(asc_tod, sizeof(asc_tod), "%b %e %k:%M:%S",
>>>>>>>>>> tstamp_data);
>>>>>>>>>> - i = snprintf(log_string, sizeof(log_string),
>>>>>>>>>> "%s.%06ld %s",
>>>>>>>>>> - asc_tod, tv.tv_usec, str);
>>>>>>>>>> + strftime(asc_tod, sizeof(asc_tod), "%b %e %k:%M:%S",
>>>>>>>>>> tstamp_data);
>>>>>>>>>> + i = snprintf(log_string, sizeof(log_string), "%s.%06ld %s",
>>>>>>>>>> + asc_tod, tv.tv_usec, str);
>>>>>>>>>> - if (i >= sizeof(log_string)) {
>>>>>>>>>> - i = sizeof(log_string);
>>>>>>>>>> - log_string[i - 1] = '\n';
>>>>>>>>>> - } else if (log_string[i - 1] != '\n') {
>>>>>>>>>> - log_string[i] = '\n';
>>>>>>>>>> - i++;
>>>>>>>>>> - }
>>>>>>>>>> + if (i < 0) {
>>>>>>>>>> + i = 1;
>>>>>>>>>> + log_string[i - 1] = '\n';
>>>>>>>>>> + } else if (static_cast<size_t>(i) >= sizeof(log_string)) {
>>>>>>>>>> + i = sizeof(log_string);
>>>>>>>>>> + log_string[i - 1] = '\n';
>>>>>>>>>> + } else if (log_string[i - 1] != '\n') {
>>>>>>>>>> + log_string[i] = '\n';
>>>>>>>>>> + i++;
>>>>>>>>>> + }
>>>>>>>>>> - if (! fwrite(log_string, 1, i, fp)) {
>>>>>>>>>> - fclose(fp);
>>>>>>>>>> - return;
>>>>>>>>>> - }
>>>>>>>>>> + if (fwrite(log_string, 1, i, fp) !=
>>>>>>>>>> static_cast<size_t>(i)) {
>>>>>>>>>> + fclose(fp);
>>>>>>>>>> + return;
>>>>>>>>>> + }
>>>>>>>>>> - fclose(fp);
>>>>>>>>>> - }
>>>>>>>>>> + fclose(fp);
>>>>>>>>>> + }
>>>>>>>>>> }
>>>>>>>>>> -
>>>>>>>>>> -
>>>>>>>>>> diff --git a/osaf/libs/core/mds/mds_main.c
>>>>>>>>>> b/osaf/libs/core/mds/mds_main.c
>>>>>>>>>> --- a/osaf/libs/core/mds/mds_main.c
>>>>>>>>>> +++ b/osaf/libs/core/mds/mds_main.c
>>>>>>>>>> @@ -102,7 +102,6 @@ static void mds_mutex_init_once(void)
>>>>>>>>>> }
>>>>>>>>>> /* global Log level variable */
>>>>>>>>>> -uint32_t gl_mds_log_level = 3;
>>>>>>>>>> uint32_t gl_mds_checksum = 0;
>>>>>>>>>> uint32_t MDS_QUIESCED_TMR_VAL = 80;
>>>>>>>>>> @@ -558,7 +557,7 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
>>>>>>>>>> char buff[50], pref[50];
>>>>>>>>>> snprintf(buff, sizeof(buff), PKGLOGDIR
>>>>>>>>>> "/mds.log");
>>>>>>>>>> memset(pref, 0 ,sizeof(pref));
>>>>>>>>>> - mds_log_init(buff, pref);
>>>>>>>>>> + mds_log_init(buff);
>>>>>>>>>> }
>>>>>>>>>> osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>> Developer Access Program for Intel Xeon Phi Processors
>>>>>>> Access to Intel Xeon Phi processor-based developer platforms.
>>>>>>> With one year of Intel Parallel Studio XE.
>>>>>>> Training and support from Colfax.
>>>>>>> Order your platform today. http://sdm.link/xeonphi
>>>>>>> _______________________________________________
>>>>>>> Opensaf-devel mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>>>>>
>>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel