in src/generic/log.c [29:130]
int __declspec(dllexport) log_Init(Tcl_Interp * interp)
{
LogData *logData = NULL;
LogPlugIn *logtofile = NULL;
LogPlugIn *logtochannel = NULL;
LogPlugIn *logtocmd = NULL;
LogPlugIn *logtosyslog = NULL;
/* --------------------------------------------------------------------------
* interpreter running ?
* ----------------------------------------------------------------------- */
if (interp == NULL)
return TCL_ERROR;
/* --------------------------------------------------------------------------
* init internal data, and register with interp
* ----------------------------------------------------------------------- */
logData = createLogData();
WebAssertData(interp, logData, "log", TCL_ERROR);
/* --------------------------------------------------------------------------
* register data with interp
* ----------------------------------------------------------------------- */
Tcl_SetAssocData(interp, WEB_LOG_ASSOC_DATA,
destroyLogData, (ClientData) logData);
/* --------------------------------------------------------------------------
* register commands
* ----------------------------------------------------------------------- */
Tcl_CreateObjCommand(interp, "web::log",
Web_Log,
(ClientData) logData, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "web::loglevel",
Web_LogFilter,
(ClientData) logData, (Tcl_CmdDeleteProc *) NULL);
/* for compatibility with Websh 3.5 and earlier*/
Tcl_CreateObjCommand(interp, "web::logfilter",
Web_LogFilter,
(ClientData) logData, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "web::logdest",
Web_LogDest,
(ClientData) logData, (Tcl_CmdDeleteProc *) NULL);
/* --------------------------------------------------------------------------
* register log handler "channel"
* ----------------------------------------------------------------------- */
logtochannel = createLogPlugIn();
WebAssertData(interp, logtochannel, "log_Init/logtochannel plugin",
TCL_ERROR)
logtochannel->constructor = createLogToChannel;
logtochannel->destructor = destroyLogToChannel;
logtochannel->handler = logToChannel;
registerLogPlugIn(interp, "channel", logtochannel);
/* --------------------------------------------------------------------------
* register log handler "file"
* ----------------------------------------------------------------------- */
logtofile = createLogPlugIn();
WebAssertData(interp, logtofile, "log_Init/logtofile plugin", TCL_ERROR)
logtofile->constructor = createLogToFile;
logtofile->destructor = destroyLogToFile;
logtofile->handler = logToFile;
registerLogPlugIn(interp, "file", logtofile);
/* --------------------------------------------------------------------------
* register log handler "command"
* ----------------------------------------------------------------------- */
logtocmd = createLogPlugIn();
WebAssertData(interp, logtocmd, "log_Init/logtocmd plugin", TCL_ERROR)
logtocmd->constructor = createLogToCmd;
logtocmd->destructor = destroyLogToCmd;
logtocmd->handler = logToCmd;
registerLogPlugIn(interp, "command", logtocmd);
/* --------------------------------------------------------------------------
* register log handler "syslog"
* ----------------------------------------------------------------------- */
#ifndef WIN32
logtosyslog = createLogPlugIn();
WebAssertData(interp, logtocmd, "log_Init/logtosyslog plugin", TCL_ERROR)
logtosyslog->constructor = createLogToSyslog;
logtosyslog->destructor = destroyLogToSyslog;
logtosyslog->handler = logToSyslog;
registerLogPlugIn(interp, "syslog", logtosyslog);
#endif
/* --------------------------------------------------------------------------
* done
* ----------------------------------------------------------------------- */
return TCL_OK;
}