python日志:logging模块使用

python Logging日志记录模块详解 写在篇前   logging是Python的一个标准库,其中定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。Python logging 的配置由四个部分组成:Logger、Handlers、Filter、Formatter。本篇博客将依次介绍这四个主要部分以及logging的基本应用。   在开始之前,我们有必要先了解一下,什么时候我们才有必要使用logging模块,什么时候抛出... 阅读详情

# python日志:logging模块使用

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等, 记录运行时的过程

## 日志事件级别

级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG

默认等级: WARNING

 

## Logger

### 创建logger

```

import logging


 

logger = logging.getLogger(__name__) #默认root

```

### 设置日志记录的级别

```

 level_relations = {

        'debug': logging.DEBUG,

        'info': logging.INFO,

        'warning': logging.WARNING,

        'error': logging.ERROR,

        'crit': logging.CRITICAL

    }  # 日志级别关系映射

logger.setLevel(level_relations['debug'])

```

### 将日志内容传递到相关联的handlers中

```

logger.addHandler()

logger.removeHandler()

```

### Handlers处理器

 

### 输出到控制台

```

import logging


 

logging.basicConfig(level=logging.DEBUG,

                    format='%(asctime)s %(filename)s %(levelname)s %(message)s',

                    datefmt='%a %d %b %Y %H:%M:%S'

                   )

logging.getLogger(__name__)

logging.info('info')

logging.debug('debug')

logging.warning('warning')

```

### 控制台输出参数

 


 

###  将日志同时输出到屏幕和日志文件

```

import logging.handlers

import logging.config

from sys import _getframe as get

import os


 

def create_file(filename):

    if not os.path.exists(filename):

        with open(filename, 'a', encoding='utf-8') as f:

            pass


 

class Logger:

    level_relations = {

        'debug': logging.DEBUG,

        'info': logging.INFO,

        'warning': logging.WARNING,

        'error': logging.ERROR,

        'crit': logging.CRITICAL

    }  # 日志级别关系映射

    # 第一种创建方式

    def __init__(self, name, filename):

        logger = logging.getLogger(name)  # 创建日志对象

        logger.setLevel(Logger.level_relations.get('debug'))  # 设置日志等级

        fmt = f'[{name} P- %(process)s T- %(thread)s %(funcName)s %(asctime)s %(message)s'

        formatter = logging.Formatter(fmt, '%Y-%m-%d %H:%M:%S')  # 时间格式

        create_file(filename)

        # 设置屏幕显示

        consloe = logging.StreamHandler()  # 控制台输出日志

        consloe.setLevel(Logger.level_relations.get('info'))     # 设置控制台输出日志级别

        consloe.setFormatter(formatter)    # 设置控制台打印格式

        # 设置日志保存文件中

        file_handler = logging.handlers.TimedRotatingFileHandler(filename, when='s', interval=2, backupCount=2, encoding='utf-8')  # 这里我设置的是2秒产生1个日志文件, 保存近两天的日志

        # when:h(时)/m(分)/s(秒)/d(天)/midnight(凌晨)等等,  interval:间隔时间, backupCount=0 保存几天的日志

        file_handler.setLevel(Logger.level_relations.get('info'))  # 设置输出到日志文件等级

        file_handler.setFormatter(formatter)   # 设置写到日志文件格式

        file_handler.suffix = '%Y-%m-%d_%M_%S'  # 日志文件后缀

        # 将日志内容传递到相关联的handlers中

        logger.addHandler(consloe)

        logger.addHandler(file_handler)

        self.log = logger

    def info(self, message):

        # 调用该函数的函数文件名, 调用该函数的函数名字, 调用该函数的行号

        self.log.info('info {} {} {} {}'.format(get(1).f_code.co_filename.split('/')[-1], get(1).f_code.co_name, get(1).f_lineno, message))

    def error(self, message):

        self.log.info('info {} {} {} {}'.format(get(1).f_code.co_filename.split('/')[-1], get(1).f_code.co_name, get(1).f_lineno, message))

```

### sys._getframe

```

import sys

sys._getframe().f_code.co_filename  # 当前文件名,可以通过__file__获得

sys._getframe(0).f_code.co_name # 当前函数名

sys._getframe(1).f_code.co_name  # 调用该函数的函数名字,如果没有被调用,则返回<module>

sys._getframe(0).f_lineno #当前函数的行号

sys._getframe(1).f_lineno # 调用该函数的行号

```

