首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重新开始记录到新文件(Python)

重新开始记录到新文件(Python)
EN

Stack Overflow用户
提问于 2011-03-14 16:07:58
回答 2查看 17.9K关注 0票数 22

我使用以下代码在我的应用程序中初始化日志:

代码语言:javascript
复制
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# log to a file
directory = '/reserved/DYPE/logfiles'
now = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = os.path.join(directory, 'dype_%s.log' % now)
file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s %(filename)s, %(lineno)d, %(funcName)s: %(message)s")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

# log to the console
console_handler = logging.StreamHandler()
level = logging.INFO
console_handler.setLevel(level)
logger.addHandler(console_handler)

logging.debug('logging initialized')

如何关闭当前日志文件并重新启动日志记录到新文件?

注意:我不想使用RotatingFileHandler,因为我想完全控制所有的文件名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-14 16:19:53

如果您想使用removeHandleraddHandler,您可以手动重新分配处理程序,或者,您可以访问logger.handlers[index_of_handler_here].stream并手动替换流,但我建议使用前者而不是后者。

代码语言:javascript
复制
logger.handlers[0].stream.close()
logger.removeHandler(logger.handlers[0])

file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s %(filename)s, %(lineno)d, %(funcName)s: %(message)s")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
票数 32
EN

Stack Overflow用户

发布于 2014-11-03 04:09:48

下面是我要做的:

代码语言:javascript
复制
def initLogging(filename):
    global logger
    if logger == None:
        logger = logging.getLogger()
    else:  # wish there was a logger.close()
        for handler in logger.handlers[:]:  # make a copy of the list
            logger.removeHandler(handler)

    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter(fmt='%(asctime)s: %(message)s', datefmt='%I:%M:%S')

    fh = logging.FileHandler(filename)
    fh.setFormatter(formatter)
    logger.addHandler(fh)

    sh = logging.StreamHandler(sys.stdout)
    sh.setFormatter(formatter)
    logger.addHandler(sh)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5296130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档