首页 > 编程语言 >python中logging

python中logging

时间:2024-07-05 15:43:59浏览次数:12  
标签:logging python handler file 格式 日志 logger

Python 的 logging 模块是一个用于记录应用程序日志消息的标准模块。它非常强大且灵活,允许你记录各种级别的日志消息,并配置输出格式、日志的存储位置以及处理日志的不同方式。

以下是 logging 模块的基本介绍和用法。

def create_logger(log_file):
    log_format = '%(asctime)s  %(levelname)5s  %(message)s'
    logging.basicConfig(level=logging.INFO, format=log_format, filename=log_file)
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    console.setFormatter(logging.Formatter(log_format))
    logging.getLogger(__name__).addHandler(console)
    return logging.getLogger(__name__)

日志级别
logging 模块定义了以下标准日志级别(按严重性顺序):

DEBUG - 详细的信息,通常用于诊断问题。
INFO - 确认系统按预期运行的信息。
WARNING - 表示意外情况或问题的警告(例如资源不足),但程序仍继续运行。
ERROR - 由于更严重的问题,程序的某个功能无法运行。
CRITICAL - 严重错误,表示程序可能无法继续运行。
基本用法
以下是 logging 模块的基本用法示例:

import logging

# 配置基本配置
logging.basicConfig(level=logging.DEBUG,    # 设置最低的日志级别
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')  # 配置日志输出格式

# 创建日志器
logger = logging.getLogger(__name__)

# 记录各种级别的日志
logger.debug("这是一条调试信息")
logger.info("这是一条信息")
logger.warning("这是一条警告")
logger.error("这是一条错误")
logger.critical("这是一条严重错误")
``
配置日志
你可以通过 basicConfig 函数轻松配置日志输出的各种属性。以下是一些常用参数:

filename:日志文件的名称。如果指定此参数,日志将写入到文件中。
filemode:日志文件的打开模式。
level:设置日志级别。
format:指定日志的输出格式。

logging.basicConfig(filename='app.log', # 日志文件名
filemode='w', # 文件模式, 'w' 表示写入模式,'a' 表示追加模式
level=logging.INFO, # 设置最低日志级别
format='%(name)s - %(levelname)s - %(message)s') # 日志格式

logger = logging.getLogger(name)

logger.info('这是写入到文件中的一条信息日志')

日志格式
日志信息的格式可以通过 format 参数自定义。常用的格式说明符有:

%(asctime)s:日志记录的时间
%(levelname)s:日志级别
%(message)s:日志消息
%(filename)s:日志记录所在的文件名
%(lineno)d:日志记录所在的文件行号
处理器和格式器
logging 模块还支持将日志消息发送到不同的目标,如控制台、文件,甚至远程服务器。

处理器(Hander)
StreamHandler:将日志输出到控制台
FileHandler:将日志输出到文件
RotatingFileHandler:将日志输出到文件,并在文件达到一定大小时进行轮转
TimedRotatingFileHandler:将日志输出到文件,并在特定时间间隔进行轮转
以下是一个使用 FileHandler 和自定义格式器的示例:
``
import logging

# 创建日志器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 创建一个处理器,将日志写入文件
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)

# 创建一个格式器并将其添加到处理器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 将处理器添加到日志器
logger.addHandler(file_handler)

# 记录日志
logger.debug('这是一个调试信息')
logger.info('这是一个信息')
logger.warning('这是一个警告')
logger.error('这是一个错误')
logger.critical('这是一个紧急问题')

记录日志到多个目标
你可以将不同的处理器添加到一个日志器中,以便将日志消息发送到多个目标:

import logging

# 创建日志器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 创建一个控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

# 创建一个文件处理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)

# 创建并设置格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 将处理器添加到日志器
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 记录日志
logger.debug('调试信息')
logger.info('信息')
logger.warning('警告')
logger.error('错误')
logger.critical('紧急问题')

总结
Python 的 logging 模块是一个非常灵活且功能强大的日志记录系统,它允许你:

记录不同级别的日志消息
定制日志的输出格式
将日志发送到不同的目标(控制台、文件、远程服务器等)
根据需要添加多个处理器和格式器以进行复杂的日志配置
通过对 logging 模块的使用,你可以更加有效地记录和管理应用程序的日志信息。

