Skip to main content

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.

  1. git clone https://github.com/ELTE-DH/MPLogger.git
  2. Run make

On Windows or without Make (after cloning the repository):

  1. poetry install --no-root
  2. poetry build
  3. 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)

Uploaded Source

Built Distribution

mplogger-1.0.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

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

Hashes for mplogger-1.0.1.tar.gz
Algorithm Hash digest
SHA256 39ca87d2004cb163ccb091c48ec42ad644ead98b414811bc268e0509c6024c74
MD5 169dcd0d5380d0163236c246bc43b530
BLAKE2b-256 89bc0d3e3d4d18df3263796b9a28f6f2496f5cd9af78c5f9c07e7d38ef52090c

See more details on using hashes here.

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

Hashes for mplogger-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3018333bc1fb19fc57ebb335014bb5399fe42b5a959806f49a77bb17cd48ef7c
MD5 af661d7f6a9485ed66730d6a3883b7e6
BLAKE2b-256 224e38287a591fea2eff69760272c7af8ffd3ec7262878164ac4bd3641efe083

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page