void setLogFile(const CharString logFileName) { EventLogger eventLogger = _getEventLoggerInstance(); eventLogger->logFile = fopen(logFileName->data, "a"); if(eventLogger->logFile == NULL) { logCritical("Could not open file '%s' for logging", logFileName->data); } }
char *stringForLastError(int errorNumber) { EventLogger eventLogger = _getEventLoggerInstance(); if (eventLogger->systemErrorMessage == NULL) { eventLogger->systemErrorMessage = newCharString(); } #if UNIX return strerror(errorNumber); #elif WINDOWS FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, 0, errorNumber, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), eventLogger->systemErrorMessage->data, (DWORD)(eventLogger->systemErrorMessage->capacity - 1), NULL); // Windows adds newlines for error messages which we must trim char *searchChar = strrchr(eventLogger->systemErrorMessage->data, '\n'); if (searchChar != NULL) { *searchChar = '\0'; } searchChar = strrchr(eventLogger->systemErrorMessage->data, '\r'); if (searchChar != NULL) { *searchChar = '\0'; } return eventLogger->systemErrorMessage->data; #endif }
static void _logMessage(const LogLevel logLevel, const char *message, va_list arguments) { long elapsedTimeInMs; EventLogger eventLogger = _getEventLoggerInstance(); #if WINDOWS ULONGLONG currentTime; #else struct timeval currentTime; #endif if (eventLogger != NULL && logLevel >= eventLogger->logLevel) { CharString formattedMessage = newCharStringWithCapacity(kCharStringLengthDefault * 2); vsnprintf(formattedMessage->data, formattedMessage->capacity, message, arguments); #if WINDOWS currentTime = GetTickCount(); elapsedTimeInMs = (unsigned long)(currentTime - eventLogger->startTimeInMs); #else gettimeofday(¤tTime, NULL); elapsedTimeInMs = ((currentTime.tv_sec - (eventLogger->startTimeInSec + 1)) * 1000) + (currentTime.tv_usec / 1000) + (1000 - eventLogger->startTimeInMs); #endif _printMessage(logLevel, elapsedTimeInMs, getAudioClock()->currentFrame, formattedMessage->data, eventLogger); freeCharString(formattedMessage); } }
char* stringForLastError(int errorNumber) { EventLogger eventLogger = _getEventLoggerInstance(); if(eventLogger->systemErrorMessage == NULL) { eventLogger->systemErrorMessage = newCharString(); } #if UNIX return strerror(errorNumber); #elif WINDOWS FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, 0, errorNumber, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), eventLogger->systemErrorMessage->data, eventLogger->systemErrorMessage->length - 1, NULL); #else charStringCopyCString(eventLogger->systemErrorMessage, "Unknown error"); #endif return eventLogger->systemErrorMessage->data; }
void setLoggingZebraSize(const unsigned long zebraStripeSize) { EventLogger eventLogger = _getEventLoggerInstance(); eventLogger->zebraStripeSize = zebraStripeSize; }
void setLoggingColorEnabled(boolByte useColor) { EventLogger eventLogger = _getEventLoggerInstance(); eventLogger->useColor = useColor; }
void setLogLevel(LogLevel logLevel) { EventLogger eventLogger = _getEventLoggerInstance(); eventLogger->logLevel = logLevel; }
boolByte isLogLevelAtLeast(LogLevel logLevel) { EventLogger eventLogger = _getEventLoggerInstance(); return (eventLogger->logLevel >= logLevel); }
void setLoggingColorScheme(const LogColorScheme colorScheme) { EventLogger eventLogger = _getEventLoggerInstance(); eventLogger->colorScheme = colorScheme; }