log日志生成

使用日志记录器层次结构的一般步骤:

  1. 创建根日志记录器:
    在主程序中,首先创建一个根日志记录器。根日志记录器是层次结构的顶层,所有其他的子日志记录器都是从根日志记录器继承和扩展的。
python 复制代码
import logging

logger = logging.getLogger('myapp')
logger.setLevel(logging.DEBUG)

# 设置根日志记录器的处理程序和格式
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
  1. 创建子日志记录器:
    在每个子模块或子文件中,创建一个子日志记录器。子日志记录器的名称应该是根日志记录器名称的扩展。
python 复制代码
# script1.py

import logging

logger = logging.getLogger('myapp.script1')

def some_function():
    logger.info("This is a log message from script1.py")
python 复制代码
# script2.py

import logging

logger = logging.getLogger('myapp.script2')

def another_function():
    logger.info("This is a log message from script2.py")
  1. 配置日志输出:
    在主程序中,可以根据需要配置不同层级的日志输出位置和格式。
python 复制代码
# main.py

import logging

# 配置根日志记录器
logging.basicConfig(level=logging.INFO, filename='app.log', filemode='w', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

from script1 import some_function
from script2 import another_function

def main():
    some_function()
    another_function()

if __name__ == "__main__":
    main()

在上述示例中,根日志记录器的日志输出被配置为写入到文件app.log中,而子日志记录器的日志输出将继承根日志记录器的配置。

logger = logging.getLogger('myapp'):

创建一个名为'myapp'的日志记录器对象。日志记录器是用于记录日志消息的核心对象。

logger.setLevel(logging.DEBUG):

设置日志记录器的日志级别为DEBUG。这意味着只有DEBUG级别及以上的日志消息才会被记录。可以根据需要调整日志级别,例如DEBUG、INFO、WARNING、ERROR等级别。

handler = logging.StreamHandler():

创建一个处理程序对象,用于处理日志消息。在本例中,创建了一个StreamHandler对象,用于将日志消息输出到标准输出流(stdout)。

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s %(message)s'):

创建一个格式化器对象,用于定义日志消息的输出格式。在本例中,使用了一个简单的格式,包括日志消息的时间、日志记录器的名称、日志级别和消息内容。

handler.setFormatter(formatter):

将格式化器对象设置到处理程序对象中。这样,在处理程序处理日志消息时,会应用定义的输出格式。

logger.addHandler(handler):

将处理程序对象添加到日志记录器中。通过添加处理程序,可以指定将日志消息发送到何处。在本例中,将日志消息发送到标准输出流(stdout)。

相关推荐
你怎么知道我是队长2 小时前
python-enumrate函数
开发语言·chrome·python
大熋3 小时前
Playwright Python 教程:网页自动化
开发语言·python·自动化
A7bert7773 小时前
【YOLOv8-obb部署至RK3588】模型训练→转换RKNN→开发板部署
linux·c++·人工智能·python·yolo
cdg==吃蛋糕3 小时前
selenium 使用方法
开发语言·python
Y1nhl4 小时前
力扣_二叉树的BFS_python版本
python·算法·leetcode·职场和发展·宽度优先
Q_Q5110082855 小时前
python的婚纱影楼管理系统
开发语言·spring boot·python·django·flask·node.js·php
若兰幽竹5 小时前
【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
数据库·python
xiaocainiao8815 小时前
Python 实战:构建 Git 自动化助手
git·python·自动化
nightunderblackcat6 小时前
新手向:使用Python将多种图像格式统一转换为JPG
开发语言·python
engchina6 小时前
Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别
开发语言·python·pdf