logger_simple.py
import logging
# make a debug message
logging.debug("This is a simple debug log")
# make an info message
logging.info("This is a simple info log")
# make a warning message
logging.warning("This is a simple warning log")
# make an error message
logging.error("This is a simple error log")
# make a critical message
logging.critical("This is a simple critical log")
# just mapping logging level integers into strings for convenience
logging_levels = {
logging.DEBUG: "DEBUG", # 10
logging.INFO: "INFO", # 20
logging.WARNING: "WARNING", # 30
logging.ERROR: "ERROR", # 40
logging.CRITICAL: "CRITICAL", # 50
}
# get the current logging level
print("Current logging level:", logging_levels.get(logging.root.level))
# get the current logging format
print("Current logging format:", logging.BASIC_FORMAT)
logger_basic.py
import logging
# make a basic logging configuration
# here we set the level of logging to DEBUG
logging.basicConfig(
level=logging.DEBUG
)
# make a debug message
logging.debug("This is a simple debug log")
# make an info message
logging.info("This is a simple info log")
# make a warning message
logging.warning("This is a simple warning log")
# make an error message
logging.error("This is a simple error log")
# make a critical message
logging.critical("This is a simple critical log")
logger_config.py
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
)
logging.info("This is an info message!")
logger_datefmt.py
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
datefmt="[%Y-%m-%d] %H:%M:%S",
)
logging.info("This is an info message!")
logger_file.py
import logging
import math
logging.basicConfig(level=logging.DEBUG,
handlers=[logging.FileHandler('logs.log', 'a', 'utf-8')],
format="%(asctime)s %(levelname)-6s - %(funcName)-8s - %(filename)s - %(lineno)-3d - %(message)s",
datefmt="[%Y-%m-%d] %H:%M:%S - ",
)
logging.info("This is an info log")
def square_root(x):
logging.debug(f"Getting the square root of {x}")
try:
result = math.sqrt(x)
except ValueError:
logging.exception("Cannot get square root of a negative number")
# or
# logging.error("Cannot get square root of a negative number", exc_info=True)
return None
logging.info(f"The square root of {x} is {result:.5f}")
return result
square_root(5)
square_root(-5)
logger_handlers.py
import logging
# return a logger with the specified name & creating it if necessary
logger = logging.getLogger(__name__)
# create a logger handler, in this case: file handler
file_handler = logging.FileHandler("file.log")
# set the level of logging to INFO
file_handler.setLevel(logging.INFO)
# create a logger formatter
logging_format = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
# add the format to the logger handler
file_handler.setFormatter(logging_format)
# add the handler to the logger
logger.addHandler(file_handler)
# use the logger as previously
logger.critical("This is a critical message!")