首页 > 编程语言 >python日志logger

python日志logger

时间:2023-10-07 16:25:52浏览次数:43  
标签:logging log python file logger Logger 日志

写代码过程中,为了方便问题定位,经常需要打印信息,但是太多的print()不好,所以可以用到logger

Logger通常分为两类:

一类是StreamHandler,将日志信息输出到控制台;另一类是FileHandler,将日志信息输出到文件。

Python标准库中的logging模块提供了强大的Logger功能。

import logging


class Logger:
    def __init__(self, file_log):
        self.file_log = file_log
        # 给Logger添加Handler。创建日志记录器。获取名为may_logger的Logger对象
        self.logger = logging.getLogger("may_logger")

    def logger_may(self):
        # 配置Logger
        logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

        # 因为系统默认输出到控制台,所以有关StreamHandler日志处理器的给注释掉,要不然会重复输出
        # 创建一个StreamHandler日志处理器,输出到控制台
        # console_handler = logging.StreamHandler()
        # console_handler.setLevel(logging.DEBUG)

        # 创建一个FileHandler日志处理器,输出到文件
        # filelog = 'example.log'
        file_handler = logging.FileHandler(self.file_log)
        file_handler.setLevel(logging.DEBUG)

        # 定义Handler的输出格式
        formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        # console_handler.setFormatter(formatter)  # 输出格式运用到控制台日志处理器
        file_handler.setFormatter(formatter)  # 输出格式运用到文件日志处理器

        # 将处理器添加到记录器中
        # logger.addHandler(console_handler)
        self.logger.addHandler(file_handler)

        return self.logger

    # 自定义清理函数,用于清空文件中旧的日志数据
    def clear_log_data(self):
        with open(self.file_log, 'w') as f:
            f.truncate()

运用如下:

from testcode import logUtil

file_log = 'example.log'

logger = logUtil.Logger(file_log).logger_may()
logUtil.Logger(file_log).clear_log_data()  # 清空旧的文件数据
# 使用Logger记录信息
logger.debug('这是一条debug级别的日志,即调试信息')
logger.info('这是一条info级别的日志,即普通日志')
logger.warning('这是一条warning级别的日志')
logger.error('这是一条error级别的日志')
logger.critical('这是一条critical级别的日志')

运行结果:

在同一目录下,会生成 .log 文件

 

注意事项:

  • 在使用Logger时,建议设置合适的日志级别,如DEBUG、INFO、WARNING、ERROR和CRITICAL。这样可以控制输出的日志信息量,避免过多的日志干扰程序运行。
  • Logger可以同时添加多个Handler,以便将日志输出到不同的地方,如控制台、文件等。
  • Logger的格式化字符串可以自定义,以满足不同的输出需求。在上面的示例中,我们使用了时间戳、日志级别和日志信息作为格式化字符串的内容。

 

如果要过滤指定的信息:

# 创建一个日志过滤器,只记录包含关键词"error"的日志消息
        class ErrorFilter(logging.Filter):
            def filter(self, record):
                return 'error' in record.getMessage()

        error_filter = ErrorFilter()

        # 将过滤器添加到处理器中
        console_handler.addFilter(error_filter)
            

 

标签:logging,log,python,file,logger,Logger,日志
From: https://www.cnblogs.com/may18/p/17746582.html

相关文章

  • python+playwright 元素操作
    Playwright可以与HTML输入元素交互,例如文本输入、复选框、单选按钮、选择选项、鼠标单击、键入字符、键和快捷方式以及上传文件和焦点元素。fill()输入文字使用 locator.fill() 是填写表单字段的最简单方法。它聚焦元素并input使用输入的文本触发事件。它适用于<input>,<t......
  • 解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时
    方法一:在awk中已经判断好并发连接数量的ip地址,传给whileread执行防火墙规则封掉对应的ip。root@centos8~]#catddos.sh#!/bin/bashss-nt|awk-F '[:]+''/ESTAB/{ip[$(NF-2)]++}END{for(iinip)if(ip[i]>100)printi}'|awk-F']''{print$1}'|whilere......
  • Python笔记目录
    Python笔记目录本视频学习自b站python视频,原地址在此笔记在原版笔记的基础上根据自己的理解做了调整,与原版的顺序和内容有有些区别笔记仅供学习使用,侵删第一章Python的安装、卸载第二章PyCharm的下载、安装、使用第三章Python的编写和运行第四章Python的基础语法......
  • python+playwright 元素定位
    元素定位官方文档:https://playwright.dev/python/docs/locators#lists元素操作官方文档:https://playwright.dev/python/docs/next/api/class-locator#methods1、xpath定位打开百度网页,点击导航-新闻#xpah//*[@id="s-top-left"]/a[1]page.click('xpath=//*[@id="s-top-......
  • python 3.12.0 perf 试用
    python3.12.0的发布,官方支持了基于perf的调用链分析,基于容器搞了一个简单的环境测试下环境准备包含了包含perf的python基础镜像,以及一个使用flask的web服务,使用flamescope的可视化页面分析docker-compose文件version:'3'services:flamescope:......
  • AIGC革新,将文字或者LOGO融入AI视频基于PIKA-labs(Python3.10)
    很多平台都会禁止用户使用带有网址或者二维码的头像以及文章配图,这样可以有效的防止用户的一些“导流”行为。当然,头像、文章或者视频现在都是AI来审,毕竟现在人工的成本实在太高,但是如果我们把文字元素直接融入图像或者视频之中,如此一来,AI也会很难识别出一些“导流”的元素。本次......
  • Python简易HTTP文件服务器
    我超怕的-HTTPsimplefileserverusePython-https://www.cnblogs.com/iAmSoScArEd/p/17745959.htmlHowtouse安装依赖:pip3installflask保存到文本simple_file_server.py后运行:python3simple_file_server.py浏览器访问:http://ip:9999CodefromflaskimportFlask,......
  • python TCP Server
    pythonTCPServerhttps://blog.csdn.net/weixin_45707610/article/details/131511896 下面的代码,要先关闭防火墙,然后再启动fromsocketserverimportBaseRequestHandler,TCPServerclassEchoHandler(BaseRequestHandler):defhandle(self):print('Got......
  • python+playwright 简单使用
    启动浏览器并打开百度页面安装后,您可以在Python脚本中使用Playwright,并启动3种浏览器中的任何一种(chromium,firefox和webkit)。playwright执行默认运行的浏览器是chromium1、同步方式启动浏览器2、异步方式启动浏览器 ......
  • python+playwright 环境准备
    前言2020年微软开源一个UI自动化测试工具Playwright,与selenium一样,入门简单,支持多语言,所以playwright开始被更多人注意到了,它甚至比selenium更好用更强大。playwright的优势跨浏览器和平台跨浏览器。Playwright支持所有现代渲染引擎,包括Chromium、WebKit和Firefox。......