在使用时间轮转记录器创建的每个日志文件中写入标头

我制作了一个时间轮转的记录器,该记录器在午夜创建了一个新的日志文件。在我的日志文件中,我想在每个文件的顶部写一个标题。我正在寻找一种有效的方法来调用一个函数,该函数在创建文件后立即将此标头写入日志文件。

import logging
from logging.handlers import TimedRotatingFileHandler

# create time-rotating log handler
logHandler = TimedRotatingFileHandler(logfile, when='midnight')

# create logger
self.log = logging.getLogger('MyTimeRotatingLogger')
self.log.addHandler(logHandler)

我已经解决了!基本上,所有需要做的就是重写的doRollover方法,TimedRotatingFileHandler在这个新的父类中还需要一些代码才能传递日志记录实例并设置标头内容。在此,为遇到类似情况的人们提供一个广泛的例子。

from logging.handlers import TimedRotatingFileHandler

class MyTimedRotatingFileHandler(TimedRotatingFileHandler):
    def __init__(self, logfile, when, interval):
        super(MyTimedRotatingFileHandler, self).__init__(logfile, when, interval)
        self._header = ""
        self._log = None

    def doRollover(self):
        super(MyTimedRotatingFileHandler, self).doRollover()
        if self._log is not None and self._header != "":
            self._log.info(self._header)

    def setHeader(self, header):
        self._header = header

    def configureHeaderWriter(self, header, log):
        self._header = header
        self._log = log

# create time-rotating log handler
logHandler = MyTimedRotatingFileHandler(logfile, when='midnight')
form = '%(asctime)s %(name)s %(levelname)s: %(message)s'
logFormatter = logging.Formatter(form)
logHandler.setFormatter(logFormatter)

# create logger
log = logging.getLogger('MyLogger')
logHandler.configureHeaderWriter('test-header', log)
log.addHandler(logHandler)
log.setLevel(logging.INFO)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用时间将所有文件从子文件写入父文件?

来自分类Dev

为什么非root记录器不向日志文件写入任何日志?

来自分类Dev

将标头写入python日志文件,但仅当记录被写入时

来自分类Dev

如何为每个文件写入和控制台写入指定特定的记录器级别

来自分类Dev

使用Poco库,如何在分离器通道记录器中为每个通道设置不同的日志级别?

来自分类Dev

Python服务-使用时间戳写入文件名

来自分类Dev

Python:多个记录器将日志写入相似的文件

来自分类Dev

使用时间模块时无法写入csv

来自分类Dev

每个记录器的动态登录文件

来自分类Dev

python中的记录器模块不会创建多个文件

来自分类Dev

使用时间序列中每个id的值的列制作新的pandas数据框

来自分类Dev

如何使用时间选择器创建动态文本框

来自分类Dev

使用时间选择器Android获取时间

来自分类Dev

转到网络服务器-不要使用时间戳缓存文件

来自分类Dev

Winston javascript记录器正在创建两个单独的日志文件。如何将所有条目记录到单个文件中?

来自分类Dev

NLog记录器未记录到发布版本中已配置的日志文件

来自分类Dev

如果禁用了记录器,则防止创建空的日志文件

来自分类Dev

在JavaScript中使用时间轴创建图形

来自分类Dev

记录器在某些文件中无法使用

来自分类Dev

使用时间戳bash删除一个小时以上的文件中的行

来自分类Dev

如何使用时间戳在 Perl 中获取最近的文件

来自分类Dev

如何使用自定义记录器在Spring Boot中记录访问日志

来自分类Dev

Elasticsearch 5.5 - 使用自定义日志目录时出错:无法在 '' 创建记录器

来自分类Dev

在PIG中使用时间戳记合并文件

来自分类Dev

如何使用时间范围grep文件

来自分类Dev

创建以日志消息为前缀的记录器

来自分类Dev

如何使用记录器写入信息以进行记录

来自分类Dev

Java:如何使两个记录器写入不同的文件(记录器)

来自分类Dev

不追加但覆盖记录器的日志文件

Related 相关文章

  1. 1

    如何使用时间将所有文件从子文件写入父文件?

  2. 2

    为什么非root记录器不向日志文件写入任何日志?

  3. 3

    将标头写入python日志文件,但仅当记录被写入时

  4. 4

    如何为每个文件写入和控制台写入指定特定的记录器级别

  5. 5

    使用Poco库,如何在分离器通道记录器中为每个通道设置不同的日志级别?

  6. 6

    Python服务-使用时间戳写入文件名

  7. 7

    Python:多个记录器将日志写入相似的文件

  8. 8

    使用时间模块时无法写入csv

  9. 9

    每个记录器的动态登录文件

  10. 10

    python中的记录器模块不会创建多个文件

  11. 11

    使用时间序列中每个id的值的列制作新的pandas数据框

  12. 12

    如何使用时间选择器创建动态文本框

  13. 13

    使用时间选择器Android获取时间

  14. 14

    转到网络服务器-不要使用时间戳缓存文件

  15. 15

    Winston javascript记录器正在创建两个单独的日志文件。如何将所有条目记录到单个文件中?

  16. 16

    NLog记录器未记录到发布版本中已配置的日志文件

  17. 17

    如果禁用了记录器,则防止创建空的日志文件

  18. 18

    在JavaScript中使用时间轴创建图形

  19. 19

    记录器在某些文件中无法使用

  20. 20

    使用时间戳bash删除一个小时以上的文件中的行

  21. 21

    如何使用时间戳在 Perl 中获取最近的文件

  22. 22

    如何使用自定义记录器在Spring Boot中记录访问日志

  23. 23

    Elasticsearch 5.5 - 使用自定义日志目录时出错:无法在 '' 创建记录器

  24. 24

    在PIG中使用时间戳记合并文件

  25. 25

    如何使用时间范围grep文件

  26. 26

    创建以日志消息为前缀的记录器

  27. 27

    如何使用记录器写入信息以进行记录

  28. 28

    Java:如何使两个记录器写入不同的文件(记录器)

  29. 29

    不追加但覆盖记录器的日志文件

热门标签

归档