如何在python文件中使用日志功能?简单版本

在项目中实用日志时非常常见的,同样在python文件中也可以使用日志,记录一些关键的日志信息,这里简单列举如何在python文件中直接使用日志,分别参考下面代码中的 1 到 5 步骤:

文件 logUser.py 如下:

python 复制代码
# -*- coding: UTF-8 -*-
# ========================================
# @ProjectName: pythonws001
# @Filename: logUse.py
# @Copyright www.xxx.com
# @Author: shenzhennba(Administrator)
# @Version 1.0
# @Since 2025/12/6 13:35
# ========================================
# 简单单个logging模块的使用方法
# ========================================
# 1,导入logging模块
import logging
import datetime

# 2,配置默认的日志输出级别和输出格式,可选配置,不配置则使用默认配置
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 3,定义和设置控制台日志输入格式对象(可选配置)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 4,定义和设置日志文件输出格式对象(可选配置)
fileHandler = logging.FileHandler(
    r'F:\appData\tempLog\pythonws001.log', encoding='utf-8')
# fileHandler = logging.FileHandler(
# r'pythonws001.log',encoding='utf-8') #无路径,默认在包所在目录下
fileHandler.setFormatter(logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 5,获取日志对象和是指各种输出处理器,
# 每个模块将有自己的日志记录器,并且可以通过模块名来区分日志消息的来源。
logger = logging.getLogger(__name__)
# 设置日志记录器的日志级别
logger.setLevel(logging.INFO)
# 添加日志输出处理对象
logger.addHandler(consoleHandler)
logger.addHandler(fileHandler)


# 6,在代码中使用日志对象记录日志信息
# logger.info("这是一个 info 级别的日志")


def fun01(name):
    logger.debug("这是一个 debug 级别的日志")
    logger.info("这是一个 info 级别的日志")
    print(f'Hi, {name}')
    print(f'date time: {datetime.datetime.now()}')
    logger.warning("这是一个 warning 级别的日志")
    logger.error("这是一个 error 级别的日志")
    logger.critical("这是一个 critical 级别的日志")


if __name__ == '__main__':
    fun01('Python')

需要注意的是,这里简单使用,所以在单个文件中使用问题不大,但在项目中多个文件如果都这样写存在每次重复写的缺点,所以在项目中不推荐这样写,应抽出一个通用模块比较好。

相关推荐
天外飞雨道沧桑5 分钟前
TypeScript 中 omit 和 record 用法
前端·javascript·typescript
Lee川25 分钟前
mini-cursor 揭秘:从 Tool 定义到 Agent 循环的完整实现
前端·人工智能·后端
一直不明飞行1 小时前
Java的equals(),hashCode()应该在什么时候重写
java·开发语言·jvm
REDcker1 小时前
有限状态机与状态模式详解 FSM建模Java状态模式与C++表驱动模板实践
java·c++·状态模式
canonical_entropy1 小时前
从 Spec-Driven Development 到 Attractor-Guided Engineering
前端·aigc·ai编程
研☆香1 小时前
聊聊前端页面的三种长度单位
前端
2301_803934611 小时前
Go语言如何做网络爬虫_Go语言爬虫开发教程【指南】
jvm·数据库·python
WL_Aurora1 小时前
Python爬虫实战(六):新发地蔬菜价格数据采集.
爬虫·python
盲敲代码的阿豪1 小时前
Python 入门基础教程(爬虫前置版)
开发语言·爬虫·python
你的保护色2 小时前
【无标题】
java·服务器·网络