Consider the following minimal setup: /mymodule ├── __init__.py ├── main.py └── worker.py __init__.py is empty main.py: import sys import logging import multiprocessing from test.worker import do_stuff logger = logging.getLogger(__name__) def main(): logging.basicConfig( format='[%(name)s] [%(levelname)s]: %(message)s', level=logging.DEBUG, ) logger.debug('I am main. I manage workers') logger.info('I am main. I manage workers') logger.warning('I am main. I manage workers') p = multiprocessing.Process(target=do_stuff) p.start() if __name__ == '__main__': sys.exit( main() ) worker.py: import logging logger = logging.getLogger(__name__) def do_stuff(): logger.debug(f'I am a worker. I do stuff') logger.info(f'I am a worker. I do stuff') logger.error(f'I am a worker. I do stuff') logger.error(f'Here is my logger: {logger}') If I run python -m mymodule.main I get (as expected): [__main__] [DEBUG]: I am main. I manage workers [__main__] [INFO]: I am main. I manage workers [__main__] [WARNING]: I am main. I manage workers [mymodule.worker] [DEBUG]: I am a worker. I do stuff [mymodule.worker] [INFO]: I am a worker. I do stuff [mymodule.worker] [ERROR]: I am a worker. I do stuff [mymodule.worker] [ERROR]: Here is my logger: <Logger mymodule.worker (DEBUG)> But if I just rename /mymodule/main.py to mymodule/__main__.py and then run one of these commands: python -m mymodule.__main__ or python -m mymodule, I get this: [__main__] [DEBUG]: I am main. I manage workers [__main__] [INFO]: I am main. I manage workers [__main__] [WARNING]: I am main. I manage workers I am a worker. I do stuff Here is my logger: <Logger mymodule.worker (WARNING)> It is pretty clear to me that in the second case logger of mymodule.worker did not inherit configuration done by logging.basicConfig. But why? No change of code, just changed file name from main.py to __main__.py. I would like to have __main__.py to be able to easily run the module by its name and also to keep logging.basicConfig that will be inhertied by imported submodules and propagate correctly to subprocesses. Continue reading...