Skip to content

Instantly share code, notes, and snippets.

@htv2012
Last active November 11, 2025 17:51
Show Gist options
  • Select an option

  • Save htv2012/681cb0f21a901b6fc2bc3d785ee910e8 to your computer and use it in GitHub Desktop.

Select an option

Save htv2012/681cb0f21a901b6fc2bc3d785ee910e8 to your computer and use it in GitHub Desktop.
Configure Python logging
import logging
INFO = logging.INFO
DEBUG = logging.DEBUG
WARNING = logging.WARNING
def create_logger(logger_name, log_level=logging.WARNING, filename=None):
""" Create a logger that log to the console, if a filename is
supplied, log to that file as well.
"""
logger = logging.getLogger(logger_name)
logger.setLevel(log_level)
# create console handler and set appropriate level
ch = logging.StreamHandler()
formatter = logging.Formatter("%(message)s")
ch.setFormatter(formatter)
logger.addHandler(ch)
# Create a file handler and set appropriate level
if filename:
fh = logging.FileHandler(filename=filename, mode='w')
fformatter = logging.Formatter(
'%(asctime)s;%(filename)s;%(lineno)d;%(levelname)s;%(message)s',
"%Y-%m-%d %H:%M:%S")
fh.setFormatter(fformatter)
logger.addHandler(fh)
return logger
[loggers]
keys=root,sample
[handlers]
keys=console
[formatters]
keys=default
[logger_root]
level=WARNING
handlers=console
[logger_sample]
level=DEBUG
handlers=console
qualname=sample
propagate=0
[handler_console]
class=StreamHandler
level=DEBUG
formatter=default
args=(sys.stdout,)
[formatter_default]
format=[%(asctime)s] %(levelname)s %(name)s: %(message)s
datefmt=%Y-%m-%d %H:%M:%S
#
# Add this section to pyproject.toml to configure pytest logging
#
[tool.pytest.ini_options]
log_cli = true
log_cli_level = "DEBUG"
log_cli_format = "%(levelname)-8s | %(name)s:%(message)s"
log_cli_date_format = "%Y-%m-%d %H:%M:%S"
log_file = "pytest.log"
log_file_level = "DEBUG"
log_file_format = "%(levelname)-8s | %(name)s:%(message)s"
log_file_date_format = "%Y-%m-%d %H:%M:%S"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment