当前位置: 首页 > 知识库问答 >
问题:

对远程日志使用python日志记录

冯枫
2023-03-14

我正在使用python日志记录我的程序。所有日志当前都打印在stdout上,但我希望使用POST REST调用将它们发送到远程日志服务器。当前,我的程序发出了多个日志记录的POST请求。有没有更优化的方式发送日志,我可以捆绑多个日志在一个POST请求?

import logging.handlers

class SumoHTTPHandler(logging.Handler):
    def __init__(self, url, host="collectors.sumologic.com", name=None, compressed=False):
    """
    Similar to HTTPHandler but with some custom Sumo-friendly headers
    """
        logging.Handler.__init__(self)
        self.host = host
        self.url = url
        self.name = name

    def emit(self, record):
        # this is called multiple times. 
        try:
            host = self.host
            h = httplib.HTTPS(host)
            url = self.url
            data = urllib.quote(self.format(record))
            sep = "?"
            url = url + "%c%s" % (sep, data)
            h.putrequest("GET", url)
            h.putheader("Host", host)
        except (KeyboardInterrupt, SystemExit):
            raise
        except:
            self.handleError(record)

共有1个答案

水睿
2023-03-14

不确定是否需要重新实现并创建自己的类。python中的日志模块有一个HTTPHandler,它在远程日志记录中非常有用。这里有一个你怎么做的例子

import logging
import logging.handlers
logger = logging.getLogger('Synchronous Logging')
http_handler = logging.handlers.HTTPHandler(
    '127.0.0.1:3000',
    '/log',
    method='POST',
)
logger.addHandler(http_handler)

# Log messages:
logger.warn('Hey log a warning')
logger.error("Hey log a error")
 类似资料:
  • 本文向大家介绍Powershell使用WINDOWS事件日志记录程序日志,包括了Powershell使用WINDOWS事件日志记录程序日志的使用技巧和注意事项,需要的朋友参考一下 通常,人们使用基于文件的日志。这样做没有什么问题,但是使用WINDOWS提供系统内部日志会更加简单。 如果你有管理权限,你可以随时创建一个新的日志: 该命令创造了一个名为Mylog的日志,这个事件源自”JobDUE”,”

  • 问题内容: 我正在使用Python日志记录,由于某种原因,我的所有消息都出现两次。 我有一个配置日志记录的模块: 稍后,我调用此方法来配置日志记录: 然后,在buy_ham模块中,我将调用: 由于某种原因,所有消息都出现两次。我注释掉其中一个流处理程序,还是一样。有点奇怪,不确定为什么会这样…大声笑。假设我错过了一些显而易见的事情。 干杯,维克多 问题答案: 您正在调用两次(也许使用的方法):将返

  • 我正在使用Python日志模块,并希望禁用由我导入的第三方模块打印的日志消息。例如,我使用的是如下所示: 当我执行logger.debug时,它会输出我的调试消息(“my Message!”),但它也会从我导入的任何模块中输出调试消息(如请求和许多其他东西)。 我只想看到我感兴趣的模块的日志消息。有没有可能让日志模块做到这一点?

  • 此任务将展示如何配置 Istio 创建自定义日志条目并且发送给 Fluentd 守护进程。Fluentd 是一个开源的日志收集器, 支持多种数据输出并且有一个可插拔架构。 Elasticsearch是一个流行的后端日志记录程序, Kibana 用于查看。在任务结束后, 一个新的日志流将被加载发送日志到示例 Fluentd/Elasticsearch/Kibana 栈。 在任务中,将使用 BookI

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 问题内容: 当我使用标准模块 logging 将日志写入文件时,是否将每个日志分别刷新到磁盘?例如,以下代码是否会将日志刷新10次? 如果是这样,它会变慢吗? 问题答案: 是的,它会在每次调用时刷新输出。您可以在的源代码中看到: 我真的不会介意日志记录的性能,至少在分析和发现它是瓶颈之前不会。无论如何,您始终可以创建一个在每次调用时都不会执行的子类(即使如果发生严重异常/解释器崩溃,也可能会丢失大