首页 > 其他分享 >使用logging封装日志

使用logging封装日志

时间:2023-04-04 18:02:08浏览次数:38  
标签:封装 mylog WARNING 处理器 logging 日志 logger

自己封装的logging,封装日志的几个组件
Logger 记录器暴露了应用程序代码直接使用的接口。

Handler 处理器将日志记录(由记录器创建)发送到适当的目标。

Filter 过滤器提供了更细粒度的功能,用于确定要输出的日志记录。

Formatter 格式器指定最终输出中日志记录的样式。

日志等级说明:
DEBUG:程序调试bug时使用
INFO:程序正常运行时使用
WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
ERROR:程序出错误时使用,如:IO操作失败
CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使用
默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。 日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

 

 1 import logging
 2 
 3 
 4 def mylog():
 5     # 创建日志器
 6     logger = logging.getLogger()
 7     # 设置日志级别
 8     logger.setLevel(logging.WARNING)
 9 
10     # 防止重复写日志,这里进行判断,若logger.handlers列表为空则添加
11     if not logger.handlers:
12         # 创建控制台处理器
13         sh = logging.StreamHandler()
14         # 将控制台处理器放到日志器中
15         logger.addHandler(sh)
16 
17         # 创建文件处理器
18         fh = logging.FileHandler('log4.txt', encoding='utf-8')
19         # 将文件处理器放到日志器中
20         logger.addHandler(fh)
21 
22         # 根据格式,创建格式器
23         fmt1 = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
24         formatter1 = logging.Formatter(fmt1)
25         fmt2 = "%(asctime)s - %(filename)s - %(levelname)s: %(message)s"
26         formatter2 = logging.Formatter(fmt2)
27 
28         # 给控制台处理器设置格式
29         sh.setFormatter(formatter1)
30         # 给文件处理器设置格式
31         fh.setFormatter(formatter2)
32 
33     return logger
34 
35 
36 mylog().debug("this is a debug msg")
37 mylog().info("this is a info msg")
38 mylog().warning("this is a warning msg")
39 mylog().error("this is a error msg")
40 mylog().critical("this is a critical msg")
View Code

 

控制台输出:

 

 

日志文件的输出:

 

标签:封装,mylog,WARNING,处理器,logging,日志,logger
From: https://www.cnblogs.com/Sharing-knowledge/p/17287255.html

相关文章

  • 改动日志
    2023-04-041、   2、删掉  3、删掉 ......
  • 一款专业的日志分析软件——EventLog Analyzer
    日志分析是一种广泛应用于计算机系统中的技术,用于从大量数据中提取有用信息。在计算机系统中,日志是由操作系统、应用程序和设备生成的记录,这些记录可以包含有关系统性能、故障、异常行为和用户活动的信息。通过分析这些日志,可以帮助管理员、开发人员和数据科学家识别问题并改进系统......
  • API 网关日志的价值,你了解多少?
    本文介绍了API网关日志的价值,并以知名网关ApacheAPISIX为例,展示如何集成API网关日志。作者钱勇,API7.ai技术工程师,ApacheAPISIXCommitter。原文链接网关日志的价值在数字化时代,软件架构随着业务成长而变得越来越复杂,这给故障的发现和排查都带来了非常大的挑战,进一......
  • 启动redis时,告警日志中出现“The TCP backlog setting of 511……”以及“overcommit_
    问题描述:启动redis时,告警日志中出现“TheTCPbacklogsettingof511……”以及“overcommit_memoryissetto0…..”警告,如下所示:系统:rhel7.9数据库:redis6.2.61、异常重现[[email protected]]#redis-serverredis6379.conf[root@leo-redis626-aredis-6.......
  • 百度面试题-海量日志,读取IP
    4、海量日志数据,提取出某日访问百度次数最多的那个IP。回答:如果日志文件足够的大,大到不能完全加载到内存中的话。那么可以考虑分而治之的策略,按照IP地址的hash(IP)%1024值,将海量日志存储到1024个小文件中。每个小文件最多包含4M个IP地址。对于每个小文件,可以构建一个IP作为ke......
  • MySQL 关闭 binlog 日志
    【关闭binlog日志】1、vim/etc/my.cnf注释如下内容:#log-bin=mysql-bin#binlog_format=mixed#server-id=1#expire_logs_days=102、重启mysql服务/etc/init.d/mysqlrestart......
  • springboot 日志
    <loggername="com.sinoservices.chainwork.bms"level="INFO"/><loggername="org.hibernate.orm.deprecation"level="error"/><loggername="druid"additivity="true"><levelval......
  • 微店商品详情接口,微店商品数据接口,微店商品优惠券接口封装代码教程
    业务场景:作为全球最大的B2C电子商务平台之一,微店平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入微店平台,微店平台提供了丰富的API接口,其中商品详情接口是非常重要的一部分。大家有探讨稳定采集微店整站实时商品详情数据接口,通过该接口开发者可以更......
  • 微信小程序自定义封装组件-showModal
    封装一个组件这里由于最近使用微信小程序居多,所以着重写的是小程序的,但是万变不离其宗,组件实现思路其实都差不多的微信小程序开发中官方自带的wx.showModal,这个弹窗API有时候并不能满足我们的弹窗效果,所以往往需要自定义modal组件。下面我们进行一个自定义modal弹窗组件的开发,并......
  • 日志部分
    简历:实现同步/异步日志系统,记录服务器运行状态 一、概述1、什么是日志系统记录服务器运行状态、错误信息、访问数据,实现按天分类、超行分类,支持同步、异步。2、同步/异步日志简要概述同步日志异步日志区别在于写入操作是否是阻塞的。同步写入会阻塞当前线程,直到写入操作完......