int WLog_CallbackAppender_WriteMessage(wLog* log, wLogCallbackAppender* appender, wLogMessage* message) { char prefix[WLOG_MAX_PREFIX_SIZE]; message->PrefixString = prefix; WLog_Layout_GetMessagePrefix(log, appender->Layout, message); if (appender->message) { appender->message(message); } else { return -1; } return 1; }
int WLog_FileAppender_WriteMessage(wLog* log, wLogFileAppender* appender, wLogMessage* message) { FILE* fp; char prefix[WLOG_MAX_PREFIX_SIZE]; fp = appender->FileDescriptor; if (!fp) return -1; message->PrefixString = prefix; WLog_Layout_GetMessagePrefix(log, appender->Layout, message); fprintf(fp, "%s%s\n", message->PrefixString, message->TextString); fflush(fp); /* slow! */ return 1; }
static BOOL WLog_UdpAppender_WriteMessage(wLog* log, wLogAppender* appender, wLogMessage* message) { char prefix[WLOG_MAX_PREFIX_SIZE]; wLogUdpAppender *udpAppender; if (!log || !appender || !message) return FALSE; udpAppender = (wLogUdpAppender *)appender; message->PrefixString = prefix; WLog_Layout_GetMessagePrefix(log, appender->Layout, message); _sendto(udpAppender->sock, message->PrefixString, strlen(message->PrefixString), 0, &udpAppender->targetAddr, udpAppender->targetAddrLen); _sendto(udpAppender->sock, message->TextString, strlen(message->TextString), 0, &udpAppender->targetAddr, udpAppender->targetAddrLen); _sendto(udpAppender->sock, "\n", 1, 0, &udpAppender->targetAddr, udpAppender->targetAddrLen); return TRUE; }
static BOOL WLog_ConsoleAppender_WriteMessage(wLog* log, wLogAppender* appender, wLogMessage* message) { FILE* fp; char prefix[WLOG_MAX_PREFIX_SIZE]; wLogConsoleAppender *consoleAppender; if (!appender) return FALSE; consoleAppender = (wLogConsoleAppender *)appender; message->PrefixString = prefix; WLog_Layout_GetMessagePrefix(log, appender->Layout, message); #ifdef _WIN32 if (consoleAppender->outputStream == WLOG_CONSOLE_DEBUG) { char MessageString[4096]; sprintf_s(MessageString, sizeof(MessageString), "%s%s\n", message->PrefixString, message->TextString); OutputDebugStringA(MessageString); return TRUE; } #endif #ifdef ANDROID (void)fp; android_LogPriority level; switch(message->Level) { case WLOG_TRACE: level = ANDROID_LOG_VERBOSE; break; case WLOG_DEBUG: level = ANDROID_LOG_DEBUG; break; case WLOG_INFO: level = ANDROID_LOG_INFO; break; case WLOG_WARN: level = ANDROID_LOG_WARN; break; case WLOG_ERROR: level = ANDROID_LOG_ERROR; break; case WLOG_FATAL: level = ANDROID_LOG_FATAL; break; case WLOG_OFF: level = ANDROID_LOG_SILENT; break; default: level = ANDROID_LOG_FATAL; break; } if (level != ANDROID_LOG_SILENT) __android_log_print(level, log->Name, "%s%s", message->PrefixString, message->TextString); #else switch(consoleAppender->outputStream) { case WLOG_CONSOLE_STDOUT: fp = stdout; break; case WLOG_CONSOLE_STDERR: fp = stderr; break; default: switch(message->Level) { case WLOG_TRACE: case WLOG_DEBUG: case WLOG_INFO: fp = stdout; break; default: fp = stderr; break; } break; } if (message->Level != WLOG_OFF) fprintf(fp, "%s%s\n", message->PrefixString, message->TextString); #endif return TRUE; }