【问题标题】:log messages to an array/list with logging将消息记录到带有日志记录的数组/列表中
【发布时间】:2015-07-12 04:23:32
【问题描述】:

目前正在使用 python 日志记录将消息记录到日志文件和控制台(如果 --verbose)。

如何配置日志记录以将消息记录到数组/列表中?

【问题讨论】:

  • 在这个问题上工作了好几个小时,在发布这个问题后,我在 30 分钟左右后才弄明白

标签: python logging


【解决方案1】:
  1. 发帖后想通了。
  2. 对字符串使用了 Stream。
  3. 这里是sn-p的代码,不包括stdout Stream和普通的logger文件句柄:

    import io
    import logging
    
    logger = logging.getLogger()
    errors = io.StringIO()
    formatter = logging.Formatter('%(asctime)s - %(module)s.%(funcName)s() - %(levelname)s - %(message)s',"%Y-%m-%d %H:%M:%S")
    eh = logging.StreamHandler(errors)
    eh.setFormatter(formatter)
    logger.addHandler(eh)
    
    logger.error("This is a test error message")
    contents=errors.getvalue()
    print("error string=>{}".format(contents))
    errors.close()
    

【讨论】:

  • 您知道,既然这是首选答案,您应该真正“接受”它。 (旁注:您似乎有过在 cmets 中承认好的答案但不接受它们的历史;如果您回到回答良好的问题并接受其中一个答案,那就太好了。)
  • 我得到 'TypeError: can't write str to text stream' with python 2.6.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2012-02-08
  • 2015-05-21
  • 2021-01-16
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
相关资源
最近更新 更多