python设置日志格式

article/2025/10/18 21:57:53

#   %(asctime)s 字符串形式的当前时间。
#   %(levelname)s 文本形式的日志级别
#   %(name)s Logger的名字
#   %(filename)s 调用日志输出函数的模块的文件名
#   %(funcName)s 调用日志输出函数的函数名
#   %(lineno)d 调用日志输出函数的语句所在的代码行
#   %(message)s 用户输出的消息
   

#导包
import  logging#定义获取logging函数
def get_logging():# 自定义日志格式: fm = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'"# 设置日志级别level=logging.DEBUG# 将日志信息输出到文件中:filenamelogging.basicConfig(level=logging.DEBUG,filename="../log/log1.log",format=fm)return logging

 logging日志模块四大组件

Logger (日志器) :提供了程序使用日志的入口
Handler (处理器 ):将 logger 创建的日志记录发送到合适的目的输出
Formatter( 格式器 ):决定日志记录的最终输出格式
Filter (过滤器 ):提供了更细粒度的控制工具来决定输出哪条日志记录,丢弃哪条日志记录

Logger常用方法
        1.打印日志 : logger.debug() 、logger.info() 、logger.warning() 、logger.error() 、logger.critical()
        2.logger.setLevel() :设置日志器将会处理的日志消息的最低严重级别
        3.logger.addHandler() :为该logger对象添加一个handler对象
        4.logger.addFilter() :为该logger对象添加一个filter对象
Handler处理器 类型:               

        1. 控制台处理器 StreamHandler()
        2. 文件处理器 fileHandler()
        3. 根据大小切割 RotatingFileHandler()
        4. 根据时间切割 TimedRotatingFileHandler()

import logging
import logging.handlers# 获取logger
logger = logging.getLogger()# 修改名称
logger = logging.getLogger("user")# 设置级别
logger.setLevel(logging.INFO)# 获取控制台 处理器
sh = logging.StreamHandler()# 或取文件处理器
# 根据时间切割
# when:时间单位
# interval: 时间间隔
# backupcount: 保留的备份数量
th = logging.handlers.TimedRotatingFileHandler(filename="../log/logtime.log", when="S", interval=1, backupCount=3)# 设置处理器级别,只有error级别才能输入文件
th.setLevel(logging.ERROR)# 添加格式器
fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s"
fm = logging.Formatter(fmt)# 将格式器 添加到处理器中
sh.setFormatter(fm)
th.setFormatter(fm)# 将处理器添加到logger
logger.addHandler(sh)
logger.addHandler(th)# 输入信息
logger.debug("debug..")
logger.info("info..")
logger.warning("warning....")
logger.error("err....")

封装

# 导包
import logging.handlersclass GetLogger:logger = None@classmethoddef get_logger(cls):#判断是否为空if cls.logger is None:# 获取日志器cls.logger = logging.getLogger()# 设置日志器级别cls.logger.setLevel(logging.INFO)# 获取控制台 处理器sh = logging.StreamHandler()# 获取文件 处理器th = logging.handlers.TimedRotatingFileHandler(filename="../log/logtime.log", when='midnight', interval=1,backupCount=30, encoding='utf-8')# 设置格式器fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s"fm = logging.Formatter(fmt)# 将格式器添加到处理器中sh.setFormatter(fm)th.setFormatter(fm)# 将处理器添加到 日志器cls.logger.addHandler(th)cls.logger.addHandler(sh)return cls.logger

调用

