void WLog_Appender_Free(wLog* log, wLogAppender* appender) { if (appender) { if (appender->Layout) { WLog_Layout_Free(log, appender->Layout); appender->Layout = NULL; } DeleteCriticalSection(&appender->lock); if (appender->Type == WLOG_APPENDER_CONSOLE) { WLog_ConsoleAppender_Free(log, (wLogConsoleAppender*) appender); } else if (appender->Type == WLOG_APPENDER_FILE) { WLog_FileAppender_Free(log, (wLogFileAppender*) appender); } else if (appender->Type == WLOG_APPENDER_BINARY) { WLog_BinaryAppender_Free(log, (wLogBinaryAppender*) appender); } else if (appender->Type == WLOG_APPENDER_CALLBACK) { WLog_CallbackAppender_Free(log, (wLogCallbackAppender*) appender); } } }
void WLog_Appender_Free(wLog* log, wLogAppender* appender) { if (!appender) return; if (appender->Layout) { WLog_Layout_Free(log, appender->Layout); appender->Layout = NULL; } DeleteCriticalSection(&appender->lock); switch (appender->Type) { case WLOG_APPENDER_CONSOLE: WLog_ConsoleAppender_Free(log, (wLogConsoleAppender*) appender); break; case WLOG_APPENDER_FILE: WLog_FileAppender_Free(log, (wLogFileAppender*) appender); break; case WLOG_APPENDER_BINARY: WLog_BinaryAppender_Free(log, (wLogBinaryAppender*) appender); break; case WLOG_APPENDER_CALLBACK: WLog_CallbackAppender_Free(log, (wLogCallbackAppender*) appender); break; #ifdef HAVE_SYSLOG_H case WLOG_APPENDER_SYSLOG: WLog_SyslogAppender_Free(log, (wLogSyslogAppender *) appender); break; #endif default: fprintf(stderr, "%s: don't know how to free appender type %d\n", __FUNCTION__, appender->Type); break; } }