blob: 1fc0114fc3bdce21a32dbc230189d4b16559af52 [file] [log] [blame]
#include <lib/support/logging/CHIPLogging.h>
#include <platform/logging/LogV.h>
#include <stdio.h>
#if (CFG_EASY_LOG_ENABLE == 1)
#include "elog.h"
#if (CFG_EASY_LOG_MODULE_EN == 1)
#include "elog_module.h"
#endif
#endif
namespace chip {
namespace DeviceLayer {
/**
* Called whenever a log message is emitted by Chip or LwIP.
*
* This function is intended be overridden by the application to, e.g.,
* schedule output of queued log entries.
*/
void __attribute__((weak)) OnLogOutput(void) {}
} // namespace DeviceLayer
} // namespace chip
namespace chip {
namespace Logging {
namespace Platform {
/**
* CHIP log output functions.
*/
void LogV(const char * module, uint8_t category, const char * msg, va_list v)
{
#if ASR_LOG_ENABLED && _CHIP_USE_LOGGING
#if ((CFG_EASY_LOG_ENABLE == 1) && (CFG_EASY_LOG_MODULE_EN == 1))
char log_tag[10];
snprintf(log_tag, sizeof(log_tag), "CHIP:%s", module);
switch (category)
{
case kLogCategory_Error:
mlog_e(log_tag, msg, v);
break;
case kLogCategory_Progress:
mlog_i(log_tag, msg, v);
break;
case kLogCategory_Detail:
mlog_v(log_tag, msg, v);
break;
case kLogCategory_Automation:
mlog_d(log_tag, msg, v);
break;
case kLogCategory_None:
mlog_w(log_tag, msg, v);
break;
default:
mlog_a(log_tag, msg, v);
break;
}
#else
printf("CHIP:%s: ", module);
vprintf(msg, v);
printf("\n");
#endif
// Let the application know that a log message has been emitted.
DeviceLayer::OnLogOutput();
#endif
}
void LogV2(const char * module, const char * msg, va_list v)
{
#if ((CFG_EASY_LOG_ENABLE == 1) && (CFG_EASY_LOG_MODULE_EN == 1))
elog_chip_printf(module, msg, v);
#else
printf("%s: ", module);
vprintf(msg, v);
printf("\n");
#endif
}
extern "C" void ASR_LOG(const char * aFormat, ...)
{
va_list v;
va_start(v, aFormat);
LogV2("ASR:", aFormat, v);
va_end(v);
}
} // namespace Platform
} // namespace Logging
} // namespace chip