function old new delta bb_logenv_override - 70 +70 packed_usage 29969 30033 +64 zcip_main 1426 1431 +5 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 2/0 up/down: 139/0) Total: 139 bytes Signed-off-by: Michel Stam <m.stam@fugro.nl> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
		
			
				
	
	
		
			99 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
	Logging and backgrounding
 | 
						|
 | 
						|
By default, bb_[p]error_msg[_and_die] messages go to stderr,
 | 
						|
and of course, usually applets do not auto-background. :)
 | 
						|
 | 
						|
Historically, daemons and inetd services are different.
 | 
						|
 | 
						|
Busybox is trying to provide compatible behavior, thus if an applet
 | 
						|
is emulating an existing utility, it should mimic it. If utility
 | 
						|
auto-backgrounds itself, busybox applet should do the same.
 | 
						|
If utility normally logs to syslog, busybox applet should do
 | 
						|
the same too.
 | 
						|
 | 
						|
However, busybox should not needlessly restrict the freedom
 | 
						|
of the users. And users have different needs and different preferences.
 | 
						|
Some might like logging everything from daemons to syslog.
 | 
						|
Others prefer running stuff under runsv/svlogd and thus would like
 | 
						|
logging to stderr and no daemonization.
 | 
						|
 | 
						|
To help with that, busybox applets should have options to override
 | 
						|
default behavior, whatever that is for a given applet.
 | 
						|
 | 
						|
 | 
						|
Current situation is a bit of a mess:
 | 
						|
 | 
						|
acpid - auto-backgrounds unless -d
 | 
						|
crond - auto-backgrounds unless -f, logs to syslog unless -d or -L.
 | 
						|
    option -d logs to stderr, -L FILE logs to FILE
 | 
						|
devfsd - (obsolete)
 | 
						|
dnsd - option -d makes it background and log to syslog
 | 
						|
fakeidentd - inetd service. Auto-backgrounds and logs to syslog
 | 
						|
    if no -f and no -i and no -w (-i is "inetd service" flag,
 | 
						|
    -w is "inetd-wait service" flag)
 | 
						|
ftpd - inetd service. Logs to syslog with -S, with -v logs to strerr too
 | 
						|
httpd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
 | 
						|
inetd - auto-backgrounds unless -f, logs to syslog unless -e
 | 
						|
klogd - auto-backgrounds unless -n
 | 
						|
syslogd - auto-backgrounds unless -n
 | 
						|
telnetd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
 | 
						|
udhcpc - auto-backgrounds unless -f after lease is obtained,
 | 
						|
    option -b makes it background sooner (when lease attempt
 | 
						|
    fails and retries start),
 | 
						|
    after backgrounding it stops logging to stderr;
 | 
						|
    logs to stderr, but option -S makes it log *also* to syslog
 | 
						|
udhcpd - auto-backgrounds and do not log to stderr unless -f,
 | 
						|
    otherwise logs to stderr, but option -S makes it log *also* to syslog
 | 
						|
zcip - auto-backgrounds and logs *also* to syslog unless -f
 | 
						|
    behaviour can be overridden with experimental LOGGING env.var
 | 
						|
    (can be set to either "none" or "syslog")
 | 
						|
 | 
						|
Total: 13 applets (+1 obsolete),
 | 
						|
 4 log to syslog by default (crond fakeidentd inetd zcip),
 | 
						|
 5 never log to syslog (acpid httpd telnetd klogd syslogd, last two
 | 
						|
 - for obviously correct reasons),
 | 
						|
 there are no daemons which always log to syslog,
 | 
						|
 12 auto-background if not run as inetd services (all except dnsd.
 | 
						|
 Note that there is no "standard" dnsd AFAIKS). But see below
 | 
						|
 for daemons (tcpsvd etc) which don't auto-background.
 | 
						|
 | 
						|
miscutils/crond.c:            logmode = LOGMODE_SYSLOG;
 | 
						|
networking/dnsd.c:            logmode = LOGMODE_SYSLOG;
 | 
						|
networking/ftpd.c:            logmode = LOGMODE_NONE;
 | 
						|
networking/ftpd.c:            logmode |= LOGMODE_SYSLOG;
 | 
						|
networking/inetd.c:           logmode = LOGMODE_SYSLOG;
 | 
						|
networking/isrv_identd.c:     logmode = LOGMODE_SYSLOG;
 | 
						|
networking/telnetd.c:         logmode = LOGMODE_SYSLOG;
 | 
						|
networking/udhcp/dhcpc.c:     logmode = LOGMODE_NONE;
 | 
						|
networking/udhcp/dhcpc.c:     logmode |= LOGMODE_SYSLOG;
 | 
						|
networking/udhcp/dhcpc.c:     logmode &= ~LOGMODE_STDIO;
 | 
						|
networking/udhcp/dhcpd.c:     logmode = LOGMODE_NONE;
 | 
						|
networking/udhcp/dhcpd.c:     logmode |= LOGMODE_SYSLOG;
 | 
						|
networking/zcip.c:            logmode |= LOGMODE_SYSLOG;
 | 
						|
 | 
						|
 | 
						|
These daemons never auto-background and never log to syslog:
 | 
						|
 | 
						|
lpd - inetd service. Has nothing to log so far, though
 | 
						|
dhcprelay - standard behavior
 | 
						|
inotifyd - standard behavior
 | 
						|
runsv - standard behavior
 | 
						|
runsvdir - standard behavior
 | 
						|
svlogd - standard behavior
 | 
						|
tcpsvd, udpsvd - standard behavior
 | 
						|
tftpd - standard behavior
 | 
						|
 | 
						|
 | 
						|
Non-daemons (seems to be use syslog for a good reason):
 | 
						|
 | 
						|
networking/nameif.c:          logmode |= LOGMODE_SYSLOG;
 | 
						|
loginutils/chpasswd.c:        logmode = LOGMODE_BOTH;
 | 
						|
loginutils/chpasswd.c:        logmode = LOGMODE_STDIO;
 | 
						|
loginutils/getty.c:           logmode = LOGMODE_BOTH;
 | 
						|
loginutils/getty.c:           logmode = LOGMODE_NONE;
 | 
						|
loginutils/passwd.c:          logmode = LOGMODE_STDIO;
 | 
						|
loginutils/passwd.c:          logmode = LOGMODE_BOTH;
 | 
						|
loginutils/sulogin.c:         logmode = LOGMODE_SYSLOG; (used if stdio isn't a tty)
 | 
						|
loginutils/sulogin.c:         logmode = LOGMODE_BOTH;
 | 
						|
util-linux/mount.c:           logmode = LOGMODE_SYSLOG; (used in a backgrounded NFS mount helper)
 |