Python 超轻量级日志解决方案

【ROS】ROS2日志时间戳转标准时间格式的轻量级解决方案 本文针对ROS2默认Unix时间戳不易阅读的问题,提出了一种轻量级解决方案。通过编写Python脚本作为实时日志过滤器,利用正则表达式匹配并转换时间戳为标准时分秒格式,无需修改ROS2核心源码,即可在调试时显著提升日志可读性。 阅读详情

日志,几乎每个程序都需要有的功能,对于很多比较大型的,多人合作的程序,使用专业的日志解决方案,比如 fluentd,是个不错的选择。

fluentd 就是重了点,你需要搭建 fluentd 服务,然后不同的应用再通过相应的方式将日志信息传导 fluentd 服务中,当然重的好处是强大,它可以兼容多个语言,只有你的 client 实现好就行,还可以在日志传输管道中加入各种 hook,比如某个带关键字的日志要执行某种操作等等。

我的程序比较轻,之前都是运维同学搭建好了 fluentd+ES 一套日志管理系统,现在要自己弄,有点麻烦,所以决定使用其他方式来实现日志的管理。

先列一下我简单的需求:

  • 1. 日志可以存入文件(最基本要求)

  • 2. 日志可以存入 MongoDB(方便搜索分析)

  • 3. 报警日志可以主动告警(方便我及时修复)

日志存文件

首先来实现前两个功能,利用 Python 自带的 logging 便可以实现将日志内容存入文件的功能,代码如下:

import time
import logging
import logging.handlers

LOG_FILENAME = 'main.log'
logger = logging.getLogger()


def set_logger():
    logger.setLevel(logging.INFO)

    formatter = logging.Formatter('%(asctime)s - %(process)d-%(threadName)s - '
                                  '%(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)

    # log output to file
    file_handler = logging.handlers.RotatingFileHandler(
        LOG_FILENAME, maxBytes=10485760, backupCount=5, encoding="utf-8")
    logger.addHandler(file_handler)


set_logger()

logging 模块标准的写法,利用 logging 的 handler 功能实现格式化,同样利用 handler 功能,将日志存入到本地文件中。

日志存 MongoDB

使用 log4mongo 库,可以让你的 logging 无缝将日志存入到 MongoDB 中,log4mongo 提供了符合 logging 调用格式的 Handler,直接使用则可,代码如下:

import time
import logging
import logging.handlers
from log4mongo.handlers import MongoHandler
from logging import *

LOG_FILENAME = 'main.log'
logger = logging.getLogger()


def set_logger(mongodb=False):
    logger.setLevel(logging.INFO)

    formatter = logging.Formatter('%(asctime)s - %(process)d-%(threadName)s - '
                 
Python轻量级Web日志管理系统设计与实践 日志管理是Web开发中的基础技术环节,其核心原理是通过采集、解析和存储服务器日志数据,为系统监控和故障排查提供数据支撑。在技术实现上,Python凭借其丰富的文本处理库和轻量级框架特性,成为构建日志管理系统的理想选择。本项目采用Flask+SQLAlchemy技术栈实现实时日志聚合与分析,结合ECharts可视化技术,有效解决了传统ELK方案资源消耗大、临时脚本可维护性差等痛点。典型应用场景包括:实时监控请求分布、状态码统计、异常请求告警等,特别适合中小型项目快速搭建日志分析能力。通过inotify监控、多 阅读详情

相关推荐

Python日志分析神器:用Loguru+OpenObserve搭建实时错误监控看板

本文介绍如何利用Python的Loguru库与云原生日志监控工具OpenObserve,快速搭建一套轻量级实时错误监控系统。通过Loguru输出结构化JSON日志,配合Filebeat采集并推送至OpenObserve,实现日志的集中存储、可视化查询与自动告警,为中小团队提供高效、低成本的日志监控解决方案。

w7x8y9z的博客 359

openEuler下Nginx日志分析:Shell脚本实现轻量级监控与性能优化

日志分析是运维和开发工作中的基础环节,它通过对系统、应用产生的日志数据进行采集、解析和统计,帮助工程师理解系统运行状态、排查故障和优化性能。其核心原理在于利用正则表达式或预定义格式对文本日志进行结构化提取,再通过聚合计算生成关键指标。在技术价值上,有效的日志分析能实现服务健康度监控、安全威胁发现和性能瓶颈定位,是保障系统稳定性的重要手段。常见的应用场景包括Web服务器访问分析、应用错误追踪和用户行为洞察。本文聚焦于Nginx访问日志,针对openEuler等Linux环境,详细讲解如何利用Shell脚本配合

dianxiangong2403的博客 394

PyRunner:轻量级Python脚本管理与调度工具实战指南

在Python自动化开发中,任务调度与脚本管理是提升工程效率的关键环节。传统方式如crontab或手动执行,往往面临环境隔离困难、状态监控缺失和依赖冲突等挑战。通过引入轻量级调度工具,开发者可以实现脚本的集中管理、可视化监控和自动化执行,从而优化工作流程。PyRunner正是为此设计的解决方案,它提供了任务配置、环境隔离和依赖管理等核心功能,特别适合管理中小规模的Python脚本集合。结合虚拟环境和日志管理,PyRunner能有效解决脚本散落、手动操作繁琐等痛点,适用于数据清洗、定时爬虫和报表生成等常见应用

weixin_34310369的博客 405

轻量级日志行为指纹异常检测系统设计与实践

在可观测性体系中,传统阈值告警常因渐进式衰减、多维耦合故障和语义级异常而失效,导致‘绿色崩溃’等静默风险。行为异常检测作为一种更底层的故障发现范式,通过建模日志序列的状态转移规律,捕捉系统运行时的‘节奏感’变化,其核心在于从原始日志流中提取可泛化的日志行为指纹,并基于KL散度等轻量统计指标量化偏离程度。该技术无需预设业务规则,对低信噪比、高动态性的微服务与K8s环境尤为有效,已在支付网关、库存服务等真实场景中实现分钟级异常定位与自动诊断。本文聚焦于面向工程落地的Tiny AI守夜人实践,涵盖日志管道接入、滑

weixin_30271335的博客 352

轻量级Web日志系统实战:查询、分析与告警全链路实现

日志系统是现代软件开发和运维的核心基础设施,它记录了应用程序运行时的关键事件与状态。其核心原理是通过收集、解析、存储和索引日志数据,将非结构化的文本信息转化为可查询的结构化数据。这一技术对于保障系统稳定性、快速定位问题、进行性能分析和业务洞察具有不可替代的价值,广泛应用于服务监控、故障排查、安全审计和用户行为分析等场景。本文聚焦于日志系统的查询、分析与告警模块,详细阐述了如何构建一个轻量级的RESTful查询引擎,实现基于SQLite的多维度快速过滤与性能优化。进一步,文章探讨了关键统计指标(如请求量、错误

weixin_33847182的博客 470

告别SSH翻日志!用Python FastAPI + Watchdog 5分钟搭建一个Web版实时日志查看器

本文介绍如何利用Python FastAPI和Watchdog快速搭建Web版实时日志查看器,解决传统SSH翻日志的效率问题。通过5分钟部署,实现日志的流式输出和实时监控,提升开发和运维效率。适用于开发调试、生产运维及AI训练等多种场景。

weixin_33737774的博客 494

Logwatch:轻量级Linux日志审计与异常检测工具

Logwatch是一种面向运维场景的批处理式日志分析工具,基于Perl实现,核心原理是通过预定义正则规则对静态系统日志(如auth.log、syslog)进行离线扫描与模式匹配,从而提取失败登录、服务异常、磁盘告警等关键信号。其技术价值在于零依赖、极低资源占用(<30MB内存)和开箱即用的可审计性,特别适配VPS、云服务器等资源受限环境。相比ELK、Grafana等实时流式方案,Logwatch更聚焦于‘每日摘要报告’这一确定性交付,成为自动化运维中成本最低、稳定性最高的日志守夜人。本文详解Logwatch

weixin_30367873的博客 451

Python实现轻量级分布式事务装饰器

分布式事务是确保跨服务数据一致性的关键技术,其核心原理是通过协调多个独立系统的操作来保证ACID特性。两阶段提交(2PC)作为经典实现方案,通过准备阶段和提交阶段的协调机制解决分布式一致性问题。在Python技术栈中,通过装饰器模式封装2PC协议,可以构建不依赖中间件的轻量级解决方案。这种实现特别适合电商库存管理、订单支付等需要强一致性的微服务场景,既能保持代码简洁性(控制在200行以内),又能处理80%的常规分布式事务需求。通过合理设计事务上下文管理和参与者注册机制,配合超时控制和重试策略,可以在不引入S

weixin_32325225的博客 339

轻量级自动化工作流设计:Python+SQLite+Flask实战指南

自动化工作流是解决重复性业务任务的核心技术手段,其本质是将人工操作规则化、可配置化与可追溯化。基于Python生态的轻量级架构(如SQLite嵌入式存储、Flask调试友好型服务)在中小团队中展现出极高的工程落地效率——它不追求高并发或分布式能力,而专注提升单点业务闭环的稳定性、可维护性与业务方自主迭代能力。典型应用场景包括跨平台数据清洗、多源异构信息结构化提取、智能消息分发等,尤其适合缺乏专职开发资源但急需提效的运营、销售、教务等一线业务角色。本文以真实项目‘Allen Lee's Magic’为蓝本,详

clugcpne10995的博客 428

从print调试到生产级日志系统:Python logging迁移实战

print调试在脚本和临时验证中虽便捷,但缺乏时间戳、日志级别与持久化能力,一旦面对长时间运行的服务或多线程并发,输出就会变得不可追溯。Python标准库的logging模块通过Logger、Handler、Formatter三件套,构建了可配置、可轮转、可检索的日志体系。本文将演示如何将非结构化的print调用迁移为带级别与上下文的日志记录,并深入讲解双输出Handler、文件轮转策略、UTF-8编码兼容及异常堆栈保留等工程实践。同时,文章也会探讨loguru作为快速替代方案的适用场景,以及如何衔接Lok

weixin_34290096的博客 290

Python系列:将Flask 日志整合到Gunicorn日志并输出、Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录

将Flask 日志整合到Gunicorn日志并输出、Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录

weixin_54626591的博客 2145

fluent-logger-python:Fluentd(Python)的结构化记录器

适用于Fluentd的Python结构化记录器 许多网络/移动应用程序会生成大量事件日志(例如登录,注销,购买,关注等)。 分析这些事件日志对于改善服务可能真的很有价值。 但是,挑战在于如何轻松,可靠地收集这些日志。 通过以下方式解决了该问题:易于安装,占地面积小,插件,可靠的缓冲,日志转发等。 fluent-logger-python是一个Python库,用于记录来自Python应用程序的事件。 要求 Python 2.7或3.4+ msgpack-python 重要说明:版本0.8.0是支持Python 2.6、3.2和3.3的最新版本 安装 该库以“ fluent-logger” python软件包的形式分发。 请执行以下命令进行安装。 $ pip install fluent-logger 配置 Fluentd守护程序必须使用tcp源配置启动: <source>

从虚拟机到双系统:手把手教你为Gromacs搭建最强Linux环境(含WSL2、Ubuntu22.04配置)

本文详细指导如何在Windows系统下为Gromacs分子动力学模拟搭建高性能Linux环境,涵盖WSL2和Ubuntu22.04双系统配置。通过对比虚拟机、WSL2和原生Linux的性能数据,提供GPU加速、内存优化等实用技巧,帮助科研人员提升计算效率。

weixin_30861797的博客 268

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2811

Autosar结合simulink的汽车应用层软件开发实例

本文基于汽车应用开发案例,并结合Autosar相关知识,生成具有Autosar标准的汽车应用层开发代码,以供学习和参考。以上就是本篇内容,主要是利用Simulink创建Autosar接口并进行端口映射的方法。

m0_64899535的博客 2152

雷电模拟器+Auto.js避坑指南:用桥接模式解决PC与模拟器连接超时问题

本文详细解析了雷电模拟器与Auto.js联调中的桥接模式应用,解决PC与模拟器连接超时问题。通过桥接模式配置、高频故障排查及多开环境下的高阶配置,提升开发效率与稳定性,特别适合需要稳定网络连接的Auto.js开发者。

weixin_28836989的博客 630

拆解大疆M300电池BMS:基于TI TIDA-010030方案的硬件架构深度分析

本文深度解析了大疆M300无人机电池管理系统(BMS)基于TI TIDA-010030参考设计的硬件架构。通过对比TI方案与大疆实现的差异,详细介绍了BQ7694003监控前端和BQ34Z100电量计的优化设计,以及通信架构的可靠性改进。文章还揭示了大疆在成本、空间和标准化方面的工程妥协与创新平衡,为锂电池保护方案提供了实践参考。

weixin_27066963的博客 237

从后端角度浅谈抗辐射设计----三模冗余(TMR)

三模冗余设计(TMR),是最常用的一种容错技术,三个模块采取相同的操作,以多数相同的输出作为表决系统的正确输出,即3取2,因为三个模块是相互独立的,而其中两个模块同时出错的概率是极小的,因此便可保证系统输出的可信度。然而这个设计也会存在面积浪费,功耗的增加,而且由于是冗余的设计,在后续进行综合或者pr的时候会被工具优化,因此需要对模块进行don’t touch设置;通过增值表得到,逻辑关系表达式为:Q=(Q1&Q2)|(Q1&Q3)|(Q2&Q3),通过工艺库的stdcell进行搭建,得到如下电路。

芯冰乐 325

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

qq_45834835的博客 2603

16、保障Azure应用安全:密钥管理与身份认证

本文深入探讨了保障Azure应用安全的关键措施,包括使用网络安全工具(如Application Gateway和Azure Front Door)防范攻击,解决传统密钥和机密存储方式的安全隐患,以及通过Azure Key Vault实现敏感信息的安全管理。同时,介绍了使用托管标识实现Azure资源间安全访问的方法,并结合实际操作步骤展示了如何配置Key Vault、设置访问策略、存储机密以及授予Web应用对SQL Server的访问权限。最后,对不同安全措施进行了比较,并提出了在开发、测试及生产环境中的综合

rock5的博客 71

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 30 分钟学会 SVD 矩阵分解(Python代码)
下一篇: python驱动SAP完成数据导出
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值