A simple logger using the logging module. TODO: Convert code into a method returning a logger object providing the method to unregister/remove and close the file handler (see the other post).
Please be aware that copy and paste of the code below will most probably lead to indention error, as the code was more or less just a copy of respective passages in real code.
from datetime import datetime
import logging
from logging.handlers import RotatingFileHandler
from pathlib import Path
scriptPathParts = Path(__file__).resolve().parts
logDirectoryName = 'logs'
scriptDirectory = Path(__file__).parent.resolve()
logDirectory = scriptDirectory.joinpath(logDirectoryName)
logDirectoryCreated = False
if not logDirectory.is_dir():
logDirectory.mkdir(parents = True, exist_ok = True)
logDirectoryCreated = True
startTimestamp = datetime.now().strftime("%Y%m%d%H%M%S")
logger = logging.getLogger('deploy')
logLevel = 'INFO'
logger.setLevel(logLevel)
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logHandlerStream = logging.StreamHandler()
logHandlerStream.setFormatter(formatter)
logger.addHandler(logHandlerStream)
logFileName = scriptPathParts[-1].replace('.py', '')
# for debugging it is easier if the log file name stays the same
if (not logger.isEnabledFor(logging.DEBUG)):
logFileName = logFileName + '_' + startTimestamp
logFileName = logFileName + '.log'
logFile = logDirectory.joinpath(logFileName)
# FIXME for some unknown reason to me the mode does not get respected, the log
# file is appended. Maybe this is a "feature" of Windoof.
logHandlerFile = RotatingFileHandler(
filename = str(logFile),
mode = 'w',
maxBytes = 10485760,
backupCount = 10,
encoding = 'utf-8',
delay = True)
logHandlerFile.setFormatter(formatter)
logger.addHandler(logHandlerFile)
Keine Kommentare:
Kommentar veröffentlichen