多次记录条目后,Python记录BufferingSMTPHandler输出到控制台

时间:2017-07-31 20:02:09

标签: python python-2.7 logging

基本上我想要的是找出为什么在一定数量的条目后,而不是仅仅将日志发送到处理程序,它也在终端窗口中显示它们......以及我可以做些什么来阻止它......不需要而是加号,这就是它发送4份相同的日志电子邮件的原因。 它在1-2秒内生成几乎所有日志条目

在Python 2.7.13中有一个带有Logging模块的问题,我已经使用了一些我在这里找到的例子以及从Vinay缓冲SMTP处理程序的例子,他将其包含在日志模块中以便我可以获得TLS支持它。我有2个问题,第1个是我不太满意的...我正在我编写的应用程序中执行日志记录,该应用程序在全国多个数据中心的服务器上自动连接到BMC / LOM,它收集信息在多个所有者组中,来自多个事实来源,处理连接到正确的堡垒/ jumphost组合(目前,我还在构建我自己的服务器以简化所有),并处理基于组所有权的多个不同凭据组合,制造......等等,它向技术人员,资产标签,序列号,制造商,型号,配置代码,组所有权,IP的MAC,父机箱显示资产的详细信息。如果该单元是一个节点/刀片..目前我想在调试模式下运行日志记录,而我在使用GUI(使用Tkinter构建)时敲除所有错误。在进入问题之前,我想先介绍一下应用程序的作用...问题1,当我查询并从一个组连接到主机时,我没有任何问题,我得到一个日志电子邮件包含55个(大致)日志条目,显示我正在使用该应用程序,他们查询的内容以及他们获得的结果......效果很好(除了一个小问题,这是第二个问题)。然后在另一组主机上,我得到多个日志条目涌入控制台,通常它似乎发生在我在日志中获得大约65个条目,它开始转储到控制台,它仍然通过电子邮件发送日志,但我不希望他们转储到控制台...更不用说我还有其他多个用户可以调用的任务,如果我需要它们会生成更多信息和调试日志(目前因为它在调试级别运行)对我来说是一个问题)..问题2,当缓冲SMTP处理程序发送日志时,我得到4份相同的电子邮件,我找不到任何解释这个..我有另一个版本的这个当它发送记录电子邮件时,它在一个单独的线程上运行,我已经尝试了250的容量(对于这个迭代来说应该足够了)500,750,1500 ...它总是看起来,一旦我达到65个条目,它开始将它们推送到控制台。

class log_handle(logging.handlers.BufferingHandler):
        def __init__(self, (mailhost, port), fromaddr, toaddrs, subject, capacity):
                logging.handlers.BufferingHandler.__init__(self, capacity)
                self.mailhost = mailhost
                self.mailport = None
                self.fromaddr = fromaddr
                self.toaddrs = toaddrs
                self.subject = subject
                self.username = lg1a
                self.password = lg2a

        def flush(self):
                if len(self.buffer) > 0:
                        try:
                                import smtplib
                                import string
                                try:
                                        from email.utils import formatdate
                                except ImportError:
                                        formatdate = self.date_time
                                port = self.mailport
                                if not port:
                                        port = smtplib.SMTP_PORT
                                smtp = smtplib.SMTP(self.mailhost, port)
                                msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (self.fromaddr, string.join(self.toaddrs, ","), self.subject)
                                if self.username:
                                        smtp.ehlo()
                                        smtp.starttls()
                                        smtp.ehlo()
                                        smtp.login(self.username, self.password)
                                for record in self.buffer:
                                        s = self.format(record)
                                        msg = msg + s + "\r\n"
                                smtp.sendmail(self.fromaddr, self.toaddrs, msg)
                                smtp.quit()
                        except (KeyboardInterrupt, SystemExit):
                                self.handleError(record)

logger = logging.getLogger('redacted: ' +basever+ ' CLI')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('Logged by: ' +user+ ' @ %(asctime)s - %(name)s - %(levelname)s ::::  %(message)s', datefmt='%m/%d/%Y %H:%M')
mail_handle = log_handle(("redacted", redacted), "redacted", ['redacted'], 'redacted error logging USER: ' +user, 1500)
mail_handle.setLevel(logging.DEBUG)
mail_handle.setFormatter(formatter)
logger.addHandler(mail_handle)
atexit.register(logging.shutdown)

我的日志示例

  

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::通过hosname搜索

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG ::::编辑 - q = host =编辑 - {' val_eq':&# 39;编辑',' tag_eq':' host.name'}

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::设置编辑的API

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG ::::编辑

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::调用编辑后的API

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG ::::存储数据

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::主机已编辑

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG ::::编辑

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::正则表达式搜索已编译

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::找到OOB IP

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG :::: OOB IP

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO   ::::找到OOB MAC

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG :::: OOB MAC编辑

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::找到Eth0 IP

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG :::: Eth0 IP编辑

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - INFO ::::找到Eth0 MAC

     

记录:Matt @ 07/31/2017 14:41 - 编辑版本:2.2.0a CLI - DEBUG :::: Eth0 MAC编辑

(我之前从未张贴过这里,如果我有错误,请随时告诉我)

0 个答案:

没有答案