in azure-protected-vm-secrets/LibraryLogger.cpp [25:139]
void __default_logger(const char* file,
const char* function,
const int line,
LogLevel logLevel,
const char* eventName,
const char* fmt,
...)
{
#ifdef PLATFORM_UNIX
int priority = LOG_INFO;
#else
WORD wType = EVENTLOG_INFORMATION_TYPE;
#endif
char message[MAX_MESSAGE_SIZE];
const char* lvl = "";
switch (logLevel)
{
case LogLevel::Debug:
#if (defined _DEBUG) || (defined DEBUG)
lvl = "[DEBUG]";
#ifdef PLATFORM_UNIX
priority = LOG_DEBUG;
#endif
#else
return;
#endif // DEBUG
break;
case LogLevel::Info:
lvl = "[INFO]";
break;
case LogLevel::Warning:
lvl = "[WARNING]";
#ifdef PLATFORM_UNIX
priority = LOG_WARNING;
#else
wType = EVENTLOG_WARNING_TYPE;
#endif
break;
case LogLevel::Error:
lvl = "[ERROR]";
#ifdef PLATFORM_UNIX
priority = LOG_ERR;
#else
wType = EVENTLOG_ERROR_TYPE;
#endif
break;
default: break;
}
// Remove the path prefix from the source filename
// Take everything after the last slash
const char* p = strrchr(file, DELIMITER);
if (p != NULL)
file = p + 1;
#ifndef PLATFORM_UNIX
HANDLE hApplication = OpenEventLogA(NULL, PROVIDER_NAME);
if (hApplication == NULL)
{
fprintf(stderr, "Failed to open event log. error: %d\n", GetLastError());
return;
}
#endif
// Format the message
va_list args;
va_list args_copy;
va_start(args, fmt);
va_copy(args_copy, args);
int written = snprintf(
message,
MAX_MESSAGE_SIZE,
LOG_FMT,
lvl,
file,
function,
line,
eventName);
if (written > 0 && written < MAX_MESSAGE_SIZE) {
vsnprintf(message + written, MAX_MESSAGE_SIZE - written, fmt, args);
}
va_end(args_copy);
va_end(args);
fprintf(stdout, "%s", message);
#ifdef PLATFORM_UNIX
// Log to systemd journal
sd_journal_send(
"PRIORITY=%i", priority,
"SYSLOG_IDENTIFIER=%s", PROVIDER_NAME,
"CODE_FILE=%s", file,
"CODE_FUNC=%s", function,
"CODE_LINE=%d", line,
"MESSAGE=%s", message,
NULL);
#else
// Log to Windows Event Log
const char* msg = message;
ReportEventA(
hApplication,
wType,
0,
0,
NULL,
1,
0,
&msg,
NULL
);
CloseEventLog(hApplication);
#endif
}