void ZKMORLogErrorWithSourceInfo(unsigned source, const char* fileName, int lineNumber, CFStringRef format, ...) { ZKMORWriteLogToken* token = GlobalLogger()->GetWriteLogToken(kZKMORLogLevel_Error); va_list argList; va_start(argList, format); if (token) { token->Log(kZKMORLogLevel_Error, source, CFSTR("File %s line %i:\n\t"), fileName, lineNumber); token->ContinueLogv(format, argList); GlobalLogger()->ReturnWriteLogToken(token); } va_end(argList); }
void ZKMORLoggerSetLogLevel(unsigned level) { GlobalLogger()->SetLogLevel(level); }
unsigned ZKMORLoggerGetLogLevel() { return GlobalLogger()->GetLogLevel(); }
void ZKMORLoggerSetIsLogging(int isLogging) { GlobalLogger()->SetIsLogging(isLogging); }
int ZKMORLoggerIsLogging() { return GlobalLogger()->IsLogging(); }
void ZKMORLogv(unsigned level, unsigned source, CFStringRef format, va_list args) { GlobalLogger()->Logv(level, source, format, args); }
void ApplicationBase::handle_exception(std::exception &ex) { GlobalLogger().LogException(ex); if(!GetTrapExceptions()) throw; // We're inside of a catch handler, so this rethrows }