On 2024-11-22 12:04, Matus UHLAR - fantomas wrote:
On 2024-11-21 07:29, Matus UHLAR - fantomas wrote:
I run squid 6 (currently 6.10) on some debian hosts.
when rotating logs in the night, I get mail about cron output:
2024/11/21 00:00:41| Processing Configuration File:
/etc/squid/squid.conf (depth 0)
2024/11/21 00:00:41| Processing Configuration File:
/etc/squid/conf.d/debian.conf (depth 1)
2024/11/21 00:00:41| Processing Configuration File:
/etc/squid/conf.d/ftplog.conf (depth 1)
2024/11/21 00:00:41| Set Current Directory to /var/spool/squid
Those messages are sent to stderr, not stdout. I can imply redirect
the "squid -k rotate" stderr to /dev/null
but I would like to avoid it when possible - if any error happens,
I't like to know about that.
On 21.11.24 16:16, Alex Rousskov wrote:
If you are OK with not seeing these particular messages in cache.log
and on stderr, disable their level-1 reporting using cache_log_message
directive. The ID of those messages is 68 (see doc/debug-messages.dox
for IDs of other messages that can be controlled in your Squid).
Only cache.log would be ideal.
Short answer: AFAICT, that ideal is not supported for what you want to do.
Longer answer: The following _combination_ is not supported (yet?) AFAICT:
* Sending only level-0/1 messages to cache.log,
* including a particular level-1 message.
* Sending only level-0/1 messages to stderr,
* except for a particular level-1 message.
However, the description at
http://www.squid-cache.org/Doc/config/cache_log_message/ is not clear
enough what exactly that level means,
Documentation improvements are welcome! Existing cache_log_message
documentation reuses a fairly well-known "debugging level" concept that
is more-or-less described in debug_options directive documentation.
cache_log_message docs do refer to debug_options in "level=<number>"
bullet. I am sure all of this can be significantly improved.
and unfortunately you didn't make id more clear.
I assume you meant to say "it" (i.e. "level meaning") rather than "id".
I am sorry that I failed to realize that "level" should be clarified in
this context. I should have been more careful with my assumptions!
(the page is mentioning doc/debug-messages.txt btw)
Thank you for reporting that documentation bug. I proposed a fix at
https://github.com/squid-cache/squid/pull/1953
Do I understand it properly that level 1 goes to stderr+cache.log and
level 2 nowhere?
Short answer: Not quite. Assuming an error-free squid executable start
(e.g., not "squid -k"!) and default debug_options (i.e. "ALL,1"), all
level-0/1 messages go to cache.log and nothing goes to stderr. Level-2+
messages are not logged anywhere.
Longer answer:
Each message has a hard-coded debugging level. Roughly speaking, higher
levels are used for more frequent messages. Levels above 2 are meant for
developers (rather than admins). Levels above 1 are not meant for
sustained production use because they slow Squid down and generate huge
logs.
* Messages with debugging level L go to cache.log if debug_options allow
debugging level L. For example, "debug_options ALL,2" would allow
messages with debugging levels 0, 1, and 2 to be logged to cache.log.
* Messages with debugging level L that are allowed to go to cache.log
(see above) go to stderr if command line option -d allows them to go to
stderr. For example, a combination of "debug_options ALL,2" and "-d 1"
would allow messages with debugging levels 0 and 1 to be logged to stderr.
By default, in error-free cases, when running squid executable that is
supposed to (eventually) log to cache.log, nothing goes to stderr and
level-0/1 messages go to cache.log. In such cases, -d value defaults to
the equivalent of "none". To see stderr output in such cases, one has to
start squid with -d0 or higher.
When running "squid -k ..." -d defaults to 1 and nothing goes to cache.log.
Sounds complicated? There is also syslog with its own level-related
policies! :-)
HTH,
Alex.
For example:
cache_log_message id=68 level=2
If you want Squid to only report errors to stderr, then you will need
to wait for (or orchestrate) the corresponding code changes.
Currently, Squid defines error as a message with an ERROR: or FATAL:
prefix. There is no Squid code to treat such messages specially though
(yet?). For more details, please see
https://github.com/squid-cache/squid/commit/d816f28de8ba817a98a49f9cfd88ddaa334d7aad
You may be able to emulate the above error detection/handling
(including its risks related to incorrectly unclassified/unprefixed
messages) via a shell script. For example, something like this might
be a good starting point:
squid -k rotate |& grep -E "FATAL:|ERROR:"
or, with added logging of all stderr messages:
squid -k rotate |& \
tee squid-last-rotate.log | \
grep -E "FATAL:|ERROR:"
However, the above sketches need more work/adjustments to preserve
"squid -k rotate" exit status code!
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
https://lists.squid-cache.org/listinfo/squid-users