iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python怎么实现日志实时监测
  • 448
分享到

Python怎么实现日志实时监测

2023-06-29 20:06:22 448人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python怎么实现日志实时监测”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现日志实时监测”吧!介绍观察者模式:是一种行为型设计模式。主要关注的是对象

这篇文章主要讲解了“python怎么实现日志实时监测”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现日志实时监测”吧!

介绍

观察者模式:是一种行为型设计模式。主要关注的是对象的责任,允许你定义一种订阅机制,可在对象事件发生时通知多个"观察"该对象的其他对象。用来处理对象之间彼此交互。

观察者模式也叫发布-订阅模式,定义了对象之间一对多依赖,当一个对象改变状态时,这个对象的所有依赖者都会收到通知并按照自己的方式进行更新。

观察者设计模式是最简单的行为模式之一。在观察者设计模式中,对象维护了一个依赖(观察者)列表,以便主题可以使用观察者定义的任何方法通知所有观察者它所发生的变化。

可使用观察者模式应用场景

在广播或者发布订阅系统的情形中,你会看到观察者设计模式的用法,它的主要使用场景如下:

分布式系统中实现事件服务。

广播或发布/阅系统情形中。

用作新闻机器的框架

股票监测机器人。

观察者模式类图

Python怎么实现日志实时监测

观察者模式类图

发布者Publisher:向其他对象发送值得关注的事件。事件会在发布者自身状态改变或执行特定行为后发生。发布者中包含一个允许新订阅者加入和当前订阅者离开列表的订阅机制。

订阅者Subscriber:定义通知接口。一般情况下,该接口仅包含一个update()更新方法。方法中可以有多个参数,使发布者能在更新时传递事件详细信息。

客户端Client:分别创建发布者和订阅者对象,然后为订阅者注册,发布者更新。

观察者模式示例

假如我们对应用函数运行状态进行监测,当发生异常时报警记录,可通过观察者模式进行信息订阅:1、短信 2、日志 3、邮件

代码实现---subscription_model.py

1、创建订阅者类

Subscriber订阅者:所有希望关注发布者状态变化的其他对象。

这里提供了三个主要的订阅者(观察者)接口,跟踪着同一个发布者类的事件。主要包括:

1)、每个具体订阅者__init()方法使用attach()方法向发布者进行注册以获取信息更新。

2)、具体订阅者的update()更新消息。

#抽象订阅者from abc import ABCMeta,abstractmethodclass Subscriber(metaclass=ABCMeta):    #向具体订阅者发送消息的方法    @abstractmethod    def update(self):        pass#具体订阅者#1、短信订阅者class SMSSubscriber(Subscriber):    def __init__(self,publisher):        self.publisher = publisher        self.publisher.attach(self)    def update(self):        print(type(self).__name__,self.publisher.getNews())#2、邮件订阅者class EmailSubscriber(Subscriber):    def __init__(self, publisher):        self.publisher = publisher        self.publisher.attach(self)    def update(self):        print(type(self).__name__,self.publisher.getNews())        info = self.publisher.getNews()        # 发送邮件        Sender_mail(info).sender_mail()#3、日志订阅(文件存储)class LoggerSubscriber(Subscriber):    def __init__(self, publisher):        log_dir = os.path.expanduser(r".\apps\Mapview\logs")        log_file = os.path.join(log_dir, "file_{time}.log")        logger.add(log_file, rotation="100KB", retention=2)        self.publisher = publisher        self.publisher.attach(self)    def update(self):        print(type(self).__name__,self.publisher.getNews())        info=self.publisher.getNews()        logger.info(f"{info}")

2、创建发布者类

Publisher发布者:将自身的状态改变通知其他对象,为发布者添加订阅机制,每个对象都能订阅或取消订阅者事件流。

主要包括:

1)self.__subscribers = []:一个用于存储订阅对象列表

2)供订阅者来注册NewsPublisher或删除订阅用户。

3)几个用于添加、删除或查看列表中订阅者的公有方法。

4)notifySubscribers(self):用于通知所有订阅者出现新的信息,发送者会遍历订阅列表并通过内部调用具体订阅者实现的update()方法来实现。

5)创建新消息和返回最新消息。

#创建发布者class NewsPublisher:    def __init__(self):        self.__subscribers = []        self.__latestNews = None        #将订阅者添加到队列中    def attach(self,subscriber):        self.__subscribers.append(subscriber)        #从订阅的主题里面移除    def detach(self):        return self.__subscribers.pop()    #生成观察者列表    def subscribers(self):        return [type(x).__name__ for x in self.__subscribers]    #发送通知给相关的主题订阅者    def notifySubscribers(self):        for sub in self.__subscribers:            #update()方法由具体的观察者或订阅者实现的            sub.update()  #推送更新        #创建新消息    def addNews(self,news):        self.__latestNews = news        #返回最新消息,并通知观察者    def getNews(self):        return "Got News:",self.__latestNews

