我在Python應用程序中的日誌記錄設置,它記錄到文件和MongoDB。該設置是這樣的:像這樣Python記錄與上下文
[logger_root]
handlers=myHandler,mongoHandler
level=DEBUG
qualname=myapp
[handler_myHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=myFormatter
args=('myapp.log', 'a',20000000,10)
[handler_mongoHandler]
class=myapp.MongoLogger.MongoLogger
level=INFO
args=('log',)
[formatter_myFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
而且MongoLogger已發出()函數:
def emit(self, record):
logdata = record.__dict__
try:
if(self.data == None):
self.initDb()
self.logtable.insert(logdata)
except:
self.handleError(record)
測井像這樣做,那麼:
logger.info("Processing account %s..." % account)
它的工作原理相當不錯,但現在我有一個額外的要求。我希望它有一些上下文 - 也就是說,能夠定義自定義值 - 例如帳戶名稱 - 因此在帳戶處理中完成的每個日誌都會將帳戶名稱作爲record
的一部分傳遞給上面的emit
,也可用於格式化程序在myFormatter
字符串中。
是否有可能與記錄模塊,以做到這一點?有沒有更好的方法可以做到這一點?
+1。這比我的解決方案好得多! – TorelTwiddler
啊哈,錯過了一個 - 額外的似乎正是我需要的,謝謝! – StasM
另外LoggingAdapter可以幫助你完成lambda所做的事情,請看這裏:http://docs.python.org/howto/logging-cookbook.html#context-info – StasM