Logging 如何从twisted.logger.logger继承?
我有一个Twisted的tcp服务器,每个客户端都有一个日志文件。所以我继承了twisted.logger.loggerLogging 如何从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 _
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
在旋转文件之前已经关闭了该文件。因此,请进一步调查您遇到的任何与旋转相关的错误的原因,以便您能够解决正确的问题。非常感谢。我会试试你的建议。非常感谢。我会试试你的建议。