Python logging模块打印日志

news2025/2/23 3:36:56

logging打印日志,文件名为log_config.py 

import logging
import sys

def setup_logger(log_file, error_log_file):
    # 创建一个日志记录器
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)  # 设置全局日志级别为 DEBUG

    # 创建一个文件处理器,将日志写入文件
    file_handler = logging.FileHandler(log_file)
    file_handler.setLevel(logging.DEBUG)  # 设置文件日志级别为 DEBUG

    # 创建一个错误文件处理器,将错误日志单独写入文件
    error_file_handler = logging.FileHandler(error_log_file)
    error_file_handler.setLevel(logging.ERROR)  # 设置错误文件日志级别为 ERROR

    # 创建一个控制台处理器,将日志输出到控制台
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setLevel(logging.DEBUG)  # 设置控制台日志级别为 DEBUG

    # 创建一个日志格式化对象
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

    # 将格式化应用到处理器
    file_handler.setFormatter(formatter)
    error_file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)

    # 将处理器添加到日志记录器
    logger.addHandler(file_handler)
    logger.addHandler(error_file_handler)  # 将错误文件处理器添加到日志记录器
    logger.addHandler(console_handler)

    return logger


if __name__ == '__main__':
    logger = setup_logger('mail.log', 'error_mail.log')
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.DEBUGing('This is a DEBUGing message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

邮件发送,导入log_config.py配置

import smtplib
import socket
import log_config         #导入log_config.py
import logging
from email.mime.text import MIMEText
from email.header import Header

#logger = log_config.setup_logger('mail.log','error_mail.log')

def send_mail():
    from_address = '18847097110@163.com'
    to_address = '963268595@qq.com'
    subject = 'test email'
    body = 'hahahhahaha'

    smtp_server = 'smtp.163.com'
    smtp_port = 25

    username = '18847097110@163.com'
    password = 'your password'

    msg = MIMEText(body, 'plain', 'utf-8')
    msg['From'] = from_address
    msg['To'] = to_address
    msg['Subject'] = Header(subject, 'utf-8')


    logger = log_config.setup_logger('mail.log','error_mail.log')  #引用log_confog.py里的setup_logger
    server = None

    try:
        sock = socket.create_connection((smtp_server, smtp_port), timeout=5)
        sock.close()

        server = smtplib.SMTP(smtp_server, smtp_port)
        server.login(username, password)
        server.sendmail(from_address, to_address, msg.as_string())
        logger.info('Email sent successfully!')

    except socket.error as e:
        logger.error(f'Socket error occurred: {e}',exc_info=True)
    except smtplib.SMTPException as e:
        logger.error(f'SMTP error occurred: {e}')
    except Exception as e:
        logger.error(f'An error occurred: {e}')
    finally:
        if server is not None:
            server.quit()

if __name__ == '__main__':
    send_mail()

生成了一个mail.log和error_mai.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1207161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赛宁网安获评“铸网-2023”江西省实网应急演练优秀支撑单位

近日,南京赛宁信息技术有限公司(赛宁网安)获得了江西省工业和信息化厅颁发的“优秀支撑单位”荣誉。 该荣誉表彰是对赛宁网安在“铸网-2023”江西省工业领域网络安全实网应急演练中提供全程技术支撑能力的认可。 本次实网应急演练聚焦工业企…

VISA机制

需要用到VISA的3种机制:属性机制、锁定机制和事件机制。以写资源为例,3种机制的作用如图 (1)属性机制 属性机制用来控制资源的各种属性,这些属性分为两种:只读属性和可读可写属性。 (2&#xf…

轻量封装WebGPU渲染系统示例<30>- 绘制线段(源码)

原理说明: WebGPU提供了绘制基本线条非机制,只要render pipeline primitive对应的 topology属性指定为line-list或者line-strip即可绘制对应的线条。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxg…

【移远QuecPython】EC800M物联网开发板的音乐播放(PWM蜂鸣器播放生日快乐歌,Sound模块播放音频)

【移远QuecPython】EC800M物联网开发板的音乐播放(PWM蜂鸣器播放生日快乐歌,Sound模块播放音频) 效果: 【移远QuecPython】EC800M开发板外置功放重金属和PWM音调(BUG调试记录) 文章目录 PWM蜂鸣器播放播放…

如何定制开发软件 App?|小程序网站搭建

如何定制开发软件 App?|小程序网站搭建 随着移动互联网的快速发展,定制开发软件 App 成为了许多企业和个人的需求。无论是为了满足特定业务需求,还是为了提升用户体验,定制开发软件 App 都可以帮助我们实现目标。下面,…

如何将 .SQL 文件导入到 IDEA自带的MySQL中

首先连接数据库新建数据库右键选择该数据库选择如下:找到对应的sql文件即可

质量管理工作难做,为什么还有那么多人还继续做?

理解质量管理的挑战 在当今商业环境中,质量管理工作是一项充满挑战的使命。然而,尽管面对种种困难,却有着越来越多的人愿意踏上这条坎坷之路。为何质量管理工作如此艰难,却依旧吸引无数人投身其中呢? 内外动因交融 内…

高通发布骁龙X Elite Oryon CPU /GitHub出现一款开源项目,让用户“拥有”更大的GPU内存|魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件🔥,更新AIGC的最新动态,生成相应的魔法简报,节省阅读时间👻 🔥资讯预览 高通发布骁龙X Elite Oryon CPU,性能超越苹果和英特尔&#xff0…

如何使用Echarts

以umi为例 首先是下载两个插件(echarts和echarts-for-react) npm npm install --save echarts-for-react npm install echarts yarn yarn add echarts-for-react yarn add echarts 接下来是在tsx或jsx中引入使用 import ReactEcharts from "echa…

运输服务预约小程序的效果如何

市场中运输服务的需求非常高,比如常见的汽车出境、进出口代理、仓储服务、集装箱运输、展会运输等,由于相关从业者多,所以在运输服务总是在市场中有着一席之地。 以前的运输企业拓客转化方式大多是同地区的单子,很难多渠道拓展&a…

基于Nvidia Jetson orin nx的 YoloV7 tensorRt加速

准备环境 安装jetPack组件 Jetpack 是 Nvidia为 Jetson系列开发板开发的一款软件开发包,常用的开发工具基本都包括了,并在在安装 Jetpack的时候,会自动的将匹配版本的CUDA、cuDNN、TensorRT等。官方提供套件中默认已经安装,可以通…

基于rosbridge 与业务系统长链接网关架构设计

技术背景: 业务系统:管理机器人,机器人任务执行等等 机器人使用是ros1 ,业务系统与机器人交互使用rosbridge, rosbridge 就是websocket 链接,所以就有了如下的一些架构思想 架构图 客户端 客户端主要分为app端、pc端…

又双叒!宏电5G RedCap工业智能网关获得首个基于RedCap终端场景的华为技术认证

近日,宏电Z2 V20 5G RedCap工业智能网关率先通过华为OpenLab全球开放实验室的系列严格验证流程,完成基于华为RedCap终端场景的兼容性测试,首个获得华为Cloud Open Labs授予的HUAWEI COMPATIBLE证书及其相关认证徽标使用权。 宏电5G RedCap工业…

SAP-PP-MRP-策略组流程演示

策略组10 按库存生产,按库存生产就不考虑其他了,说明库存不足,或者说预测下一阶段销售,库存不足了,那么就需要提前安排生产。 策略组10按库存生产操作流程TCODE操作说明注意事项MM01创建物料成品MM01创建物料原材料C…

vscode + gdb +gdbserver 远程调试Pg源码

本文主要介绍如何通过window或者macos远程调试虚拟机的postges源码 安装pg13调试版本 安装调试版postgres13,此处忽略 安装vscode(window macos) 安装插件 Remote Development 插件安装插件C/C 安装gdb gdbserver(远程虚拟机) yum install gdb yum install gdb-gdbserver…

BUUCTF 来首歌吧 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 密文: 下载附件,解压得到一个.wav音频文件。 解题思路: 1、得到一个音频文件,放到Audacity看看。看到有两条音轨,放大上面的那条音轨,看到这…

isomorphic-fetch库代码示例

isomorphic-fetch库的爬虫程序。 typescript // 引入isomorphic-fetch库 import fetch from isomorphic-fetch; // 设置 const proxy ; // 定义视频URL const url ; // 使用fetch获取视频数据 fetch(url, { method: GET, headers: { Accept: application/json, …

工作常遇,Web自动化测试疑难解答,测试老鸟带你一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、自动化测试中隐…

工作汇报怎么写?建议收藏

整体思路与模块: 背景/事件 成果展示 推动落实的方法论 收获与成长 存在的不足及改进措施 下一步工作安排 支持(选) 一、背景/事件 对于区分“功能性总结”和“应付性总结”,在背景/事件方面有一个关键点 是报告是否具有…

【前端开发】图例宽度根据数值自适应

前端开发 先看结果图 图例的宽度会随数值的改变而变化。 HTML部分 <!-- 数值部分 --> <ul class"tuli" ref"num"><listyle"margin-top: 5px;padding: 0 5px;text-align: center;"v-for"item of itemArr":key"i…