Skip to content

Commit 22b6696

Browse files
committed
[syncd] Add MetadataLogger class
1 parent 0270a66 commit 22b6696

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed

syncd/MetadataLogger.cpp

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#include "MetadataLogger.h"
2+
3+
extern "C"{
4+
#include "saimetadata.h"
5+
}
6+
7+
#include "swss/logger.h"
8+
9+
#include <stdarg.h>
10+
11+
#define MAX_BUFFER_LENGTH (0x1000)
12+
13+
using namespace syncd;
14+
15+
static void sai_meta_log_syncd(
16+
_In_ sai_log_level_t logLevel,
17+
_In_ const char *file,
18+
_In_ int line,
19+
_In_ const char *func,
20+
_In_ const char *format,
21+
...)
22+
__attribute__ ((format (printf, 5, 6)));
23+
24+
static void sai_meta_log_syncd(
25+
_In_ sai_log_level_t logLevel,
26+
_In_ const char *file,
27+
_In_ int line,
28+
_In_ const char *func,
29+
_In_ const char *format,
30+
...)
31+
{
32+
// SWSS_LOG_ENTER() is omitted since this is logging for metadata
33+
34+
char buffer[MAX_BUFFER_LENGTH];
35+
36+
va_list ap;
37+
va_start(ap, format);
38+
vsnprintf(buffer, MAX_BUFFER_LENGTH, format, ap);
39+
va_end(ap);
40+
41+
swss::Logger::Priority priority = swss::Logger::SWSS_NOTICE;
42+
43+
switch (logLevel)
44+
{
45+
case SAI_LOG_LEVEL_DEBUG:
46+
priority = swss::Logger::SWSS_DEBUG;
47+
break;
48+
case SAI_LOG_LEVEL_INFO:
49+
priority = swss::Logger::SWSS_INFO;
50+
break;
51+
case SAI_LOG_LEVEL_ERROR:
52+
priority = swss::Logger::SWSS_ERROR;
53+
fprintf(stderr, "ERROR: %s: %s", func, buffer);
54+
break;
55+
case SAI_LOG_LEVEL_WARN:
56+
priority = swss::Logger::SWSS_WARN;
57+
fprintf(stderr, "WARN: %s: %s", func, buffer);
58+
break;
59+
case SAI_LOG_LEVEL_CRITICAL:
60+
priority = swss::Logger::SWSS_CRIT;
61+
break;
62+
63+
default:
64+
priority = swss::Logger::SWSS_NOTICE;
65+
break;
66+
}
67+
68+
swss::Logger::getInstance().write(priority, ":- %s: %s", func, buffer);
69+
}
70+
71+
void MetadataLogger::initialize()
72+
{
73+
SWSS_LOG_ENTER();
74+
75+
SWSS_LOG_NOTICE("initializeing metadata log function");
76+
77+
#pragma GCC diagnostic push
78+
#pragma GCC diagnostic ignored "-Wsuggest-attribute=format"
79+
sai_metadata_log = &sai_meta_log_syncd;
80+
#pragma GCC diagnostic pop
81+
}

syncd/MetadataLogger.h

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
namespace syncd
4+
{
5+
class MetadataLogger
6+
{
7+
private:
8+
9+
MetadataLogger() = delete;
10+
~MetadataLogger() = delete;
11+
12+
public:
13+
14+
static void initialize();
15+
};
16+
}

0 commit comments

Comments
 (0)