mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-08-28 17:55:39 +00:00
112 lines
2.5 KiB
C
112 lines
2.5 KiB
C
#include "../../uwsgi.h"
|
|
|
|
#include <syslog.h>
|
|
|
|
extern struct uwsgi_server uwsgi;
|
|
|
|
struct uwsgi_syslog_facility {
|
|
const char *name;
|
|
int facility;
|
|
};
|
|
|
|
struct uwsgi_syslog_facility usf[] = {
|
|
|
|
{ "auth", LOG_AUTH, },
|
|
#ifdef LOG_AUTHPRIV
|
|
{ "authpriv", LOG_AUTHPRIV, },
|
|
#endif
|
|
{ "cron", LOG_CRON, },
|
|
{ "daemon", LOG_DAEMON, },
|
|
#ifdef LOG_FTP
|
|
{ "ftp", LOG_FTP, },
|
|
#endif
|
|
#ifdef LOG_INSTALL
|
|
{ "install", LOG_INSTALL },
|
|
#endif
|
|
{ "kern", LOG_KERN, },
|
|
{ "lpr", LOG_LPR, },
|
|
{ "mail", LOG_MAIL, },
|
|
#ifdef INTERNAL_MARK
|
|
{ "mark", INTERNAL_MARK, }, /* INTERNAL */
|
|
#endif
|
|
#ifdef LOG_NETINFO
|
|
{ "netinfo", LOG_NETINFO, },
|
|
#endif
|
|
#ifdef LOG_RAS
|
|
{ "ras", LOG_RAS },
|
|
#endif
|
|
#ifdef LOG_REMOTEAUTH
|
|
{ "remoteauth", LOG_REMOTEAUTH },
|
|
#endif
|
|
{ "news", LOG_NEWS, },
|
|
{ "security", LOG_AUTH }, /* DEPRECATED */
|
|
{ "syslog", LOG_SYSLOG, },
|
|
{ "user", LOG_USER, },
|
|
{ "uucp", LOG_UUCP, },
|
|
{ "local0", LOG_LOCAL0, },
|
|
{ "local1", LOG_LOCAL1, },
|
|
{ "local2", LOG_LOCAL2, },
|
|
{ "local3", LOG_LOCAL3, },
|
|
{ "local4", LOG_LOCAL4, },
|
|
{ "local5", LOG_LOCAL5, },
|
|
{ "local6", LOG_LOCAL6, },
|
|
{ "local7", LOG_LOCAL7, },
|
|
#ifdef LOG_LAUNCHD
|
|
{ "launchd", LOG_LAUNCHD },
|
|
#endif
|
|
{ NULL, -1, }
|
|
};
|
|
|
|
ssize_t uwsgi_syslog_logger(struct uwsgi_logger *ul, char *message, size_t len) {
|
|
|
|
char *syslog_opts;
|
|
int facility = LOG_DAEMON;
|
|
|
|
if (!ul->configured) {
|
|
|
|
setlinebuf(stderr);
|
|
|
|
if (ul->arg == NULL) {
|
|
syslog_opts = "uwsgi";
|
|
}
|
|
else {
|
|
char *colon = strchr(ul->arg, ',');
|
|
if (colon) {
|
|
struct uwsgi_syslog_facility *fn = usf;
|
|
while(fn->name) {
|
|
if (!strcmp(fn->name, colon+1)) {
|
|
facility = fn->facility;
|
|
break;
|
|
}
|
|
fn++;
|
|
}
|
|
syslog_opts = uwsgi_str(ul->arg);
|
|
syslog_opts[colon-ul->arg] = 0;
|
|
}
|
|
else {
|
|
syslog_opts = ul->arg;
|
|
}
|
|
}
|
|
|
|
openlog(syslog_opts, 0, facility);
|
|
|
|
ul->configured = 1;
|
|
}
|
|
|
|
syslog(LOG_INFO, "%.*s", (int) len, message);
|
|
return 0;
|
|
|
|
}
|
|
|
|
void uwsgi_syslog_register() {
|
|
uwsgi_register_logger("syslog", uwsgi_syslog_logger);
|
|
}
|
|
|
|
struct uwsgi_plugin syslog_plugin = {
|
|
|
|
.name = "syslog",
|
|
.on_load = uwsgi_syslog_register,
|
|
|
|
};
|
|
|