提交 6a992e9e 编写于 作者: S Stephen R. van den Berg 提交者: Junio C Hamano

git-daemon: use LOG_PID, simplify logging code

Make git-daemon use LOG_PID like most daemons, instead of prepending the
pid to the message ourselves, when using syslog(3).

Simplify the logging code by setting stderr to line buffered, instead of
building a single string and writing it out with a single write(2).

Give an extra log message at the daemon start-up.
Signed-off-by: NStephen R. van den Berg <srb@cuci.nl>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 df0daf8a
......@@ -78,38 +78,19 @@ static struct interp interp_table[] = {
static void logreport(int priority, const char *err, va_list params)
{
/* We should do a single write so that it is atomic and output
* of several processes do not get intermingled. */
char buf[1024];
int buflen;
int maxlen, msglen;
/* sizeof(buf) should be big enough for "[pid] \n" */
buflen = snprintf(buf, sizeof(buf), "[%ld] ", (long) getpid());
maxlen = sizeof(buf) - buflen - 1; /* -1 for our own LF */
msglen = vsnprintf(buf + buflen, maxlen, err, params);
if (log_syslog) {
char buf[1024];
vsnprintf(buf, sizeof(buf), err, params);
syslog(priority, "%s", buf);
return;
}
/* maxlen counted our own LF but also counts space given to
* vsnprintf for the terminating NUL. We want to make sure that
* we have space for our own LF and NUL after the "meat" of the
* message, so truncate it at maxlen - 1.
*/
if (msglen > maxlen - 1)
msglen = maxlen - 1;
else if (msglen < 0)
msglen = 0; /* Protect against weird return values. */
buflen += msglen;
buf[buflen++] = '\n';
buf[buflen] = '\0';
write_in_full(2, buf, buflen);
else {
/* Since stderr is set to linebuffered mode, the
* logging of different processes will not overlap
*/
fprintf(stderr, "[%d] ", (int)getpid());
vfprintf(stderr, err, params);
fputc('\n', stderr);
}
}
static void logerror(const char *err, ...)
......@@ -1178,9 +1159,11 @@ int main(int argc, char **argv)
}
if (log_syslog) {
openlog("git-daemon", 0, LOG_DAEMON);
openlog("git-daemon", LOG_PID, LOG_DAEMON);
set_die_routine(daemon_die);
}
else
setlinebuf(stderr); /* avoid splitting a message in the middle */
if (inetd_mode && (group_name || user_name))
die("--user and --group are incompatible with --inetd");
......@@ -1233,8 +1216,10 @@ int main(int argc, char **argv)
return execute(peer);
}
if (detach)
if (detach) {
daemonize();
loginfo("Ready to rumble");
}
else
sanitize_stdfds();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册