[英]asynchronous logging with python and mongodb
我需要記錄我的Web應用程序的特定活動(基於Python - 與Postgres的SQL煉金術),我不想在我的Postgres數據庫上轉儲日志信息(為什么要用垃圾填滿?)或使用日志文件(很難搜索)。
理想情況下,我想將所有內容都放在另一個數據庫中,並以異步方式執行此操作。 由於日志記錄是異步的,因此我不需要擔心寫入操作失敗並破壞執行所有重要業務的代碼。 此外,如果我錯過了一些記錄事件,它可能沒什么大不了的。
Mongo似乎是一個很好的解決方案,因為它非常適合編寫操作並且易於設置。
問題是我沒有設法找到任何滿足我需求的python工具,尤其是異步需求。
有什么想法嗎?
異步登錄到mongodb可以通過在log4j中添加AsyncAppender來實現,它將引用一個真正的appender。
要獲得基本的理解, 請訪問http://wiki.python.org/jython/Log4jExample
log4mongo
將數據推送到mongo.Python驅動程序可以在http://log4mongo.org/display/PUB/Log4mongo+for+Python上找到
添加AsyncAppender會使日志記錄異步
僅供參考,等效log4j文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="MongoDB" class="org.log4mongo.MongoDbAppender" >
<param name="hostname" value="127.0.0.1" />
<param name="port" value="27017" />
<param name="databaseName" value="LogDB"/>
<param name="collectionName" value="Log" />
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="50000"/>
<appender-ref ref="MongoDB"/>
</appender>
<root>
<level value="all"/>
<appender-ref ref="ASYNC"/>
</root>
我正在使用帶有pip的log4mongo :
pip install log4mongo
它允許使用默認的日志記錄系統。 示例(從doc中提取):
import logging
from log4mongo.handlers import MongoHandler
logger = logging.getLogger('test')
logger.addHandler(MongoHandler(host='localhost'))
logger.warning('test')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.