import time
import unittest
from time import sleep
from parameterized import parameterized
from selenium import webdriver
from selenium.webdriver.common.by import Byfrom day07.cal.tool.fz_log import GetLoggerlogger = GetLogger().get_logger()class TestCalc(unittest.TestCase):driver = None@classmethoddef setUpClass(cls):logger.info("正在初始化driver...")# 实例化浏览器cls.driver = webdriver.Chrome()# 打开浏览器url = 'http://cal.apple886.com/'cls.driver.get(url)cls.driver.maximize_window()@classmethoddef tearDownClass(cls):logger.info("正在关闭driver...")# 关闭cls.driver.quit()cls.driver = None# 加法def test_Add(self, num1=20, num2=10, expect=30):logger.info("正在遍历传进来的第一个数字...")# 遍历传进来的数字,并强制转换为字符串# 第一个数for n in str(num1):# 拆开单个按钮的定位方式logger.info("正在点击数字:{}".format(n))self.driver.find_element(By.CSS_SELECTOR, "#simple{}".format(n)).click()logger.info("正在点击加法按钮...")# 点击加法按钮self.driver.find_element(By.CSS_SELECTOR, "#simpleAdd").click()logger.info("正在遍历传进来的第二个数字...")# 第二个数for n in str(num2):# 拆开单个按钮的定位方式logger.info("正在点击数字:{}".format(n))self.driver.find_element(By.CSS_SELECTOR, "#simple{}".format(n)).click()logger.info("正在点击等号按钮...")# 点击等号self.driver.find_element(By.CSS_SELECTOR, "#simpleEqual").click()logger.info("正在获取结果...")# 获取结果result = self.driver.find_element(By.CSS_SELECTOR, "#resultIpt").get_attribute("value")print("实际结果:{},预期结果:{}".format(result, expect))try:logger.info("正在断言...")# 断言self.assertEqual(result, str(expect))except AssertionError:logger.info("正在截图...")# 如果实际结果不等于预期结果 截图self.driver.get_screenshot_as_file('./{}.png'.format(time.strftime("%Y_%m_%d %H_%M_%S")))

结果


http://chatgpt.dhexx.cn/article/NtvYw6nd.shtml

相关文章

Log4j日志输出格式

Log4j日志输出格式 对于我才开始工作来说,输出日志唯一的目的就是打印代码的调试信息,当有项目运行什么问题或者错误可以通过查看日志快速的找到问题根源(这也是我来公司最开始就遇到的问题)。 先分享一个公司框架自带的通用日志…

logback 日志输出格式

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan​ 【前言】 日志对一个系统的重要性不言而喻;日志通常是在排查问题时给人看,一个友好的输出样式让人看到后赏心悦目,排查效率通常也会随之提高;…

Nginx的日志格式

vim /etc/logstash/conf.d/ filter模块的作用:过滤,{在一个大的真空管里面,中间有一个过滤网,只有比这个小的东西能过去,大的会拦住} 在grok中使用match进行选择,所传送过来的是下面这样。希望把他们变成i…

什么是日志文件