### logging.basicConfig(**kwargs)

 

```

# filename为空时默认屏幕输出,反之写入文件

# logging.basicConfig(level=logging.DEBUG,

#                     format='%(asctime)s %(filename)s %(levelname)s %(message)s',

#                     datefmt='%a %d %b %Y %H:%M:%S',

#                     filename='my.log',

#                     filemode='a'

#                    )

# 即写入文件, 又在屏幕输出

logging.basicConfig(level=logging.DEBUG,

                    format='%(asctime)s %(filename)s %(levelname)s %(message)s',

                    datefmt='%a %d %b %Y %H:%M:%S',

                    handlers=[logging.StreamHandler(), logging.FileHandler('my.log', encoding='utf-8')],

                   )

```

### dictConfig


 

```

# 通过YAML文件配置

import yaml

with open('common_config.yaml', 'r', encoding='utf-8') as f:

    data = yaml.load(f, yaml.Loader)

config_d = data['log_config']

# 通过json

config_d = {

    "version": 1,

    "disable_existing_loggers": True,

    "formatters": {

        "standrd": {

            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",

            "datefmt": "%Y-%m-%d %H:%M:%S"

        }

    },

    "handlers": {

        "console": {

            "class": "logging.StreamHandler",

            "level": "DEBUG",

            "formatter": "standrd",

            "stream": "ext://sys.stdout"

        },

        "info_file_handler": {

            "class": "logging.handlers.TimedRotatingFileHandler",

            "level": "INFO",

            "formatter": "standrd",

            "filename": "C:/Users/huangxiangyi/Desktop/flask_ka/hxy_test/my.log",

            "backupCount": 20,

            "encoding": "utf8"

        },

        'loggers': {

            'main': {

                'level': 'INFO',

                'propagate': False,

                'handlers': ['console', 'info_file_handler']

            }

        },

    },

    "root": {

        "level": "INFO",

        "handlers": [

            "console",

            "info_file_handler"

        ]

    }

}

logging.config.dictConfig(config_d)

logging.getLogger('main')

```

### common_config.yaml文件

```

# 日志配置,根据自己需要自行添加

url: &url C:/Users/huangxiangyi/Desktop/flask_ka/hxy_test/

log_config:

  version: 1

  disable_existing_loggers: true

  formatters:

          standrd:

              format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

              datefmt: "%Y-%m-%d %H:%M:%S"

  handlers:

      console:

              class: logging.StreamHandler

              level: DEBUG

              formatter: standrd

              stream: ext://sys.stdout

      info_file_handler:

              class: logging.handlers.TimedRotatingFileHandler

              level: INFO

              formatter: standrd

              filename: !!python/object/apply:os.path.join [*url, my.log]

              backupCount: 20

              encoding: utf8

  loggers:

        main: 

          level: INFO

          propagate: false

          handlers: [console, info_file_handler]

  root:

      level: INFO

      handlers: [console,info_file_handler]

```

简述logger 日志处理 logger 日志处理 ==> 在进行自动化测试过程中,很难免会出现运行异常,需要查看造成异常的原因,分析问题,调试代码。此时,我们就可以想到logger 日志处理,接下来简单介绍以下logger,及其用户,往下看把!! 一、logger介绍及用法: — 1、 简介 日志,是用于记录程序的运行日志,以方便定位问题、解决问题。 — 2、日志处理方式 1)print() === > 通过打印直接查看打印信息,查看运行结果; #例子如下: def add(a, b): sum = a 阅读详情

相关推荐

Python常用模块 之 logging:日志模块

Python常用模块 之 logging:日志模块

孤寒者的博客 17万+

Python中内置的日志模块logging用法详解

https://cloud.tencent.com/developer/article/1587902

良知犹存的博客 6429

Python日志模块logging的使用

在开发一些大型项目的时候,都会使用日志来记录项目运行时产生的信息,以备出错时定位分析和从日志信息中提取数据统计分析等。在 Python 中使用 logging 内置模块即可对项目进行日志的配置。

qq_43629857的博客 1488

python logging模块详解

logging库采用模块化方法,并提供了几类组件:记录器,处理程序,过滤器和格式化程序。 以记录器Logger为对象,设置合适的处理器Handler,辅助以筛选器Filter、格式器Formatter,设置日志级别以及常用的方法,最终输出理想的日志记录给到指定目标

