Multi-processing capable print-like logger for Python
Project description
MPLogger
Multi-processing capable print-like logger for Python
Requirements and Installation
Python 3.8+ is required
Pip
pip install mplogger
Manual
Poetry and (optionally) GNU Make are required.
git clone https://github.com/ELTE-DH/MPLogger.git
- Run
make
On Windows or without Make (after cloning the repository):
poetry install --no-root
poetry build
poetry run pip install --upgrade dist/*.whl
(the correct filename must be specified on Windows)
Usage
Single-process
from mplogger import Logger
# Initialize logger (default: STDERR only with INFO level)
logger = Logger(log_filename, logfile_mode, logfile_encoding, logfile_level, console_stream, console_level, console_format, file_format)
logger.log('INFO', 'First argument log level as string')
logger.log('WARNING', 'THIS IS A WARNING!', 'In multiple lines', 'just like print()', sep='\n')
logger.log('CRITICAL', 'Can also set line endings!', end='\r\n')
Multi-process
from itertools import repeat
from multiprocessing import Pool, Manager, current_process
from mplogger import Logger
def worker_process(par):
state, lq = par
retl = []
for n in range(100):
lq.log('WARNING', f'{current_process().name} message{state} {n}')
lq.log('WARNING', f'{current_process().name} finished')
return retl
log_obj = Logger('test.log', 'w') # Apply all parameters for logger here!
log_obj.log('INFO', 'NORMAL LOG BEGIN') # Normal logging
with Manager() as man:
log_queue = man.Queue()
with log_obj.init_mp_logging_context(log_queue) as mplogger, Pool() as p:
# Here one can log parallel from all processes!
return_queue = p.imap(worker_process, zip(range(10), repeat(mplogger)), chunksize=3)
for _ in return_queue:
pass
log_obj.log('INFO', 'NORMAL LOG END') # Normal logging
Licence
This project is licensed under the terms of the GNU LGPL 3.0 license.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mplogger-1.0.1.tar.gz
(6.9 kB
view details)
Built Distribution
File details
Details for the file mplogger-1.0.1.tar.gz
.
File metadata
- Download URL: mplogger-1.0.1.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.8.3 Linux/5.11.0-1028-gcp
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39ca87d2004cb163ccb091c48ec42ad644ead98b414811bc268e0509c6024c74 |
|
MD5 | 169dcd0d5380d0163236c246bc43b530 |
|
BLAKE2b-256 | 89bc0d3e3d4d18df3263796b9a28f6f2496f5cd9af78c5f9c07e7d38ef52090c |
File details
Details for the file mplogger-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: mplogger-1.0.1-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.8.3 Linux/5.11.0-1028-gcp
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3018333bc1fb19fc57ebb335014bb5399fe42b5a959806f49a77bb17cd48ef7c |
|
MD5 | af661d7f6a9485ed66730d6a3883b7e6 |
|
BLAKE2b-256 | 224e38287a591fea2eff69760272c7af8ffd3ec7262878164ac4bd3641efe083 |