CerbIA uses Python’s standard-library logging module.
Loggers use the implicit cerbia namespace obtained from logging.getLogger(name). Messages propagate normally to
the host’s handlers, and the effective levels are inherited from the host logger hierarchy. The host chooses the destination.
CerbIA emits only the standard levels needed by the library:
| Level | Meaning |
|---|---|
|
Closed component-event metadata: fixed categories and safe numeric counters only. |
|
A milestone or fixed progress message that is safe to log. |
|
A non-fatal condition caused an item or optional operation to be skipped. |
|
A safe summary of a failed or blocked operation when the caller needs an observable failure record. |
Host configuration
The host owns handlers, formatters, destinations, and filtering. A host can configure them with the standard library, for example:
import logging
logging.basicConfig(
level=logging.WARNING,
format="%(asctime)s %(levelname)s %(name)s %(message)s",
)
Applications embedding CerbIA should configure the cerbia logger or the root logger according to their logging policy.
Importing and reusing the library does not configure logging, replace existing handlers, force a global level, or select
a destination for an embedded host.
CLI behavior
The standalone CLI may configure logging when an explicit --log-level or --log-file option is supplied. With neither
option, it preserves an existing host logging setup when one is present. If the standalone process has no root handlers,
it installs an INFO stderr handler using the standard CLI format. This default differs from embedded use, where
library imports have no logging-configuration side effects and do not install that handler.
Embedded applications own their logging configuration.