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

logging模块用法

一、logging 模块的作用

logging 的核心功能是:

在程序运行过程中,输出并记录各种级别的日志(调试信息、警告、错误、关键事件等)。

相比 print(),它的优势:

特点

print()

logging

输出级别控制

支持 DEBUG/INFO/WARNING/ERROR/CRITICAL

输出到文件

不行

可以写入文件、控制台、网络、Syslog

可格式化输出

简单

自定义时间、模块、行号等格式

生产环境适用

不适合

广泛用于企业级系统日志、运维脚本


二、基础用法

示例 1:最简单的日志输出

import logging

logging.basicConfig(level=logging.INFO)
logging.info("启动程序")
logging.warning("磁盘空间不足")
logging.error("无法连接数据库")

输出:

INFO:root:启动程序
WARNING:root:磁盘空间不足
ERROR:root:无法连接数据库

三、日志级别(Level)

logging 内置 5 个常用日志等级(从低到高):

级别名

常量

用途

DEBUG

10

调试信息(开发阶段)

INFO

20

一般运行信息(系统状态、启动完成)

WARNING

30

警告(潜在问题、不影响运行)

ERROR

40

错误(程序异常、功能失败)

CRITICAL

50

严重错误(系统崩溃)

在设置 basicConfig(level=logging.INFO) 时,
表示 只输出 INFO 及以上等级的日志


四、输出格式控制

使用 format 参数定义日志格式:

logging.basicConfig(level=logging.INFO,format="[%(levelname)s] %(asctime)s - %(filename)s:%(lineno)d - %(message)s"
)

输出示例:

[INFO] 2025-10-15 11:48:23,001 - my_script.py:42 - 启动 Docker 容器成功

常用格式化变量:

变量

含义

%(asctime)s

时间

%(levelname)s

日志级别

%(filename)s

文件名

%(lineno)d

行号

%(message)s

日志内容

%(name)s

Logger 名称


五、输出到文件

logging.basicConfig(level=logging.INFO,filename='/var/log/python_docker.log',filemode='a',   # 追加模式format='%(asctime)s [%(levelname)s] %(message)s'
)

logging.info("程序启动")
logging.error("Docker 启动失败")

输出到 /var/log/python_docker.log 文件中。


六、高级用法:多 Handler 输出

你可以同时输出到控制台和文件:

import logging

1️创建 Logger

logger = logging.getLogger("docker_manager")
logger.setLevel(logging.INFO)

2️创建 Handler(控制台 + 文件)

console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("/tmp/docker_manager.log")

3️定义输出格式

formatter = logging.Formatter(
"%(asctime)s [%(levelname)s] %(name)s:%(lineno)d - %(message)s"
)
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

4️添加 Handler

logger.addHandler(console_handler)
logger.addHandler(file_handler)

5️使用日志

logger.info("容器启动成功")
logger.warning("镜像不存在,将尝试重新加载")

输出结果:

  • 控制台打印日志
  • 同时 /tmp/docker_manager.log 也保存日志内容

七、在实际项目中用法(比如你的 PythonDocker

import logging
from docker import from_env
from packaging.version import Version

logging.basicConfig(
level=logging.INFO,
format="[%(asctime)s] [%(levelname)s] %(message)s"
)

class PythonDocker:
client = from_env()

@classmethod
def check_version(cls):version = cls.client.version()['Components'][0]['Version']if Version(version) &lt; Version("19.03"):logging.error(f"Docker 版本太低:{version},请升级到 &ge; 19.03")else:logging.info(f"Docker 版本检测通过:{version}")</code></pre>

运行时日志:

[2025-10-15 11:58:10] [INFO] Docker 版本检测通过:20.10.23

八、实战总结表

功能

用法示例

输出日志

logging.info("启动成功")

级别设置

logging.basicConfig(level=logging.DEBUG)

输出格式

format="%(asctime)s [%(levelname)s] %(message)s"

输出到文件

filename="/var/log/app.log"

同时输出到控制台与文件

Handler

动态调整级别

logger.setLevel(logging.WARNING)

自定义日志对象

logger = logging.getLogger("app")

 

http://www.gsyq.cn/news/21465.html

相关文章:

  • 详细介绍:MQTT数据集成
  • 深入解析:WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
  • 实用指南:WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
  • AI元人文中价值原语博弈系统的理论建构与实践意义探析
  • LGP3201 [HNOI 2009] 梦幻布丁 学习笔记
  • 2025年石头纸设备/吹塑机厂家最新权威推荐榜:环保石头纸、碳酸钙石头纸、固废石头纸及挤出吹塑机、注射吹塑机、半导体清洗液瓶子吹塑机专业选购指南
  • AI技术新突破:图像编辑与浏览器智能体
  • PWN手的成长之路-16-OGeek2019-babyrop
  • 2025年掘进机厂家最新权威推荐榜:隧道掘进机、煤矿掘进机、岩石掘进机、盾构掘进机,专业实力与高效施工口碑之选
  • 2025年冷却塔厂家最新权威推荐榜单:工业冷却塔、闭式冷却塔、横流式冷却塔、逆流式冷却塔专业制造商精选
  • 2025年重庆短视频信息流投流/获客/巨量广告投放/拍摄/代运营推广公司推荐榜区域精选公司分享
  • 俄罗斯合作伙伴 Mobx,用 NocoBase 交付多场景方案
  • 2025年法兰罩厂家最新权威推荐榜:专业防护与精密制造,工业管道安全守护首选品牌
  • 2025年数控滚齿机厂家最新权威推荐榜:高精度齿轮加工设备源头供应商,实力与口碑双重保障
  • 2025 年蜂巢土工格室厂家推荐榜:HDPE土工格室/PP土工格室/PET土工格室/聚焦工程适配与品质保障,优选山东大成工程材料有限公司
  • JVM调优 的大厂案例: 凌晨零点,一个 TODO,差点把我们整个部门抬走
  • 2025年氧化镁厂家最新推荐排行榜,高纯氧化镁,活性氧化镁,医药级氧化镁,工业级氧化镁公司推荐
  • C 语言 - struct 关键字解析
  • 从0到1 精通 5大 GC日志:5万字 GC日志圣经,大厂看GC日志的10字口诀,再不用看不懂GC日志了
  • 深入解析:技术演进中的开发沉思-118Linux命令篇:系统管理命令(下)
  • 京东面试:什么是 JIT,JIT什么优势?什么是 类的生命周期七个阶段 ?什么是 字节码增强?
  • 10亿用户微博Feed流,如何 抵抗 100WQPS 热点 ?如何 抵抗雪崩 ?
  • AI大模型学习路线:(非常详细)AI大模型学习路线,收藏这一篇就够了!
  • 定时任务清除Windows服务器30天以上java系统日志
  • 中国研发效能工具市场迎来爆发期:头部厂商如何赋能企业数字化转型?
  • 一键生成毛茸萌宠形象,基于函数计算极速部署ComfyUI生图系统
  • 2025-10-15 2个元素a和b,a的层级(z-index)比b的高,a为固定定位(fixed),b为粘性定位(sticky),当二者有部分重叠时,b会遮挡a的原因以及解决方法
  • 分享个经常装机需要的软件,驱动总裁网卡绿色2.19.0.0
  • 【Claude Code入门教程】CLAUDE.md完整解析与实战示例_Claude Code安装配置全流程与API代理使用指南
  • 2025 年最新游乐设备厂家权威推荐榜单:涵盖儿童 / 户外 / 室内 / 水上乐园等多场景设备,为采购与合作提供精准参考