3、应用客户端-Map_server_client.py

订阅者通常需要一些上下文信息正确处理更新。因此,发布者通常会将一些上下文数据作为通知方法的参数传递。

这里给第一篇文章留下的尾巴补充一下,客户端实例化get_Map_model方法添加带参数装饰器,@fail_data(msg='地图加载失败')添加接口调用失败处理机制,追加日志记录。这里可以进一步将更多细节参数添加到日志中,装饰器传参并在接口中声明通知方法及参数,这样发布者在发出通知时传递一些上下文数据。

from apps.tools.subscription_model import NewsPublisher,LoggerSubscriber,EmailSubscriberimport functools#如果加载失败,调用订阅者def publisher(info):    news_publisher = NewsPublisher()    # for Subscribers in [EmailSubscriber, LoggerSubscriber]:    for Subscribers in [LoggerSubscriber]:        # eval(LoggerSubscriber)(news_publisher)        Subscribers(news_publisher)        print("\nSubscribers", news_publisher.subscribers())        news_publisher.addNews(f"{info}")        news_publisher.notifySubscribers()#处理异常的装饰器def fail_data(msg='地图加载失败'):    def catch_exception(origin_func):        @functools.wraps(origin_func)        def wrapper(*args, **kwargs):            try:                u = origin_func(*args, **kwargs)                print("这个函数正常执行:%s" % origin_func.__name__)                return u            except Exception as e:                info = f"{msg}:{e.__doc__}"                """                接口调用失败处理机制,追加日志                """                print(info)                publisher(info)                # news_publisher = NewsPublisher()                # LoggerSubscriber(news_publisher)                # print("\nSubscribers", news_publisher.subscribers())                # news_publisher.addNews(f"{info}")                # news_publisher.notifySubscribers()        return wrapper    return catch_exception

4、测试

if __name__ == '__main__':    from loguru import logger    from apps.tools.Sender_Email import Sender_mail    news_publisher =NewsPublisher()    for Subscribers in [LoggerSubscriber]:        print(Subscribers)        Subscribers(news_publisher)    print("\nSubscribers",news_publisher.subscribers())    news_publisher.addNews("地图加载失败!")    news_publisher.notifySubscribers()

结果

class '__main__.LoggerSubscriber';

Subscribers ['LoggerSubscriber']
LoggerSubscriber ('Got News:', '地图加载失败!')
2022-04-05 16:38:00.667 | INFO     | __main__:update:81 - ('Got News:', '地图加载失败!')

感谢各位的阅读,以上就是“Python怎么实现日志实时监测”的内容了,经过本文的学习后,相信大家对Python怎么实现日志实时监测这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python怎么实现日志实时监测

