#!/usr/bin/env python # -*- coding: utf-8 -*- import logging import logging.config import os MULTIPROCESSLOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler' }, 'basefile': { 'level': 'INFO', 'class': 'logging.FileHandler', 'filename': 'multiprocesses-to-files-with-dict.log', 'mode': 'w' }, 'filelog': { 'level': 'DEBUG', 'class': 'multiprocesses-to-files-with-dict.MultiFileHandler', 'filename': 'multiprocesses-to-files-with-dict', 'mode': 'w' } }, 'loggers': { '__main__': { 'handlers': ['filelog', 'basefile', 'console'], 'propagate': False, 'level': 'DEBUG' } } } class MultiFileHandler(logging.FileHandler): def __init__(self, filename, **kwargs): pfilename = f"{filename}-{os.getpid()}.log" super().__init__(pfilename, **kwargs) if __name__ == "__main__": logging.config.dictConfig(MULTIPROCESSLOGGING) logger = logging.getLogger(__name__) logger.debug('debug message') logger.info('info message') logger.warning('warn message') logger.error('error message') logger.critical('critical message')