Op 12/11/2024 om 20:10 schreef Left Right via Python-list:
> I am not entirely convinced by NB2. I am, in fact, a sort of sysadmin
> person and most of my programs write to a log file. The programs are
> also moderately complex, so a single program might access a database,
> query an LDAP server, send email etc., so potentially quite a lot can go
> wrong. They are also not programs whose output I would pipe to another
> command. What would be the advantage of logging to stderr? Quite apart
> from that, I find having a log file a useful for debugging when I am
> developing.
First, the problem with writing to files is that there is no way to
make these logs reliable. This is what I mean by saying these are
unreliable: since logs are designed to grow indefinitely, the natural
response to this design property is log rotation. But, it's
impossible to reliably rotate a log file. There's always a chance
that during the rotation some log entries will be written to the file
past the point of rotation, but prior to the point where the next logs
volume starts.
What I most often do is use one logfile per day, with the date in the
filename. Then simply delete all files older than 7 days, or 30 days, or
whatever is useful for the task at hand. Not only does that sidestep any
issues with rotating logs, but I also find it's very useful to have the
date in the filename.
Of course, if you only administer your own computer, and you have low
single digits programs to run, and their behavior doesn't change
frequently, and you don't care to drop some records every now and
then... it's OK to log to files directly from a program. But then you
aren't really in the sysadmin / infra / ops category, as you are more
of a hobby enthusiast.
I would not use my scheme for something released to a wider audience.
For in-house software though, I like that I can easily put each
application's logs next to its other data files, and that I don't have
to figure out how to get the system's own log infrastructure to work is
I want it to.
Finally, if you want your logs to go to a file, and currently, your
only option is stderr, your shell gives you a really, really simple
way of redirecting stderr to a file.
I feel this is the worst of both worlds. Now your program doesn't have
any control over filename or log expiration, and neither does your
system's logging infrastructure. You just get one indefinitely growing
log file.
--
"You can fool some of the people all the time, and all of the people some
of the time, but you cannot fool all of the people all of the time."
-- Abraham Lincoln
"You can fool too many of the people too much of the time."
-- James Thurber
--
https://mail.python.org/mailman/listinfo/python-list