[Pkg-samba-maint] why not log to syslog by default?
Tom Metro
tmetro+debianbugs at vl.com
Sun Jul 15 19:28:30 UTC 2007
After looking into a problem with logwatch not handling debug messages
from smaba, I started this thread on the logwatch-devel list:
http://www.nabble.com/samba-Unmatched-Entries-tf4063770.html
And in short, I'm wondered why samba was configured by default in the
Debian package to log to its debug logs instead of to syslog.
Before I file a bug on this, I figured I'd gather some background
information to see if there are good justifications for this behavior
that will just lead to the bug being tagged WONTFIX.
I see in Bug #50983:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=50983
Eloy Paris <eparis at andrew.cmu.edu> wrote:
Somebody wanted to have syslog support in Samba so I added it by
compiling Samba with syslog support. I agree these debug messages
should not appear in the syslog, but they will disappear if the you
set "syslog = 0" in the global section of your smb.conf file. I added
this parameter to the sample smb.conf...
Anyway, I'll try to get the upstream source to change the default of
the "syslog" parameter to 0 (it is currently 1 so this crap gets
logged through syslog).
Alternatively, you can also decrease Samba's debug level to 0 (debug
level = 0 in smb.conf). That way Samba will only log important
messages and not debug information like the one you got.
Suggesting that syslog logging was reluctantly enabled in the binary,
but (partially) disabled by the default config.
This comment also implies that the "log level" directive impacts what is
logged to syslog, yet the man page gives the impression that "log level"
controls the logging to the "debug logs", while the "syslog" directive
independently controls what is logged to syslog:
debuglevel
This parameter is a synonym for log level.
log level (G)
The value of the parameter (a astring) allows the debug level (log-
ging level) to be specified in the smb.conf file.
...
The default will be the log level specified on the command line or
level zero if none was specified.
No default
...
syslog (G)
This parameter maps how Samba debug messages are logged onto the sys-
tem syslog logging levels. Samba debug level zero maps onto syslog
LOG_ERR, debug level one maps onto LOG_WARNING, debug level two maps
onto LOG_NOTICE, debug level three maps onto LOG_INFO. All higher
levels are mapped to LOG_DEBUG.
This parameter sets the threshold for sending messages to syslog.
Only messages with debug level less than this value will be sent to
syslog.
Default: syslog = 1
But I can also see how these two might be chained together, with "log
level" controlling the overall logging level, and "syslog" controlling
the threshold of what gets sent to syslog. But if this is the case, the
documentation to "syslog" should reference its dependency on "log level".
Quoting from /usr/share/samba/smb.conf:
> #### Debugging/Accounting ####
>
> # This tells Samba to use a separate log file for each machine
> # that connects
> log file = /var/log/samba/log.%m
If you change this, it also impacts the location and naming of the
log.smbd and log.nmbd files, which I wouldn't expect based on the above
comment.
> # Put a capping on the size of the log files (in Kb).
> max log size = 1000
Does this end up "competing" with the logrotate.d/samba settings? Does
this directive not apply to log.smbd and log.nmbd?
The logrotate config ignores the client debug logs, even though this
sample smb.conf triggers samba to create them. That seems inconsistent.
Is it assumed that the "main" logs will get rotated by logrotate, while
the debug client logs will get truncated at 1000 KB by samba?
> # If you want Samba to only log through syslog then set the following
> # parameter to 'yes'.
> ; syslog only = no
>
> # We want Samba to log a minimum amount of information to syslog. Everything
> # should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
> # through syslog you should set the following parameter to something higher.
> syslog = 0
This makes it clear that informational messages won't get sent to syslog
by default, but it is a bit vague when it comes to error/critical
messages, which perhaps are still being directed to syslog.
The man page says, "Samba debug level zero maps onto syslog LOG_ERR,"
which implies that error will still get logged, even when "log level =
0" and "syslog = 0". (Assuming "log level = 0" doesn't squelch error
messages.)
In any case, I think the default configuration for samba should match
that of other daemons, which would be to log to syslog only, and at the
LOG_WARNING level.
log level = 1
syslog only = yes
syslog = 1
The sample configuration should include commented out lines with
comments on how to enable the debug logs, and boost the log level, so a
user debugging a problem can easily do so.
-Tom
More information about the Pkg-samba-maint
mailing list