本文链接: https://www.lsjlt.com/news/326424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python怎么实现日志实时监测
    这篇文章主要讲解了“Python怎么实现日志实时监测”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现日志实时监测”吧!介绍观察者模式:是一种行为型设计模式。主要关注的是对象...
    99+
    2023-06-29
  • Python实现日志实时监测的示例详解
    目录介绍观察者模式类图观察者模式示例1、创建订阅者类2、创建发布者类3、应用客户端-Map_server_client.py4、测试介绍 观察者模式:是一种行为型设计模式。主要关注的...
    99+
    2024-04-02
  • Python如何实现实时监控Linux日志?
    随着互联网和数据的快速发展,日志数据越来越重要。日志数据不仅可以用于问题排查和系统优化,还可以用于业务分析和安全检测等方面。在Linux系统中,日志数据是非常重要的,因为它可以记录系统的运行状况、应用程序的运行状态以及用户的操作行为等等。...
    99+
    2023-08-28
    实时 日志 linux
  • 如何使用Python和Linux一起实现实时日志监控?
    日志监控是现代软件开发过程中必不可少的一环。通过监控日志,我们可以了解系统的运行情况,找出问题所在,并及时进行修复,从而提高系统的稳定性和可靠性。本文将介绍如何使用Python和Linux一起实现实时日志监控。 一、安装必要的软件 在开始...
    99+
    2023-08-28
    实时 日志 linux
  • 如何使用Python实时监控Linux日志?
    当我们在管理Linux系统时,日志文件是一个非常重要的工具。它们可以帮助我们了解系统的运行状况,检测错误和问题,并提供有用的信息来改进和优化系统。但是,手动监控日志文件是一项耗时的任务,并且可能错过重要信息。在本文中,我们将介绍如何使用Py...
    99+
    2023-08-28
    实时 日志 linux
  • 实时监控 Apache 日志,Python 是最佳选择吗?
    如果你是一名系统管理员或者开发人员,你可能需要监控 Apache Web 服务器的日志文件。Apache 日志文件可以提供有关网站访问情况的详细信息,例如访问者的 IP 地址、访问时间、请求的页面和响应代码。这些信息对于优化网站性能和安全...
    99+
    2023-08-25
    实时 apache bash
  • PHP 开发中 Elasticsearch 实现实时日志监控与报警
    随着互联网的普及和数据量的不断增长,日志的实时监控和报警成为了很多系统开发中必备的功能。在PHP开发中,我们可以利用Elasticsearch这个强大的搜索引擎和分析工具来实现实时日志监控与报警功能。本文将详细介绍如何使用PHP开发,利用E...
    99+
    2023-10-21
    elasticsearch 实时监控 报警
  • GoLang日志监控系统实现
    目录日志监控系统项目简答介绍系统架构读取模块具体实现日志解析模块日志监控系统 Nginx(日志文件) -> log_process (实时读取解析写入) -> influ...
    99+
    2022-12-15
    GoLang日志监控 GoLang日志
  • Graylog是否支持实时日志监控
    是的,Graylog支持实时日志监控。通过Graylog的实时搜索功能和流式处理机制,用户可以即时查看和分析日志数据,并且通过实时警...
    99+
    2024-04-02
  • Nagios怎么实现对日志文件的监控
    Nagios可以通过使用插件来实现对日志文件的监控。以下是一种实现方式: 首先,您需要安装一个插件,例如check_logfil...
    99+
    2024-04-02
  • python自定义日志怎么实现
    这篇文章主要介绍了python自定义日志怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、导入logging模块:import logging2、创建日志收...
    99+
    2023-06-15
  • Python 实时日志平台 Sentry
    简介     Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建,其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。。Sentry 可以帮助你将 Python 程序的所有 exception 自动记录...
    99+
    2023-01-31
    实时 平台 日志
  • Linux下如何实时监控日志文件
    这篇文章给大家分享的是有关Linux下如何实时监控日志文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何在Linux中实时查看日志文件的内容有很多实用工具可以帮助用户在文件修改或不断更新时跟踪或监控文件发生的...
    99+
    2023-06-27
  • Linux中如何实时监控日志文件
    这期内容当中小编将会给大家带来有关Linux中如何实时监控日志文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. tail Command – Monitor Logs in Re...
    99+
    2023-06-16
  • Go中的路径实时监测,接口怎么实现?
    在Go语言中,有时候我们需要实时监测某个目录下的文件变化,以便于及时地做出相应的处理。例如,我们需要监测某个文件夹下的文件,当有新的文件添加进去或者文件被删除时,我们需要能够及时地收到通知。那么,在Go语言中,我们该如何实现这样的功能呢?...
    99+
    2023-09-01
    接口 实时 path
  • Linux实时日志监控:Python新手应该如何入门?
    在Linux系统中,日志是一个非常重要的组成部分,它记录了系统的运行状态、错误信息以及用户的操作记录等等。实时监控日志可以及时发现系统运行中的问题,避免出现严重的故障。本文将介绍如何使用Python实现Linux实时日志监控。 一、日志文...
    99+
    2023-08-28
    实时 日志 linux
  • Grafana中怎么实现日志和事件数据监控
    在Grafana中实现日志和事件数据监控,一般需要结合其他工具和数据源,比如Elasticsearch、Prometheus、Inf...
    99+
    2024-04-02
  • .Net core Blazor怎么自定义日志提供器实现实时日志查看器
    本文小编为大家详细介绍“.Net core Blazor怎么自定义日志提供器实现实时日志查看器”,内容详细,步骤清晰,细节处理妥当,希望这篇“.Net core Blazor怎么自定义日志提供器实现实...
    99+
    2023-07-04
  • HTML怎么实现websocket的模拟日志监控界面
    本篇内容介绍了“HTML怎么实现websocket的模拟日志监控界面”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2024-04-02
  • 详解Python实现URL监测与即时推送
    目录原理环境代码crontab计划任务配置预警消息效果总结原理 采用Python requests发起请求监测的URL,检测Http响应状态及是否超时,如果Http状态异常或响应超时...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作