首页 / 日志 / 我如何在程序中更好地利用日志记录模块?
我如何在程序中更好地利用日志记录模块?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我如何在程序中更好地利用日志记录模块?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2395字,纯文字阅读大概需要4分钟。
内容图文
![我如何在程序中更好地利用日志记录模块?](/upload/InfoBanner/zyjiaocheng/655/635de4b5cb7d44eb82c16e8199917766.jpg)
在开始使用脚本时,我没有考虑使用日志记录模块,因此我只是简单地编写如下代码:
LogMethod(LogFileName, LogMessage):
LogRlock.acquire()
LogFile = open(LogFileName, "a")
LogFile.write(LogMessage)
LogFile.close()
LogRlock.release()
但是现在由于日志记录模块可以在日志文件大小/格式控制等方面做得更好,因此我将重写上述方法.好吧,我有点想对此方法进行简单的修改,假设我会像这样编写代码:
LogMethod(LogFileName, LogMessage):
#### Do I need to destroy the instance Logger at the end of this method?
LogRlock.acquire()
Logger = logging.getLogger("Demo")
Logger.setLevel(logging.DEBUG)
SizeHandler = logging.handlers.RotatingFileHandler(filename = LogFileName, mode = "a", maxBytes = 1000000)
SimpleFormatter = logging.Formatter(fmt = '%(asctime)s%(message)s', datefmt = '[%Y-%m-%d, %H:%M:%S]:')
SizeHandler.setFormatter(SimpleFormatter)
Logger.addHandler(SizeHandler)
Logger.info(LogMessage)
LogRlock.release()
Python文档说日志记录模块是线程安全的,所以我想我真的不需要LogRlock,对吗?还有一个问题,我需要在上述方法结束时销毁该实例吗?如果是这样,我该怎么办?这是使用日志记录模块的安全方法吗?
非常感谢
解决方法:
Python docs say logging module is thread-safe, so I guess I don’t really need LogRlock, right?
正确,您不需要锁来保护您的日志记录代码.
And another question, do I need to destroy the instance at the end of above method? If so, how should I do it?
你不可以.实际上,您无法销毁Python中的对象.如果没有引用,将自动对其进行垃圾回收.
但是,除此之外,Logger对象还可以在程序的整个生命周期内保持不变.即使您可以在日志记录功能结束时销毁它,也不应这样做.
And is this a safe way to use logging module?
不,不是.正如注释中所指出的那样,您应该在记录开始时在记录器上执行记录程序的设置操作(如添加处理程序和格式化程序),而您只应执行一次操作.现在的操作方式是,每次记录一条消息时,都会添加一个处理程序,并且每个处理程序都会打印出接收到的每条消息,因此您会发现记录的第一条消息被打印一次,第二条消息被打印出来一个会被打印两次,第三个会被打印三次,依此类推,直到您最终用不必要的日志消息副本充斥日志文件.
我建议您使用某种设置函数,该函数在程序开始时被调用一次,以配置日志记录行为.设置记录器级别,添加处理程序和添加格式化程序的所有操作都在其中.然后,在使用日志记录代码的每个模块(.py文件)中,在模块级别,您可以获取适当的记录器并将其存储在模块级别的变量中:
logger = logging.getLogger("package.module")
或者,如果您在模块中使用多个记录器,请对每个记录器执行此操作.在每个需要记录消息的功能中,您都可以执行
def foo():
...
logger.info("message")
...
对logger.info的此调用将替换您自己的LogMethod.
内容总结
以上是互联网集市为您收集整理的我如何在程序中更好地利用日志记录模块?全部内容,希望文章能够帮你解决我如何在程序中更好地利用日志记录模块?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。