py doc logging模块的设计思想

1 所有的Logger 对象没有都没有直接的 initiate 方法,全部都过logging.getLogger的方式获得。
“Note that Loggers are never instantiated directly, but always through the module-level function logging.getLogger(name).”
这种设计意图是在应用程序的任何地方可以通过name来获得同一个Logger,(设计时是否可以写一个py,然后加载源代码的时候执行特定name的logger的配置工作。之后在其余代码中就可以直接log了~,一处设置,多处使用~

2 模块即logging 自己有一套 debug,info方法,默认使用root作为name,典型接口:
logging.log(level, msg[, *args[, **kwargs]])
但是模块方法不要用在多线程,请参考文档,log接口下面

3 logging.basicConfig([**kwargs])
默认的是:creating a StreamHandler with a default Formatter(控制台输出)
重要特性:This function does nothing if the root logger already has handlers configured for it. 这使它"看上去"只有第一执行有效(但应该不完全是吧,未验证..)
多线程注意:PLEASE NOTE: This function should be called from the main thread before other threads are started.

4 在不特意制定handler的情况下,通过logging模块及的 getLogger(name)获取多个Logger, 他们将输出到同一个地方,这种设置是让多个logger,(name区分)来写同一个log文件(输出destination)! [color=red]而且, logging是模块是 threadsafe, 放心用:)[/color]

5 可以通过为每一个Logger,Name区分,配置一个 Handler。 1对1服务。
一个logger 也可以设置多个Handler, 1:N 服务
多个logger也可以指向同一个Handler, N:1 服务,
而Formater 是针对Handler来设置。
恩,理了一下感觉它很灵活了!

6 我的需求。为每一个新的事件,如一个活动的py,指定一个专门的log文件。记录业务。
使用1:1的logger,配比即可。
而出错的情况则使用 application 整个应用程序的log。 为真个app配置一个大log即可。

7 问题,我的使用方式一般是在 django服务上挂多个不同的活动py,有时间限定,如何来管理特定 Logger的生命周期呢? 是需要用的时候载入,还是django服务启动的时候载入,如果多个活动累计下来,那些活动过期不用的Logger岂不是白占用了内存...(他们占得多么?有必要操心管理么?)

8 level [color=red]覆盖问题!!!:默认情况下hanlder的level会被logger的level过滤,logger默认level=WARNING,所以要想handler能处理更低级的log,先把logger弄到底[/color]:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值