weixin_47154909的博客 1万+

logging模块学习笔记:logger 对象、日志等级

logger:日志对象,logging模块中最基础的对象,用logging.getLogger(name)方法进行初始化,name可以不填。通常logger的名字我们对应模块名,如聊天模块、数据库模块、验证模块等。 logger对象的常用方法有: setLevel:设置日志等级 日志等级分别有以下几种: CRITICAL : 'CRITICAL', ERROR : 'ERROR',...

weixin_33862188的博客 2973

深信服PT1-AF实验考试

深信服PT1-AF实验考试实验练习可以去深信服的在线实验平台(链接如下):深信服在线实验平台 (sangfor.com.cn)实验考试其实就是把所有的每一部分实验综合了起来以下内容仅做参考,不确保一样。

m0_72019240的博客 6975

python 日志 logging模块(详细解析)

1 基本使用 转自:https://www.cnblogs.com/wf-linux/archive/2018/08/01/9400354.html 配置logging基本的设置,然后在控制台输出日志, import logging logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(...

pansaky的博客 15万+

机器学习预测土壤养分:从电导率、pH到随机森林与神经网络的农业实践

在智慧农业与精准农业领域,机器学习已成为处理复杂农业数据、挖掘潜在规律的关键技术。其核心原理在于通过算法从多维数据中自动学习特征与目标变量之间的映射关系,尤其擅长捕捉非线性关联。这项技术的核心价值在于能够将传统上依赖昂贵、耗时实验室分析的问题(如土壤养分检测),转化为基于易获取传感器数据(如电导率、pH值)的快速、低成本预测任务,为农业生产的实时决策与资源优化提供了全新可能。其典型应用场景包括作物生长监测、产量预测以及精准施肥管理等。本文聚焦于利用随机森林和神经网络等回归算法,构建通过土壤物理参数预测氮磷钾

weixin_33693070的博客 648

如何使用 Python 的 logging 模块记录日志

在编写 Python 程序时,日志记录是一个非常重要的部分。日志不仅帮助你在开发过程中调试代码,还可以在程序正式运行时提供诊断信息,帮助定位问题。如果你正在构建一个复杂的系统或者开发大型应用程序,日志更是不可或缺的工具。Python 提供了强大且灵活的日志模块logging,通过它,你可以记录各种类型的日志信息,从调试信息到错误报告。在本文中,我们将介绍 Python 的logging模块,帮助你了解如何使用这个模块来记录和管理日志。我们将从基础开始,逐步扩展到更高级的使用方式,适合新手阅读。

chusheng1840的博客 2272

【python】python进阶——logging日志模块

本文主要介绍了logging 模块的核心概念、高级用法和最佳实践,助你构建专业级的应用日志系统。

weixin_51924657的博客 2488

保姆级教程:用NovAtel Inertial Explorer 8.7搞定GNSS/INS紧组合后处理(附避坑指南)

本文提供NovAtel Inertial Explorer 8.7的GNSS/INS紧组合后处理全流程教程,涵盖环境准备、数据转换、基站坐标解算及紧组合处理等关键步骤。特别针对零基础用户,分享实用技巧和常见陷阱,帮助高效完成高精度组合导航数据处理,适用于测绘、自动驾驶等领域。

weixin_42614269的博客 257

Python中使用logging模块记录日志

logging是Python中一个功能强大且灵活的模块,正确使用可以极大提升应用程序的可维护性和可调试性。使用它不仅更有效地记录和管理日志,还能确保应用程序在处理故障、调试问题以及监控运行时行为方面表现得更加出稳定色。

引用原创内容标明出处即可 1万+

使用RustDesk或者AnyDesk的TCP隧道实现Codesys系列PLC的远程调试和下载

Codesys远程调试

exat500g的博客 7218

python 日志 logging 模块详解

文章目录1 日志相关概念1.1 日志的作用1.2 日志的等级1.3 logging 模块两种使用方式2 使用 logging 提供的模块级别的函数2.1 logging 模块定义常用函数2.2 使用方式1:简单配置2.3 使用方式2:使用 logging.basicConfig() 函数3 使用 Logging 日志系统的四大组件3.1 Logger 类3.2 Handler 类3.3 Formater 类3.4 Filter类(了解即可)3.5 日志流处理简要流程 1 日志相关概念 1.1 日志的作用

