首页 / 日志 / python-GUI程序的日志记录策略
python-GUI程序的日志记录策略
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-GUI程序的日志记录策略,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3635字,纯文字阅读大概需要6分钟。
内容图文
![python-GUI程序的日志记录策略](/upload/InfoBanner/zyjiaocheng/688/63cdd7c0886246c29bcb6e8ef3d28a89.jpg)
我认为在我的应用程序(绘画类程序)中添加一些调试日志并将此信息写入文件可能会有所帮助.我当前的调试策略是连接自定义异常侦听器(sys.excepthook),并允许用户通过电子邮件将导致崩溃的堆栈跟踪信息发送给我.
在查看用户所做的使程序崩溃的过程中,这非常方便,但是我认为日志文件肯定可以提供帮助.
我想知道什么是最好的方法.我正在考虑通过命令行开关启用日志记录,并在程序的“运行”中创建日志,并在发生崩溃时通过电子邮件将日志副本发送给自己.但是,如果应用程序不在调试模式下,日志将无济于事!
我有点担心日志填充得太快-如果将日志放置在某些鼠标移动事件处理程序中,那么它将创建许多条目.另外,日志文件可能会变得非常大,并且在检查错误报告时只会填充与我无关的信息.
你们如何处理?我对记录的频率感兴趣-由于我的应用程序响应了许多事件(例如鼠标移动;取决于用户输入),因此我不想创建过多的记录.
解决方法:
如前所述,您可以使用记录器模块.您可以设置默认的日志记录级别(例如,警告),并在调试之前将所有类型的消息放入代码中,直到严重为止.简而言之,如果将日志记录级别设置为“警告”,即使您的代码记录了调试消息,它们也不会出现在文件(或stdout)中.这是因为日志记录模块将仅记录优先级高于或等于警告(警告,错误和严重)的消息.
作为简单的解释,请看以下代码:
import logging
import logging.handlers as handlers
logger = logging.getLogger('myapp')
hdlr = logging.FileHandler('/tmp/myapp.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
logger.debug('debug!')
logger.info('info!')
logger.warning('warning!')
logger.error('error!')
logger.critical('critical!')
它创建一个名为myapp.log的文件:
magun@~: cat /tmp/myapp.log
2010-11-05 12:27:25,359 WARNING: warning!
2010-11-05 12:27:25,362 ERROR: error!
2010-11-05 12:27:26,071 CRITICAL: critical!
magun@~:
如果您担心文件大小可以使用旋转日志,则女巫将根据您的条件丢弃最旧的日志:
import logging
import logging.handlers as handlers
logger = logging.getLogger('myapp')
hdlr = handlers.RotatingFileHandler('/tmp/log/myapp.log', maxBytes=100, backupCount=5)
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
for i in range(20):
logger.debug('debug%i!'%i)
logger.info('info%i!'%i)
logger.warning('warning%i!'%i)
logger.error('error%i!'%i)
logger.critical('critical%i!'%i)
在这种情况下,我使用了一个最大大小为100字节的日志文件(相当小,应该提高它),备份计数为5.这意味着当日志达到100字节时,它将被“旋转”:一个新的(空的) )将创建myapp.log,旧的将变为myapp.log.1.在下一个轮换中,myapp.log.1将变为myapp.log.2,myapp.log将成为新的myapp.log.1.它将重复直到我们拥有myapp.log,myapp.log.1,myapp.log.2,… myapp.log.n(在此示例中,限制为myapp.log.5).当我们碰到这个,并且需要旋转日志时,myapp.log.5文件将被丢弃.因此,大小限制为5 * 100bytes.
看一下发生了什么:
magun@~: ls /tmp/log/
myapp.log myapp.log.1 myapp.log.2 myapp.log.3 myapp.log.4 myapp.log.5
magun@~: cat /tmp/log/myapp.log
2010-11-05 12:33:52,369 ERROR: error19!
2010-11-05 12:33:52,376 CRITICAL: critical19!
magun@~: cat /tmp/log/myapp.log.1
2010-11-05 12:33:52,362 CRITICAL: critical18!
2010-11-05 12:33:52,369 WARNING: warning19!
magun@~: cat /tmp/log/myapp.log.2
2010-11-05 12:33:52,355 WARNING: warning18!
2010-11-05 12:33:52,362 ERROR: error18!
magun@~: cat /tmp/log/myapp.log.3
2010-11-05 12:33:52,348 ERROR: error17!
2010-11-05 12:33:52,355 CRITICAL: critical17!
magun@~: cat /tmp/log/myapp.log.4
2010-11-05 12:33:52,340 CRITICAL: critical16!
2010-11-05 12:33:52,348 WARNING: warning17!
magun@~: cat /tmp/log/myapp.log.5
2010-11-05 12:33:52,333 WARNING: warning16!
2010-11-05 12:33:52,340 ERROR: error16!
magun@~:
如您所见,我们丢失了许多日志(0-15),但是最近的日志在那里,从而保留了用户的可用空间.不要忘记从下至上阅读日志:)
内容总结
以上是互联网集市为您收集整理的python-GUI程序的日志记录策略全部内容,希望文章能够帮你解决python-GUI程序的日志记录策略所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。