Код: Выделить всё
def configure_logger(logger, logfile, level=logging.DEBUG):
"""
Configures a logger with both file and stream handlers.
Parameters:
- logger (logging.Logger): The logger to configure.
- logfile (str): The path to the logfile.
- level (int, optional): The logging level. Defaults to logging.DEBUG.
Returns:
- tuple: A tuple containing the configured logger and the file handler.
"""
logger.setLevel(level)
# Create a file handler with detailed formatting for log output
file_handler = logging.FileHandler(logfile, mode="w")
fformatter = logging.Formatter('%(name)s - %(levelname)s: %(message)s')
file_handler.setFormatter(fformatter)
logger.addHandler(file_handler)
# Create a stream handler with simple formatting for cell output
stream_handler = logging.StreamHandler()
sformatter = logging.Formatter('%(levelname)s: %(message)s')
stream_handler.setFormatter(sformatter)
logger.addHandler(stream_handler)
# Remove random Pyspark logs
logging.getLogger("py4j").setLevel(logging.ERROR)
logging.getLogger("Comm").setLevel(logging.ERROR)
return logger, file_handler
# Set up root logger
logger = logging.getLogger()
logfile = '/Workspace/Project/Logs/dev/dev_20SEP2024.log' # example
# Ensure the directory exists
log_dir = os.path.dirname(logfile)
if not os.path.exists(log_dir):
os.makedirs(log_dir)
logger, file_handler = configure_logger(logger, logfile=logfile)
Код: Выделить всё
FileNotFoundError: [Errno 2] No such file or directory: '/Workspace/Project/Logs/dev/dev_20SEP2024.log'
File , line 10
7 if not os.path.exists(log_dir):
8 os.makedirs(log_dir)
---> 10 logger, file_handler = configure_logger(logger, logfile=logfile)
Код: Выделить всё
%sh
ls '/Workspace/Project/Logs/dev'
# returns dev_16SEP2024.log
Подробнее здесь: https://stackoverflow.com/questions/790 ... andomly-wh