Installation
Install via pip:
> bin/pip install libranet-logging
Or add to your poetry-based project:
> poetry add libranet-logging
Why use logging?
Logfiles are your best-friend
-
during development, where debugmode is developmentmode
-
more important: while running in PRD,
- it shows how the application is being used, by whom, and if it's successfull
- allows to become pro-active. There is no need to wait for bugreports from users.
-
most important: during urgent troubleshooting on PRD (AKA panic-mode)
- heisenbugs, difficult to reproduce.
Goal of libranet-logging
Make it as easy as possible to enable and properly use the full power of the python logging-framework
python logging-module contains:
- loggers, hierarchical
- handlers
- formatters
- filters
Think of logger=message-channel, handler=subscriber to a channel
Minimize the need to make changes in code
Move all config out of code and into a config-file "logging.yml"
-
logging to a file should be as simple as:
```python >>> import logging >>> logging.getLogger('panicmode') ```
Usage
In your deployment
You can use following env-variables:
- LOGGING_YML_FILE, path to logging.yml, e.g /opt/miniconda/envs/libranet/etc/logging.yml
- LOG_DIR, path to log-directory where logfiles will be created, /var/tmp/python
- PYTHON_ENABLE_LOGGING_TREE 1|0
optional env-vars: - LOGLEVEL_ROOT - LOGLEVEL_libranet_logging - LOG_HANDLERS="console|debug_file|info_file|warning_file|error_file"
If missing, these default to DEBUG
In your code
To initialize the logging-infrastructure and set-up all configured loggers, handlers, formatters and filters:
> import libranet_logging
> libranet_logging.initialize()
2018/06/01 10:00:00 - root - DEBUG - Logging configured from <path-to>/logging.yml
You do this once in your application, in the function that starts execution, not at the top of your module.
# Calling getLogger without arguments returns the root-logger,
# of which all other loggers descend.
# Normally you do NOT need this logger.
> import logging
> root_log = logging.getLogger()
# You normally use the module-logger
> log = logging.getLogger(__name__)
# and starting using it
> log.debug('This is debugging-information.')
> log.info('This is useful information.')
> log.warning('This is a warning.')
> log.error('This is a warning.')
# You can log a full-traceback by providing the exception to log.exception().
> try:
> import foo
> except ImportError as e:
> log.exception(e)
Features
-
load logging-configuration from a yaml-config
-
validate yaml-file for missing keys, invalid values
-
configurable via env-variables
- sane defaults if env-var is not set
-
when logging to console, have colorized logging,
- but nowhere else
- configurable colors (avoid blue on black)
-
integrate python-warnings
-
add sample email-logger
-
add sample syslog-logger
-
avoid empty files that will remain empty
- cleanup dedicated file-handlers based on root-loglevel
-
future ideas:
-
integrate with kibana
-
log as json, structlog
-
-
in code throw out all
-
formatting,
-
handler-config,
-
setting loglevel
-
debug-flags like::
>>> if DEBUG: >>> log.debug(....)
-
Release files for libranet-logging 1.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| libranet_logging-1.5.2.tar.gz | 240.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| libranet_logging-1.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 256.4 kB
Release files / libranet_logging-1.5.2.tar.gz
| Download URL | libranet_logging-1.5.2.tar.gz |
|---|---|
| Size | 240.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7eebf7cd71d23edda14793ca7baf79732c952965ea5f5413d222dfc1850a10e0
|
|
BLAKE2b-256 checksum How to use checksums |
567d22c749d44ae0cde89dc227468ba9c737c8fa3c60bf684232b881953630fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.9
|
Release files / libranet_logging-1.5.2-py3-none-any.whl
| Download URL | libranet_logging-1.5.2-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73138011d2943dc21309d785321d22a4bd77e93d68a313c296082e10a98a4741
|
|
BLAKE2b-256 checksum How to use checksums |
f75719eff2676c416722b8347465c7d91d7627f0ebfa8fdfa69dd9ef60ba6d57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.9
|