当前位置: 首页 > news >正文

logging格式化输出日志asctime等详解

在 Python 中,logging 模块提供了强大的日志记录功能。通过配置日志格式,开发者可以控制日志的输出样式,包括时间戳、日志级别、消息等。日志的格式化输出是通过 Formatter 类来实现的,通常我们使用一个 format 字符串来定制日志信息的展示方式。

以下是 Python logging 模块中常用的格式化输出字段以及它们的详细说明:

常用的格式化输出字段

  1. asctime
    该字段会输出日志的时间戳,格式通常为“年-月-日 时:分:秒”,默认格式为 "%Y-%m-%d %H:%M:%S"。这个字段会显示日志记录的时间。

    asctime: 2025-07-31 16:40:45
    
  2. name
    输出记录器的名称。通常用于区分不同的日志记录器,尤其是在复杂的应用中,你可能有多个日志记录器,每个记录器都有不同的配置。

    示例:

    name: my_logger
    
  3. levelname
    输出日志的级别(如:DEBUG、INFO、WARNING、ERROR、CRITICAL)。日志级别指示了该日志的严重性。

    示例:

    levelname: ERROR
    
  4. message
    输出日志消息的内容。通常是开发者在代码中记录的实际日志信息。

    示例:

    message: An error occurred
    
  5. module
    输出调用日志记录的模块名,即文件的名称(不包括路径和扩展名)。

    示例:

    module: mymodule
    
  6. funcName
    输出日志记录时调用的函数名称。

    示例:

    funcName: my_function
    
  7. lineno
    输出日志记录时的行号。这有助于调试时确定日志产生的位置。

    示例:

    lineno: 42
    
  8. filename
    输出日志记录时的文件名(不带路径)。

    示例:

    filename: mymodule.py
    
  9. pathname
    输出日志记录时的完整路径。

    pathname: /path/to/mymodule.py
    
  10. thread
    输出线程的ID。

    示例:

    thread: 1234
    
  11. threadName
    输出线程的名称。

    示例:

    threadName: MainThread
    
  12. process
    输出进程的ID。

    示例:

    process: 5678
    
  13. processName
    输出进程的名称。

    示例:

    processName: MainProcess
    

配置日志格式

可以通过 logging.basicConfig 配置日志格式。以下是一个常见的配置示例:

import logging# 配置日志格式
logging.basicConfig(level=logging.DEBUG,  # 设置日志级别format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)# 记录日志
logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")

解释:

  • level=logging.DEBUG 设置日志级别为 DEBUG,意味着所有级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)的日志都会输出。

  • format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' 定义了日志的格式:

    • %(asctime)s: 日志的时间戳。

    • %(name)s: 日志记录器的名称。

    • %(levelname)s: 日志级别。

    • %(message)s: 日志消息内容。

结果输出:

2025-07-31 16:40:45,123 - root - DEBUG - This is a debug message
2025-07-31 16:40:45,123 - root - INFO - This is an info message
2025-07-31 16:40:45,123 - root - WARNING - This is a warning message
2025-07-31 16:40:45,123 - root - ERROR - This is an error message
2025-07-31 16:40:45,123 - root - CRITICAL - This is a critical message

时间格式自定义

你也可以自定义时间戳的输出格式,方法是通过 datefmt 参数传递自定义的时间格式。例如:

logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(levelname)s - %(message)s',datefmt='%Y-%m-%d %H:%M:%S'  # 自定义时间格式
)

此时,输出的时间将使用你自定义的格式,如:

2025-07-31 16:40:45 - DEBUG - This is a debug message

总结

  • asctime 用来记录时间戳,帮助分析日志发生的时间。

  • 日志格式可以通过 format 参数自定义。

  • 可用的日志信息包括:日志级别、模块名、函数名、行号等。

  • 可以自定义日志的时间格式、输出信息等,以适应不同场景的需求。

这些日志配置使得 Python 的日志系统非常灵活和强大,适合在开发、调试以及生产环境中使用。

http://www.dtcms.com/a/308908.html

相关文章:

  • YOLOv13 汉化优化部署版本:超图增强自适应视觉感知的目标检测系统
  • 人工智能概念之十一:常见的激活函数与参数初始化
  • Python Day20 os模块 和 文件操作 及 例题分析
  • 【源力觉醒 创作者计划】对比与实践:基于文心大模型 4.5 的 Ollama+CherryStudio 知识库搭建教程
  • 免费数据恢复软件推荐:Wise Data Recovery 6.2.0 激活版使用指南
  • 2025年人形机器人动捕技术研讨会将在本周四召开
  • ESP32 外设驱动开发指南 (ESP-IDF框架)——GPIO篇:基础配置、外部中断与PWM(LEDC模块)应用
  • 深入理解 Slab / Buddy 分配器与 MMU 映射机制
  • React 路由守卫
  • 构型空间(Configuration Space,简称C-space)
  • 【计算机组成原理】第二章:数据的表示和运算(上)
  • Linux 系统管理-13-系统负载监控
  • 向日葵 远程控制软件下载及安装教程!
  • spring cloud ——gateway网关
  • 解决提示词痛点:用AI智能体自动检测矛盾、优化格式的完整方案
  • 数据结构:多项式求值(polynomial evaluation)
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step5—Nginx安装
  • 20250731在荣品的PRO-RK3566开发板的Android13下解决敦泰的FT8206触控芯片的只有4点触控功能
  • Redis过期策略
  • Apache RocketMQ 中 Topic 的概念、属性、行为约束和最佳实践
  • Docker 初学者需要了解的几个知识点 (五):建容器需要进一步了解的概念
  • 【生活系列】MBTI探索 16 种性格类型
  • C++入门自学Day3-- c++类与对象(赋值运算符与拷贝构造)
  • 【Linux】虚拟地址空间
  • 智能图书馆管理系统开发实战系列(三):前端工程化实践 - Electron + React + TypeScript
  • docker运行时目录/var/lib/docker 学习
  • 面试笔记【16:9区域问题】
  • diffusion原理和代码延伸笔记1——扩散桥,GOUB,UniDB
  • 如何提前识别项目风险?主要方法分享
  • MemoRizz:AI的“超级大脑”工具,实现持久记忆与上下文智能管理