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')

Dummy-logger

from mplogger import DummyLogger

# Initialize logger (accepts any params)
logger = DummyLogger()

# Log function has the same API, but nothing happens
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.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

mplogger-1.1.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file mplogger-1.1.0.tar.gz.

File metadata

  • Download URL: mplogger-1.1.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.6 Linux/5.15.0-57-generic

File hashes

Hashes for mplogger-1.1.0.tar.gz
Algorithm Hash digest
SHA256 2b0a7454c0cca7d6b6463ce84ff56400c2187313a6d885499b5809dd4a49ed35
MD5 2cc25a23006bff29ca774063462ccc4b
BLAKE2b-256 503ed0efaf3bfb267c00cf3a7c05774d8cd017801d02aaed5e45afd03e79e1fc

See more details on using hashes here.

File details

Details for the file mplogger-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: mplogger-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.6 Linux/5.15.0-57-generic

File hashes

Hashes for mplogger-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 58060c81e20edf1f6f5483bb0d8d9f867728f90ac5590b956e2532919417cc23
MD5 4c2a7ecffaa7441323a88e7a86523233
BLAKE2b-256 0655312d5c239afbfe1e1af61a5ac0b94899dac0c9b0018fe97273b60f5b75e6

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