You can just add a name as a keyword like in the example here in Logging Cookbook
Here your Module / file
The 'filename' 'spam_application.auxiliary'
import logging
import sys
# create logger
MODULE_NAME = 'spam_application.auxiliary' # Keyword of the file / Module
module_logger = logging.getLogger(MODULE_NAME)
class Auxiliary:
    class_name = 'spam_application.auxiliary.Auxiliary' # Class name
    def __init__(self):
        module_logger.info('creating an instance of Auxiliary')
        self.logger = self.set_up_config()
        self.logger.info('instance of Auxiliary initialized!')
    def do_something(self):
        self.logger.info('doing something')
        a = 1 + 1
        self.logger.info('done doing something')
    def set_up_config(self):
        logger = logging.getLogger(self.class_name)
        format = '%(asctime)s %(levelname)s %(name)s: %(message)s ' # Set up the asctime
        FORMATTER = logging.Formatter(format)
        stream_handler = logging.StreamHandler(sys.stdout)  # Using sys.stdout
        stream_handler.terminator = '\n=====================================================\n'
        stream_handler.setLevel(logging.INFO)
        stream_handler.setFormatter(FORMATTER)
        logger.addHandler(stream_handler)
        return logger
def some_function():
    module_logger.info('received a call to "some_function"')
Parent module / Child as per documentation
import logging
import auxiliary_module
# create logger with 'spam_application'
logger = logging.getLogger('spam_application')
logger.setLevel(logging.INFO)
# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.INFO)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
logger.info('creating an instance of auxiliary_module.Auxiliary')
a = auxiliary_module.Auxiliary()
logger.info('created an instance of auxiliary_module.Auxiliary')
logger.info('calling auxiliary_module.Auxiliary.do_something')
a.do_something()
logger.info('finished auxiliary_module.Auxiliary.do_something')
logger.info('calling auxiliary_module.some_function()')
auxiliary_module.some_function()
logger.info('done with auxiliary_module.some_function()')
## Calling the logger from another module ##
import logging
import auxiliary_module
a = auxiliary_module.Auxiliary()
aux_module = logging.getLogger('spam_application.auxiliary.Auxiliary')
aux_module.setLevel(logging.INFO)
aux_module.info("Hey")
# 2021-11-10 21:18:04,376 INFO spam_application.auxiliary.Auxiliary: Hey 
# =====================================================
Most simple way to config logger
import logging
format = '%(asctime)s %(levelname)s %(name)s: %(message)s '
logging.basicConfig(
     level=logging.INFO,
     format= format,
     datefmt='%H:%M:%S'
 )
_logger = logging.getLogger('MY_MODULE_NAME')
_logger.info("Here a log")
Output
>>> 20:55:12 INFO __main__: Hello WOrld 
Using StreamerHandler
Needed to register a different logger
import logging
import sys
_logger = logging.getLogger('MY_MODULE_NAME')
_logger.setLevel(logging.DEBUG)
# Streamer Registartion
format = '%(asctime)s %(levelname)s %(name)s: %(message)s '
FORMATTER = logging.Formatter(format)
stream_handler = logging.StreamHandler(sys.stdout) # Using sys.stdout
stream_handler.terminator = '\n====================================================='
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(FORMATTER)
_logger.addHandler(stream_handler)
_logger.info("Here a log")
Same but with a separate streamar
Useful to retrieve some other logs later on. same method can be used to write to a log file
import logging
import sys
import io
_logger = logging.getLogger('MY_MODULE_NAME')
_logger.setLevel(logging.DEBUG)
# Streamer Registartion
format = '%(asctime)s %(levelname)s %(name)s: %(message)s '
FORMATTER = logging.Formatter(format)
stream_handler = logging.StreamHandler(sys.stdout) # Using sys.stdout
stream_handler.terminator = '\n====================================================='
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(FORMATTER)
_logger.addHandler(stream_handler)
# Add to a streamer
streamer = io.StringIO()
format = '%(asctime)s %(levelname)s %(name)s: %(message)s '
FORMATTER = logging.Formatter(format)
stream_handler = logging.StreamHandler(stream=streamer) # We use stringio
stream_handler.terminator = '\n*******************************************************'
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(FORMATTER)
_logger.addHandler(stream_handler)
_logger.info("Here a log")
# Get All logged valued from streamer
steramed_values = streamer.getvalue()
print(f'steramed_values --> \n{steramed_values}')
# 2021-11-10 21:02:15,492 INFO __main__: Here a log 
# =====================================================steramed_values --> 
# 2021-11-10 21:02:15,492 INFO __main__: Here a log 
# *******************************************************
Related Topic / Documentation