gpt4 book ai didi

python日志记录: how to ensure logfile directory is created?

转载 作者:IT老高 更新时间:2023-10-28 20:47:25 24 4
gpt4 key购买 nike

我想在我的应用程序中使用 python 的日志框架,并且我想允许我的应用程序的最终用户指定日志文件。 (通过 Python 日志记录框架的 configuration mechanisms,在我的例子中,它是 YAML 文件的一部分,最终用户可以编辑它来指定日志记录的行为方式。)

有没有办法让日志框架通过创建一个目录来确保它存在? 因为日志文件名的确切路径嵌入在最终用户指定的配置信息中,所以它对于作为应用程序编写者的我来说,解析这些信息以确定应该创建哪个目录是非常重要的。

如果最终用户指定“foo/bar/baz.log”,我想确保创建了 foo/bar 目录。

注意:这是 this SO question about Java logging 的 Python 等价物。 .

最佳答案

子类 FileHandler(或您正在使用的任何处理程序)在初始化期间调用 mkdir_p:

import logging
import os
import errno

def mkdir_p(path):
"""http://stackoverflow.com/a/600612/190597 (tzot)"""
try:
os.makedirs(path, exist_ok=True) # Python>3.2
except TypeError:
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else: raise

class MakeFileHandler(logging.FileHandler):
def __init__(self, filename, mode='a', encoding=None, delay=0):
mkdir_p(os.path.dirname(filename))
logging.FileHandler.__init__(self, filename, mode, encoding, delay)

关于python日志记录: how to ensure logfile directory is created?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com