当前位置:  开发笔记 > 编程语言 > 正文

Python日志记录:如果不存在或打开则创建日志,如果存在则继续日志记录

如何解决《Python日志记录:如果不存在或打开则创建日志,如果存在则继续日志记录》经验,为你挑选了2个好方法。

我正在编写一些使用python logging系统的代码.我们的想法是,如果LOG尚未存在,则创建日志,但如果存在,则获取日志并继续记录到该文件.这是我的代码:

import logging
import os

log_filename='Transactions.log')
if os.path.isfile(log_filename)!=True:
    LOG = logging.getLogger('log_filename')
    LOG.setLevel(logging.DEBUG)
    # create file handler which logs even debug messages
    fh = logging.FileHandler('log_filename')
    fh.setLevel(logging.DEBUG)
    # create console handler with a higher log level
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    # create formatter and add it to the handlers
    formatter = logging.Formatter('-->%(asctime)s - %(name)s:%(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    # add the handlers to the logger
    LOG.addHandler(fh)
    LOG.addHandler(ch)
else:
    LOG=logging.getLogger()

我怀疑问题出在我的else阻止,但我不知道如何解决.任何人都可以对这种情况有所了解.



1> hjpotter92..:

记录模块FileHandler会为您处理.不需要复杂性.

处理程序采用可选mode参数,以指定它是开始写入还是向其附加数据.

来自文档:

class logging.FileHandler(filename, mode='a', encoding=None, delay=False)

打开指定的文件并将其用作日志记录的流.如果 mode未指定,'a'则使用.


如果该目录不存在,您仍将获得异常.日志记录很乐意为您创建一个新文件,但不是整个目录结构.
@UserK如果文件不存在,`a`或`w`都可以.`a`将在下一次运行时附加到同一文件,而`w`模式将删除旧文件并创建一个全新文件.另请阅读@mightypile上面评论的内容.

2> 小智..:

对于任何尝试创建新目录结构logs/mylogfile.log(如@mightypile)的人,FileHandler都不会为您创建新目录结构。我曾经os.makedirs确保目录结构。

import os
import logging

log_filename = "logs/output.log"
os.makedirs(os.path.dirname(log_filename), exist_ok=True)
file_handler = logging.FileHandler(output_filename, mode="w", encoding=None, delay=False)

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有