1
#include "../../uwsgi.h"
3
extern struct uwsgi_server uwsgi;
5
ssize_t uwsgi_socket_logger(struct uwsgi_logger *ul, char *message, size_t len) {
11
char *comma = strchr(uwsgi.choosen_logger_arg, ',');
17
char *colon = strchr(uwsgi.choosen_logger_arg, ':');
20
ul->addr_len = socket_to_in_addr(uwsgi.choosen_logger_arg, colon, 0, &ul->addr.sa_in);
23
ul->addr_len = socket_to_un_addr(uwsgi.choosen_logger_arg, &ul->addr.sa_un);
26
ul->fd = socket(family, SOCK_DGRAM, 0);
28
uwsgi_error_safe("socket()");
32
memset(&ul->msg, 0, sizeof(struct msghdr));
34
ul->msg.msg_name = &ul->addr;
35
ul->msg.msg_namelen = ul->addr_len;
37
ul->msg.msg_iov = uwsgi_malloc(sizeof(struct iovec) * 2);
38
ul->msg.msg_iov[0].iov_base = ul->data;
39
ul->msg.msg_iov[0].iov_len = strlen(ul->data);
40
ul->msg.msg_iovlen = 2;
44
ul->msg.msg_iov = uwsgi_malloc(sizeof(struct iovec));
45
ul->msg.msg_iovlen = 1;
56
ul->msg.msg_iov[ul->count].iov_base = message;
57
ul->msg.msg_iov[ul->count].iov_len = len;
59
return sendmsg(ul->fd, &ul->msg, 0);
63
void uwsgi_logsocket_register() {
64
uwsgi_register_logger("socket", uwsgi_socket_logger);
67
int uwsgi_logsocket_init() {
71
struct uwsgi_plugin logsocket_plugin = {
74
.on_load = uwsgi_logsocket_register,
75
.init = uwsgi_logsocket_init