マルチスレッドをサポートするHTTPサーバークラスがあり、結果をクライアントに書き戻すときに、いくつかのログ(ロギングモジュール)も書き込みます。リクエストが遅くなり、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 クラスで構成しました。