文章目录 什么是日志文件Centos 7 日志文件简易说明日志文件的重要性Linux常见的日志文件文件名/var/log/boot.log/var/log/cron/var/log/dmesg/var/log/lastlog/var/log/maillog或 /var/log/mail/*/var/log/messages/var/log/secure/var/log/wtmp、/var/log/faillog/var/log/h…

AE2018插件AfterCodecs v1.9.0安装教程,(AE mp4)

1.自己百度下载好 2.这2个文件夹要复制,其他可以不管 复制Autokroma AfterCodecs 文件夹到 C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore 复制com.autokroma.afcpanel 文件夹到 Adobe After Effects CC 2018\Support Files\Plug-ins\Extensions&#x…

PS/PR/AE全套插件一键安装包无需注册码

注意事项: 1、下载前请关闭360、电脑管家等杀毒软件,否则会误报病毒导致无法安装; 2、安装PS/PR/AE插件合集前,请务必先安装好Adobe软件; 3、安装PS/PR/AE插件合集前,请务必关闭Adobe旗下所有软件。 安装步…

Ae 2020最新版下载地址 一键安装Windows

各类cc软件。 地址:https://www.yuque.com/docs/share/cf424323-49e5-43e6-a80c-4f07ce467d56 访问密码:关注公众号"糊糊省钱",回复“ps”获取

Adobe After Effects(AE)2022软件安装[MAC]

Adobe After Effects简称“AE”,Adobe After Effects 2022mac是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室,属于层类型后期软件。Adobe…

AE CC2018/64位安装步骤及各种出现问题!!(真的装了好久)

最近爱上录vlog,但是作为一个计算机学院的学生我怎么仅仅局限于手机里的剪视频软件呢!然后我打算学一下AE,但是在这个py的过程中,真的废了快一个晚上了,从第一次安装出现问题我就应该立马百度,但是我没有&a…

2023AE软件、Adobe After Effects安装下载教程

2023AE软件是一款由Adobe公司开发的视频编辑软件,也被称为Adobe After Effects。它在广告、电影、电视和网络视频等领域广泛应用,用于制作动态图形、特效、合成和其他视觉效果。该软件支持多种视频和音频文件格式,具有丰富的插件和预设&#…

Adobe After Effect (AE) cc2020 安装教程【64位】

Adobe After Effects简称“AE” 是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。属于层类型后期软件。 ----介绍来源于百度 【软件名称】: After …

【AE2019】Adobe_After_Effects_2019软件下载及安装教程

下载地址: 链接:https://pan.baidu.com/s/1-foCrqbfKugK6cf7M4nevQ 提取码:6ewm 下载方式: 复制链接到浏览器中打开,输入提取码,保存到网盘,然后打开百度网盘(PC端)&a…

AE中文版 AE2021中文版下载 AfterEffects2021中文版ACR14.0最新下载和安装

AE我目前最为专业也是最火的特效制作工具,全称叫AfterEffects,现在最新的就是2021的,而且是中文,并且内置的ACR已更新到最新的14.0,非常适合新手朋友刚开始零基础入门学习使用,并且非常好上手,学…

After Effects 2021软件安装包

Ae 2021的全称是After Effects 2021,它是由Adobe公司研发推出的一款功能强大全面的视频制作软件,这款软件不仅仅可以帮助用户制作出各种精彩且有创意的动画、视频等作品,还可以凭借着自己的思维给视频作品添加文字、音乐、片头以及标题等&…

After Effects (AE)2021软件下载及安装教程。

**目录** 一、前言二、下载三、安装教程 一、前言 Adobe After Effects简称“AE”是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。属于层类型后期软件。 Adobe…

PS/PR/AE插件免费下载网站整理(附送一键安装包)

你知道别人办公效率为什么比你高吗? 很可能是你不懂得用插件,还傻傻的去背网上的教程,一步步手动操作 就好比当你还在PS里一顿操作猛如虎,好不容易花30分钟修好一张图的时候… 人家早就用插件1分钟搞定了~~(然后摸鱼2…

AE(ArcGIS Engine)的安装与配置(附加ArcGIS安装及所需安装包)

本文使用的ArcGIS 是10.2版本,因此安装的AE也是10.2版本,与此配套的安装了VS(Visual Studio) 2012。事实上,在安装了ArcGIS后,相应的便确定了VS与AE的版本,AE 10.2对应的VS有两种版本:2010与2012&#xff0…

Adobe After Effect (AE) cc2021 安装教程【64位】

Adobe After Effects简称“AE” 是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。属于层类型后期软件。 ----介绍来源于百度 【软件名称】: After …

QImage缩放后图片更清晰处理

QImage的缩放是比较常用的,今天碰到一个问题: 我发现缩放后的图片看起来很不清晰,于是看了一下QImage的scaled方法。发现它默认的是快速缩放,也就是增加scale的处理速度,牺牲的就是图片的质量。当我更需要图片质量的时…

Qt之QImage类

文章目录 QT——QImage类QImage获取图像的数据信息QImage图像格式转换由RGB格式转换为BGR格式将彩色图转换为灰度图图像保存 QImage图像显示在QLabel上QPixmap与QImage之间的互相转换Mat与QImage之间的互相转换8位的灰度图像进行显示QImage::Format_Indexed8三通道的彩色图进行…