我有一个支持多线程的 HTTP Server 类,在将结果写回客户端时,它也会写入一些日志(Logging 模块)。它减慢了请求,并且由于 POST/GET 方法仅在“返回”发生后返回,所以我必须在发送结果之前写入日志。我希望通过打开另一个接收消息的线程并写入日志来做到这一点。我希望将我的 Logging 对象设置为“静态”,或者是一个唯一的类成员,并且共享给所有可以获得锁定并使用它的线程。
import logging
LOG_FILENAME = 'babyServer.log'
class Logger(object):
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)-8s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='serverLog.log',
filemode='wa')
@classmethod
def Write(cls,level,log):
level = level.lower()
if level == 'error':
logging.error(log)
if level == 'info':
logging.info(log)
if level == 'exception':
logging.exception(log)
所以从这个文件之外的某个地方,我目前有一个调用,比如 Logger.Write('info', "some info") 相反,我希望这个调用实际上会打开一个新线程,它拥有对单个 Logging 的引用我在 Logger 类中进行了配置。