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

Reply via email to