标签:logging,python,handler,file,格式,日志,logger
From: https://www.cnblogs.com/dingz/p/18285960

相关文章

  • 为什么现在的AI编程师都是用Python来编程?
    前言: 在当今AI大火的时节,涌入了一大批AI编程师,和AI训练师!显而易见他们都是用的Python语言来编程的。当然AI也给我们的工作带来了很多便利,比如AI绘画,写文章,视频剪辑,脚本创做等等方面现在都可以来用AI来协助我高效完成工作。那么我们来看看现在的AI编程师为什么都用Python语言......
  • python基础汇总(1)
    开始可以借鉴阿里腾讯开发规范——实际中运用会大体相近1、注释#:单行注释‘’‘’‘’或者“”“”“”:多行注释2、标识符合法:ABC、ABC_123、姓名、_123不合法:123、1ABC、if(保留字)、init(预定义标识符)(1)当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使......
  • 《python机器学习从入门到高级》
    《python机器学习从入门到高级》分类算法:引言我们在之前的文章已经介绍了机器学习的一些基础概念,当拿到一个数据之后如何处理、如何评估一个模型、以及如何对模型调参等。接下来,我们正式开始学习如何实现机器学习的一些算法。回归和分类是机器学习的两大最基本的问题,对于......
  • python数据结构(树和二叉树)
    树非线性结构一对多根结点(无前驱)多个叶子结点(无后继)其他数据元素(一个前驱,多个后驱)树与二叉树转换树与二叉树均可用二叉链表作为存储结构,则以二叉链表为媒介可导出树之间的一个对应关系-----即给定一颗树,可以找到唯一一颗二叉树与之对应。把树转化为二叉树步骤一:加线......
  • Box,一个字典操作python库
     Box介绍Box是一个让字典操作变得异常简单与直观,支持通过属性访问字典内容的库。 特点概述属性访问Box允许用户像访问对象属性一样访问字典的值,提升了代码的可读性和易用性。无缝嵌套自动将嵌套的字典转换为Box对象,使得处理复杂字典结构变得轻而易举。灵活性......
  • Python速通(条件语句)
    (牛牛的选择)牛牛在牛客网经过了两次笔试分别获得了Tencent和Alibaba的面试资格,不巧的是这两次面试的时间冲突了。两家公司牛牛都想去,他决定通过笔试的成绩判断去参加哪家公司的面试。现在输入两行浮点数,分别表示牛牛在Tencent和Alibaba的笔试成绩,请比较两个成绩,输出笔试成绩较高的......
  • 小白也能看懂的Python基础教程(9)
    目录Python文件操作1、文件操作概述什么是文件?文件操作包含哪些内容呢?文件操作的作用2、文件的基本操作open()打开函数mode访问模式详解读操作相关方法read()方法:readlines()方法:readline()方法:file读取文件之readfile读取文件之readlines和reanline相对和绝对......
  • ipython的使用技巧整理
    IPython是一个强大的交互式Python环境,提供了许多高级功能和快捷键,以下是非常详细的IPython使用技巧整理,覆盖了每个知识点(但本文是基于有一定基础的同学看的):IPython的使用基础:一、安装与基本操作安装Anaconda建议直接下载安装Anaconda,其中包含丰富的库,以及我们需要使用......
  • python爬取的数据存放在哪
    大家好,本文将围绕python数据爬取有哪些库和框架展开说明,python爬取数据保存到数据库是一个很多人都想弄明白的事情,想搞清楚python爬取数据存入数据库需要先了解以下几个事情。经常游弋在互联网爬虫行业的程序员来说,如何快速的实现程序自动化,高效化都是自身技术的一种沉淀的......
  • python作业题百度网盘,python大作业总结
    大家好,小编来为大家解答以下问题,python作业题百度网盘,python大作业总结,现在让我们一起来看看吧!大家好,本文将围绕python大作业代码及文档展开说明,python大作业代码100行是一个很多人都想弄明白的事情,想搞清楚python期末大作业题目需要先了解以下几个事情。大家好,给大家分......