#[non_exhaustive]pub enum Caching {
Nothing,
Loggers,
LoggersAndLevels,
}
Expand description
What the Logger
can cache.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Nothing
Disables caching.
Every time a log message passes the filters, the code goes to the Python side to check if the message shall be logged.
Loggers
Caches the Python Logger
objects.
The logger objects (which should stay the same during the lifetime of a Python application) are cached. However, the log levels are not. This means there’s some amount of calling of Python code saved during a logging call, but the GIL still needs to be acquired even if the message doesn’t eventually get output anywhere.
LoggersAndLevels
Caches both the Python Logger
and their respective effective log levels.
Therefore, once a Logger
has been cached, it is possible to decide on the Rust side if a
message would get logged or not. If the message is not to be logged, no Python code is
called and the GIL doesn’t have to be acquired.