首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何继承twisted.logger.Logger?

如何继承twisted.logger.Logger?
EN

Stack Overflow用户
提问于 2017-10-31 17:02:03
回答 1查看 107关注 0票数 1

我有一个带有Twisted的tcp服务器,每个客户机都有一个日志文件。所以我继承了twisted.logger.Logger。

代码语言:javascript
复制
from twisted.logger import Logger, textFileLogObserver
from twisted.python.logfile import LogFile

class LALogger(Logger):
    logger_root_path = os.path.join(sys.path[0], 'log')

    def __init__(self, log_folder, log_file_name):
        super().__init__(namespace='')
        logger_path = os.path.join(self.logger_root_path, log_folder)
        self.log_file = LogFile(log_file_name + '.log', logger_path,
                            rotateLength=1000000, maxRotatedFiles=5)
        self.observer = textFileLogObserver(
            self.log_file, timeFormat='[%Y-%m-%d %H:%M:%S]')

当日志文件大于1000000时,它应该轮换。但有时无法重命名日志文件。我想我应该在轮换之前关闭日志文件。我该怎么办?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-01 20:46:46

不要子类化Logger。如果您想要一个具有特定观察者的Logger,只需编写一个函数:

代码语言:javascript
复制
def my_logger():
    observer = textFileLogObserver(...)
    la_logger = Logger(observer=observer)
    return la_logger

如果您想要更改日志文件的轮换行为,则需要以某种方式更改LogFile的行为-因为这才是实际写入日志文件的内容。

幸运的是,LogFile只是一个带有write method.So的对象,你可以创建自己的对象,以任何你喜欢的方式实现write (包括你需要的任何特殊的旋转逻辑),然后使用它。

但是,在旋转文件之前,LogFile已经关闭了该文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47031476

复制
相关文章

相似问题

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