桑凯旋的博客 1908

python logging 日志模块

第三种方式:dictConfig()

木下瞳的博客 1170

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5905

Python 日志模块(logging)的使用方法

日志模块 软件开发过程中可能会出现BUG,为了方便debug快速定位错误代码,就需要用到log日志。 在python中有个logging模块可以完成相关信息的记录。 1.日志级别 日志一共分为5个等级,从低到高分别是: DEBUG INFO WARNING ERROR CRITICAL 说明: DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 WARNING:一个...

阿鹏的博客 997

华为2024机考真题集合

2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所得的结果就是中位数。在实际考试中会随机抽三道题目进行考察,其中两道100分卷题和一道200分卷题,总共400分。幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数。1.众数是指一组数据中出现次数量多的那个数,众数可以是多个。

qq_25360769的博客 5024

python日志模块logging的使用

def loggerFunc(pathName = 'log_test.log',logName='I_am_a_log'): ''' 自定义日志函数 :param pathName: 日志文件存放的路径,基于调用此函数的文件 :param filename: 设置一个日志的名称,如果不设置就默认为root :return: ''' # 设置一个日志的名称,如果不设置就默认为root logger = logging.getLogger(log

Lost_sheep_sp的博客 355

Python的logging模块记录日志

Python日志模块logging的使用指南 本文详细介绍了Python内置的logging模块,包括日志级别、组件和使用方法。

面团酥的博客 960

CDD数据库文件制作(三)——服务配置(0x10)

根据诊断调查表进行每一步配置的详细操作,与背后逻辑解释 1.会话切换配置 1.1.根据诊断调查表进行信息提取(0x1001) 1.2.会话转换配置(0x1001) 1.3.根据诊断调查表进行信息提取(0x1002) 1.4.会话转换配置(0x1002) 1.5.根据诊断调查表进行信息提取(0x1003) 1.6.会话转换配置(0x1003) 1.7.会话切换配置完成后效果图 2.安全等级配置信息提取 2.1.安全访问配置(0x1001) 2.2.安全访问配置(0x1002) 2.3.安全访问配置(0x100

LOVE135149的博客 5800

python logging模块默认日志级别_Python 日志模块logging

logging模块:logging是一个日志记录模块,可以记录我们日常的操作。logging日志文件写入默认是gbk编码格式的,所以在查看时需要使用gbk的解码方式打开。logging日志等级:CRITICAL(50) > ERROR(40) > WARNING(30) > INFO(20) > DEBUG(10)logging有函数式的和面向对象的两种方式。由于函数式的功...

weixin_42500963的博客 1277

注意力机制模块:CA(坐标注意力)二次创新:融合深度可分离卷积,打造 CADS 模块

本文提出CADS模块,将坐标注意力(CA)与深度可分离卷积(DSC)深度融合,优化移动端AI部署效率。通过重构CA的计算范式,用深度卷积替代传统1×1卷积,在保持精度的同时显著降低计算开销。文章深入分析了CA的计算瓶颈和DSC的实际效率问题,详细阐述了CADS的设计原理与PyTorch实现,并提供了多组性能对比数据。该模块可直接应用于YOLO、UNet等主流模型,为移动端AI部署提供高效解决方案。

ZXSXJ的博客 84

python 的日志logging模块使用方法

python 的日志logging模块学习 1.简单的将日志打印到屏幕   import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warnin

Mr.Yan的专栏 1676

[Python学习日记-54] Python 中的日志模块 —— logging

在程序的运行过程中会执行很多操作或者进行很多的交互,也有的时候可能你开发出来的网站会遭到黑客的攻击,这样你就需要去翻程序记录的日志进行朔源,那我们应该要如何记录日志呢?自己编写?如果自己编写就会面临日志格式是否标准、日志信息是否齐全、日志记录功能开发周期长等一系列问题,这显然不太现实,那我们应该怎么办呢?这就要用到 Python 中的 logging 模块了。

JovaZou的成长之路 1034

TE Desktop V6.6.1.915.exe

TE Desktop V6.6.1.915.exe

Python 日志模块logging

Python 日志模块logging

岳来的博客 3433

OriginLab Origin 8.1.rar

学术出图

上一篇: mysql 查询每个科目分数大于80
下一篇: Matplotlib的使用
不负韶华_hhh
博客等级 码龄5年 18粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值