Search squid archive

Re: messages when "squid -k rotate" is run

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux