Python实现日志的记录

news2024/10/5 12:28:36

1 日志

1、介绍

  •  日志(Log)是一个记录事件或系统活动的文件或数据集,日志是系统管理员和开发者用于诊断问题、监视系统性能、以及追踪用户活动的关键工具。包含以下:
  1. 系统日志:记录操作系统、应用程序、硬件组件等的事件和错误。

  2. 应用程序日志:记录特定应用程序的运行状态、用户活动、异常等。

  3. 安全日志:记录与安全相关的事件,如登录尝试、权限更改、防火墙活动等。

  4. 数据库日志:记录数据库的更改、查询、事务等。

  5. Web服务器日志:记录Web服务器的活动,如访问者的IP地址、请求的资源、HTTP状态代码等。

2、结构

  • 日志通常具有时间戳,以便可以按照时间顺序查看事件。
  • 日志可能包含其他元数据,如用户ID、进程ID、事件类型等。

3、日志分析

  • 日志分析是处理和理解日志的重要步骤。通过使用日志分析工具,管理员和开发者可以:
    • 识别和解决系统或应用程序问题。
    • 监视系统性能和资源使用情况。
    • 检测安全漏洞或未经授权的访问。
    • 跟踪用户活动以进行审计或合规性检查。

4、关键因素

  • 在设计和实施日志系统时,需要考虑的一些关键因素包括:
    • 日志的存储和保留:确保有足够的存储空间来保存日志,并根据需要保留旧日志。
    • 日志的访问和权限:控制谁可以访问和修改日志,以确保数据的安全性和完整性。
    • 日志的传输和加密:如果需要将日志发送到远程位置进行存储或分析,应使用安全的传输方法(如TLS/SSL)来加密数据。
    • 日志的解析和可视化:提供易于使用的工具来解析和可视化日志数据,以便管理员和开发者可以轻松理解其内容。

2 模块

1、介绍

  • logging模块:Python标准库中的一个模块【不用安装】,它用于记录程序运行时的日志信息。

2、组件

  1. Logger(日志器)
    • 负责记录日志信息。
    • 可以设置日志级别、输出格式和输出位置等属性。
    • Logger对象通常通过logging.getLogger(name)获取,其中name是用于区分不同Logger的标识符。
  2. Handler(处理器)
    • 用于指定将如何处理和输出日志消息。
    • 可以将日志消息写入文件、控制台、网络等不同的目标。
    • 常用的Handler有StreamHandler(输出到控制台)、FileHandler(输出到文件)等。
  3. Formatter(格式化器)
    • 用于定义日志消息的显示格式。
    • 默认格式包括时间戳、日志级别、日志名称和消息内容等信息。
    • 可以根据需求自定义格式。
  4. Level(级别)
    • 用于指定日志记录的级别,包括DEBUG、INFO、WARNING、ERROR和CRITICAL。
    • 级别越高,记录的信息越少,通常用于控制日志的详细程度 【日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL】。
    • 日志级别
    • Level(级别)含义描述
      DEBUG调试程序调试bug时
      INFO信息程序正常运行时
      WARNING警告程序未按预期运行时

      ERROR

      错误

      程序出错误时

      CRITICAL严重特别严重的问题,导致程序不能再继续运行时

3、应用

  • 开发应用程序或部署开发环境阶段:可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发或部署调试。
  • 应用上线或部署生产环境阶段:应该使用WARNING或ERROR或CRITICAL级别的日志来降低机器的I/O压力和提高获取错误日志信息的效率。

3 相关方法介绍

方法功能描述
logging.getLogger(name)创建或获取Logger对象
setLevel()设置Logger的日志级别
setFormatter()        设置Handler的日志格式化器
debug()使用Logger对象记录调试日志消息
info()使用Logger对象记录日志消息

warning()

使用Logger对象记录警告日志消息
error()使用Logger对象记录错误日志消息
critical()使用Logger对象记录严重日志消息
getLogger()        创建记录器对象
StreamHandler()创建标准流处理器
FileHandler()        创建文件处理器
addHandler()添加处理器到记录器
Formatter()创建格式器
setFormatter()设置格式


1、logging.basicConfig(filename, level, format, datafmt)

  • 功能:用来配置日志的基本选项。
  • 参数:
    • filename:指定日志输出到哪个文件,如果未指定则默认输出到控制台。
    • filemode: 指定打开文件的模式,默认为'a'表示追加模式。
    • format: 指定日志的输出格式。
    • datefmt: 用于指定日期/时间的格式。
    • level: 设置日志的最低级别,即低于这个级别的日志将被忽略。

2、logging.debug(msg)

  • 功能:记录调试的信息
  • 参数:
    • msg:日志记录的调试内容(str)

3、logging.info(msg)

  • 功能:记录程序正常运行的信息
  • 参数:
    • msg:日志记录的运行内容(str)

4、logging.warning(msg)

  • 功能:记录警告的信息
  • 参数:
    • msg:日志记录的警告内容(str)

5、logging.error(msg)

  • 功能:记录错误的信息
  • 参数:
    • msg:日志记录的错误内容(str)

6、logging.critical(msg)

  • 功能:记录严重错误的信息
  • 参数:
    • msg:日志记录的严重错误内容(str)

4 案例介绍

1、记录日志信息

import logging

# 将日志信息记录到example.log文件中,且仅记录比 INFO级别更高的日志才会被纪录到文件里
logging.basicConfig(filename='example.log',level=logging.INFO)

# 比INFO级别低,不会被记录
logging.debug('This message should go to the log file')

# 以下2种级别的日志会被记录
logging.info('So should this')
logging.warning('And this, too')


'''
   就可以在 example.log 文件存储相应的数据
'''

2、标准流与文件流

import logging
from logging import StreamHandler
from logging import FileHandler

# 创建一个日志记录器
logger = logging.getLogger(__name__)

# 设置为DEBUG级别
logger.setLevel(logging.DEBUG)

# 标准流处理器,设置的级别为WARAING
stream_handler = StreamHandler()
stream_handler.setLevel(logging.WARNING)
logger.addHandler(stream_handler)

# 文件处理器,设置的级别为INFO
file_handler = FileHandler(filename="test.log")
file_handler.setLevel(logging.INFO)
logger.addHandler(file_handler)

logger.debug("this is debug")
logger.info("this is info")
logger.error("this is error")
logger.warning("this is warning")

3、格式器

import logging
from logging import StreamHandler

# 创建一个日志记录器
logger = logging.getLogger(__name__)

# 标准流处理器
stream_handler = StreamHandler()
stream_handler.setLevel(logging.WARNING)

# 创建一个格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 设置handler的格式
stream_handler.setFormatter(formatter)

# 添加到处理器
logger.addHandler(stream_handler)

logger.info("this is info")
logger.error("this is error")
logger.warning("this is warning")
  •  格式器只能作用在处理器上,通过处理器的setFromatter方法设置格式器。
  • 一个Handler只能设置一个格式器。

4、日志配置

  • 可以将配置信息单独添加到配置文件,在使用时加载配置信息,实现配置与使用代码相分离。
# logging.conf

[loggers]
keys=root

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler


[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
  • 加载配置文件
import logging
import logging.config

# 加载配置
logging.config.fileConfig('logging.conf')

# 创建 logger
logger = logging.getLogger()

# 应用代码
logger.debug("debug message")
logger.info("info message")
logger.warning("warning message")
logger.error("error message")

感谢】如果对您有所帮助,欢迎关注点赞与收藏,它将是我持续更新的巨大动力,送上比  2^{10} 还 2^{10} 的感谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工具】windows下VMware17解锁mac安装选项(使用unlocker427)

目录 0.简介 1.环境 2.安装前后对比 3.详细安装过程 3.1 下载unlocker427 1&#xff09;下载地址 2&#xff09;下载unlocker427.zip 3&#xff09;解压之后是这样的 4&#xff09;复制iso中的两个文件到你本地的VMware的安装目录下 5&#xff09;复制windows下的所有…

GWT 与 Python App Engine 集成

将 Google Web Toolkit (GWT) 与 Python App Engine 集成可以实现强大的 Web 应用程序开发。这种集成允许你使用 GWT 的 Java 客户端技术构建丰富的用户界面&#xff0c;并将其与 Python 后端结合在一起&#xff0c;后端可以运行在 Google App Engine 上。 1、问题背景 在 Pyt…

科普|大数据风险检测对申贷人有哪些好处?

大数据风险检测可以极大地提高金融机构在用户肖像、反欺诈和信用评级等方面的效率和风险控制能力&#xff0c;这是金融企业发展过程中必须结合的一种科技技术。大数据风险检测覆盖信贷领域的所有流程&#xff0c;从客户获取到身份验证&#xff0c;再到信贷中和信贷后。因此&…

MeiliSearch-轻量级且美丽的搜索引擎

MeiliSearch-轻量级且美丽的搜索引擎 MeiliSearch 是一个功能强大、快速、开源、易于使用和部署的搜索引擎。它具有以下特点&#xff1a; 支持中文搜索&#xff1a;MeiliSearch 对中文有良好的支持&#xff0c;不需要额外的配置。高度可定制&#xff1a;搜索和索引都可以高度…

dataphin是什么及其简单使用示例

1.1dataphin是什么&#xff1f; Dataphin是由阿里研发的智能大数据建设平台&#xff0c;提供一站式数据中台&#xff08;大数据平台&#xff09;建设服务。Dataphin通过沙箱&#xff08;项目&#xff09;实现业务及作业资源隔离&#xff0c;运行更快&#xff0c;且数据同步到D…

【QT5】<总览一> QT环境搭建、快捷键及编程规范

文章目录 前言 一、简单介绍QT 二、安装QT Creator 三、第一个QT项目 四、常用快捷键 五、QT中的编程规范 前言 在嵌入式Linux应用层开发时&#xff0c;经常使用QT作为图形化界面显示工具。为学习Linux下的QT编程&#xff0c;在Ubuntu和开发板中搭建QT开发环境&#xff…

推荐系统三十六式学习笔记:原理篇.近邻推荐07|人以群分,你是什么人就看到什么世界

目录 协同过滤基于用户的协同过滤背后的思想原理实践1、构造矩阵2、相似度计算3、推荐计算4、一些改进 应用场景&#xff1a;总结 谈及推荐系统&#xff0c;不得不说大名鼎鼎的协同过滤。协同过滤的重点在于协同&#xff0c;所谓协同&#xff0c;也就是群体互帮互助&#xff0c…

图解通用网络IO底层原理、Socket、epoll、用户态内核态······

LInux 操作系统中断 什么是系统中断 这个没啥可说的&#xff0c;大家都知道&#xff1b; CPU 在执行任务途中接收到中断请求&#xff0c;需要保存现场后去处理中断请求&#xff01;保存现场称为中断处理程序&#xff01;处理中断请求也就是唤醒对应的任务进程来持有CPU进行需要…

Mac 使用Docker安装Elasticsearch、Kibana 、ik分词器、head

安装ElasticSearch 通过docker安装es docker pull elasticsearch:7.8.1 在本地创建elasticsearch.yml文件 mkdir /Users/ky/Documents/learn/es/elasticsearch.yml 编辑yml文件内容 http: host: 0.0.0.0 xpack.security.enabled: false xpack.security.enrollment.enabled: t…

减调食谱攻略:美味低卡又健康

早餐主要求质&#xff0c;也就是求营养&#xff0c;更确切的说是“均衡的营养&#xff0c;多重的营养元素”确保每天早餐不重样就差不多了。 早餐主食&#xff1a;蛋羹、糖心水煮蛋&#xff0c;皮蛋瘦肉粥、南瓜粥、小米粥&#xff0c;蒸煮玉米、南瓜、芋头、红薯&#xff0c;…

深度神经网络——什么是深度强化学习?

除了无监督机器学习和监督学习之外&#xff0c;人工智能创造的另一种常见形式是强化学习。除了常规的强化学习之外&#xff0c; 深度强化学习 由于它结合了深度学习和强化学习的最佳方面&#xff0c;因此可以带来令人惊讶的令人印象深刻的结果。让我们具体看看深度强化学习是如…

李廉洋:6.6黄金原油怎么看?今日行情分析及最新策略。

黄金消息面分析&#xff1a;美指走强未能抑制金价升势。黄金价格大幅上涨&#xff0c;在美国公布喜忧参半的经济数据后&#xff0c;金价与周二的走势发生180度大转弯&#xff0c;这些数据可能保证美联储设定的借贷成本降低。美国10年期基准国债收益率下跌3个基点&#xff0c;至…

项目进度管理必备:15款最佳项目进度跟踪工具推荐

15好用的款主流项目进度管理软件&#xff1a;PingCode、Worktile、Trello、Tower、Asana、Smartsheet、Teambition、ClickUp、Wrike、Monday.com、Notion、禅道、飞书、云效、蓝凌。 严格的进度管理有助于更好地控制项目进展&#xff0c;提升团队效率&#xff0c;最终实现项目成…

Android音频进阶之1.0到14.0音频焦点变化(七十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

小白学linux | 使用正则表达式审计ssh登录ip地址

Ubuntu /var/log/auth.log记录了所有与身份验证相关的事件&#xff0c;包括SSH登录尝试 grep -i "failed password" /var/log/auth.log | \awk {if($11 ~/^[0-9]\.[0-9]\.[0-9]\.[0-9]$/)print $11 ; else print $13} | \uniq -c | sort -nr -k1 RedHat系发行版 /va…

MK米客方德 SD NAND与文件系统:技术解析与应用指南

随着数字存储技术的飞速发展&#xff0c;SD NAND(贴片式T卡&#xff09;已成为我们日常生活中不可或缺的存储工具。我们将深入探讨SD NAND的文件系统&#xff0c;特别是SD 3.0协议支持的文件系统类型&#xff0c;以及它们在实际应用中的作用和用户可能遇到的问题。 MK米客方德的…

微前端之旅:探索Qiankun的实践经验

theme: devui-blue 什么是微前端&#xff1f; 微前端是一种前端架构方法&#xff0c;它借鉴了微服务的架构理念&#xff0c;将一个庞大的前端应用拆分为多个独立灵活的小型应用&#xff0c;每个应用都可以独立开发、独立运行、独立部署&#xff0c;再将这些小型应用联合为一个完…

[pixi.js] 入门简单案例 简易时钟

老实说pixi虽然之前拿来做个几个简单的游戏&#xff0c;但是是好久前的了&#xff0c;又忘了&#xff0c;现在算是重新入门。 官网版本已经更新到v8去了&#xff0c;而react相关的pixi库pixi-react 虽然支持react18 但还是v6-v7的版本&#xff0c;既然已经看了v8的文档&#xf…

解决富文本中抖音视频无法播放的问题——403

问题 富文本中的抖音视频无法播放&#xff0c;资源状态码是403禁止访问打开控制台&#xff0c;可以看到在项目中打开&#xff0c;数据请求的请求头多了一个Referer: http://localhost:3000/而复制链接在新窗口直接打开&#xff0c;请求头中并不会携带Referer 解决方案 在ind…