|
|
@ -14,18 +14,30 @@
|
|
|
|
#include "server.h"
|
|
|
|
#include "server.h"
|
|
|
|
#include "conf.h"
|
|
|
|
#include "conf.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* global pointer to the server objects, used to reload logs */
|
|
|
|
|
|
|
|
static struct server *__server;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Initialize log writer.
|
|
|
|
* Initialize log writer.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
void
|
|
|
|
slog_init(struct server *s) {
|
|
|
|
slog_init(struct server *s) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__server = s;
|
|
|
|
s->log.self = getpid();
|
|
|
|
s->log.self = getpid();
|
|
|
|
|
|
|
|
|
|
|
|
if(s->cfg->logfile) {
|
|
|
|
if(s->cfg->logfile) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int old_fd = s->log.fd;
|
|
|
|
|
|
|
|
|
|
|
|
s->log.fd = open(s->cfg->logfile,
|
|
|
|
s->log.fd = open(s->cfg->logfile,
|
|
|
|
O_WRONLY | O_APPEND | O_CREAT, S_IRUSR|S_IWUSR);
|
|
|
|
O_WRONLY | O_APPEND | O_CREAT, S_IRUSR|S_IWUSR);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* close old log */
|
|
|
|
|
|
|
|
if (old_fd != -1) {
|
|
|
|
|
|
|
|
close(old_fd);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (s->log.fd != -1)
|
|
|
|
if (s->log.fd != -1)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
@ -35,6 +47,14 @@ slog_init(struct server *s) {
|
|
|
|
s->log.fd = 2; /* stderr */
|
|
|
|
s->log.fd = 2; /* stderr */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Reload log file on SIGHUP
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
|
|
slog_reload() {
|
|
|
|
|
|
|
|
slog_init(__server);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Write log message to disk, or stderr.
|
|
|
|
* Write log message to disk, or stderr.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|