python日志统计_使用python日志记录来统计内存使用情况

我在一个项目中使用python的日志模块来显示消息。我有自己的项目,它使用来自公共存储库的模块,因此我不想更改代码中该部分中的任何日志记录语句。在

但是,内存使用在我的程序中似乎是一个相当大的问题,所以我想在每个日志语句中记录内存使用情况,同时记录时间和消息,如下所示:YYYY-MM-DD HH:MM:SS,mmm NAME LEVEL MemTotal:#M,Swap:#M MESSAGE

有没有一种简单的方法可以使用日志模块来完成这项工作?在

我认为方法是使用一个过滤器来添加上下文信息(参见http://docs.python.org/howto/logging-cookbook.html#filters-contextual),但是似乎没有一种方法可以一次将这个过滤器添加到所有级别和日志记录器的所有实例中。

文档建议将过滤器添加到处理程序而不是记录器中,因为否则它将不会在外部模块中使用过滤器。但是,以最明显的方式(创建一个处理程序,添加过滤器,然后将处理程序附加到根日志记录器)执行此操作会产生意想不到的行为。我要么根本没有输出,也没有错误消息,要么(当首先使用basicConfig时)我得到了正确的行为,只是它也给出了错误消息。我怀疑在最后一个案例中,我得到了两个处理程序,一个正常工作,另一个错误工作。在

到目前为止,我已经提出了以下解决方案,我认为这不太优雅

(感谢https://stackoverflow.com/a/938800/819110)。最难看的部分是我必须手动从记录器中提取处理程序,并添加过滤器。我似乎无法在配置文件中添加过滤器,这样会更方便。

尽管如此,这种方法(在Linux上)似乎是可行的,尽管我怀疑应该有更直接的方法来实现这一点。在

^{pr2}$

其中external_module的内容如下:log = logging.getLogger(__name__)

def function_from_module_using_logging():

log.warning("Bar")

而logging.conf是这样的:[loggers]

keys=root

[handlers]

keys=fileHandler

[formatters]

keys=memuseFormatter

[logger_root]

level=DEBUG

handlers=fileHandler

[handler_fileHandler]

class=FileHandler

level=DEBUG

formatter=memuseFormatter

args=('some.log','w')

[formatter_memuseFormatter]

format=%(asctime)-15s %(name)-5s %(levelname)-8s %(memuse)-22s %(message)s

datefmt=

更好的解决方案将是最受欢迎的!在

编辑:引用了错误的销售订单问题。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值