python日志:如何确保创建日志文件目录?

 冷漠自逍遥2602897565 发布于 2023-02-09 13:18

我想在我的应用程序中使用python的日志框架,我想允许我的应用程序的最终用户指定日志文件.(通过Python日志框架的配置机制,在我的例子中是YAML文件的一部分,最终用户可以编辑该文件以指定日志记录的行为方式.)

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

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

注意:这是关于Java日志记录的这个SO问题的Python等价物.

1 个回答
  • 初始化期间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)
    

    2023-02-09 13:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有