Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 如何从twisted.logger.logger继承?_Logging_Twisted_Logfile - Fatal编程技术网

Logging 如何从twisted.logger.logger继承?

Logging 如何从twisted.logger.logger继承?,logging,twisted,logfile,Logging,Twisted,Logfile,我有一个Twisted的tcp服务器,每个客户端都有一个日志文件。所以我继承了twisted.logger.logger 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 _

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

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时,它应该旋转。但有时无法重命名日志文件。
我想我应该在旋转之前关闭日志文件。我该怎么办?谢谢。

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

def my_logger():
    observer = textFileLogObserver(...)
    la_logger = Logger(observer=observer)
    return la_logger
如果要更改日志文件旋转行为,则需要以某种方式更改
LogFile
的行为,因为这就是实际写入日志文件的原因

幸运的是,
LogFile
只是一个具有
write
方法的对象。因此,您可以创建自己的对象,以实现
write
您喜欢的任何方式(包括您需要的任何特殊旋转逻辑),并使用它


但是,
LogFile
在旋转文件之前已经关闭了该文件。因此,请进一步调查您遇到的任何与旋转相关的错误的原因,以便修复正确的问题。

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

def my_logger():
    observer = textFileLogObserver(...)
    la_logger = Logger(observer=observer)
    return la_logger
如果要更改日志文件旋转行为,则需要以某种方式更改
LogFile
的行为,因为这就是实际写入日志文件的原因

幸运的是,
LogFile
只是一个具有
write
方法的对象。因此,您可以创建自己的对象,以实现
write
您喜欢的任何方式(包括您需要的任何特殊旋转逻辑),并使用它


但是,
LogFile
在旋转文件之前已经关闭了该文件。因此,请进一步调查您遇到的任何与旋转相关的错误的原因,以便您能够解决正确的问题。

非常感谢。我会试试你的建议。非常感谢。我会试试你的建议。