syncd/MetadataLogger.cpp (64 lines of code) (raw):

#include "MetadataLogger.h" extern "C"{ #include "saimetadata.h" } #include "swss/logger.h" #include <stdarg.h> #define MAX_BUFFER_LENGTH (0x1000) using namespace syncd; static void sai_meta_log_syncd( _In_ sai_log_level_t logLevel, _In_ const char *file, _In_ int line, _In_ const char *func, _In_ const char *format, ...) __attribute__ ((format (printf, 5, 6))); static void sai_meta_log_syncd( _In_ sai_log_level_t logLevel, _In_ const char *file, _In_ int line, _In_ const char *func, _In_ const char *format, ...) { // SWSS_LOG_ENTER() is omitted since this is logging for metadata char buffer[MAX_BUFFER_LENGTH]; va_list ap; va_start(ap, format); vsnprintf(buffer, MAX_BUFFER_LENGTH, format, ap); va_end(ap); swss::Logger::Priority priority = swss::Logger::SWSS_NOTICE; switch (logLevel) { case SAI_LOG_LEVEL_DEBUG: priority = swss::Logger::SWSS_DEBUG; break; case SAI_LOG_LEVEL_INFO: priority = swss::Logger::SWSS_INFO; break; case SAI_LOG_LEVEL_ERROR: priority = swss::Logger::SWSS_ERROR; fprintf(stderr, "ERROR: %s: %s\n", func, buffer); break; case SAI_LOG_LEVEL_WARN: priority = swss::Logger::SWSS_WARN; fprintf(stderr, "WARN: %s: %s\n", func, buffer); break; case SAI_LOG_LEVEL_CRITICAL: priority = swss::Logger::SWSS_CRIT; break; default: priority = swss::Logger::SWSS_NOTICE; break; } swss::Logger::getInstance().write(priority, ":- %s: %s", func, buffer); } void MetadataLogger::initialize() { SWSS_LOG_ENTER(); SWSS_LOG_NOTICE("initializeing metadata log function"); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsuggest-attribute=format" sai_metadata_log = &sai_meta_log_syncd; #pragma GCC diagnostic pop }