Python3使用logging模块记录日志

薄洪涛5年前Python1233

之前的时候我记录日志都是自己手写,将内容写进文件,总觉得这样好low,今天在写企业微信脚本的时候,就查了下,果然有logging模块,就直接拿过来用了,百度代码如下

logging.basicConfig(
    level=logging.DEBUG,  # log level
    format='%(asctime)s  %(filename)s : %(levelname)s  %(message)s',  # log format
    datefmt='%Y-%m-%d %A %H:%M:%S',  # record time
    filename='./log/log.txt',  # log filename
    filemode='w')
console = logging.StreamHandler()  # console handler
console.setLevel(logging.INFO)  # handler level
formatter = logging.Formatter('%(asctime)s  %(filename)s : %(levelname)s  %(message)s')  # handler format
console.setFormatter(formatter)
logging.getLogger().addHandler(console)

结果发现,日志可以记录,但是中文会乱码(吐槽下百度搜来的代码有些真的是胡乱写)

于是看了下文档

修改代码如下

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"
fp = logging.FileHandler('./log/log.txt', encoding='utf-8')
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT, handlers=[fp])
logging.debug(msg)

乱码问题解决

另外,查询文档得到如下

Logger:日志,暴露函数给应用程序,基于日志记录器和过滤器级别决定哪些日志有效。

LogRecord :日志记录器,将日志传到相应的处理器处理。

Handler :处理器, 将(日志记录器产生的)日志记录发送至合适的目的地。StreamHandler是输出到控制台命令行,FileHandler是输出到文件

Filter :过滤器, 提供了更好的粒度控制,它可以决定输出哪些日志记录。

Formatter:格式化器, 指明了最终输出中日志记录的布局。

日志级别如下,可以按照自己的需求选用,系统默认输出Warning级别以上的消息

image.png

标签: 日志

相关文章

常用中文编码方式对比

最近项目中涉及到了使用python解析文件内容的需求,文件中全都是中文,由于这一过程中碰到的乱码问题实在过多,所以特地花时间研究了一下中文编码。本文中先介绍一下ASCII,GB2312,GBK和GB1...

UTC转标准时间和时间戳

最近做解析的时候,有这么一条命令[root@qip1200 ~]# date Thu Oct 25 20:33:02 HST 20...

python爬虫第一篇之环境的搭建

python爬虫第一篇之环境的搭建

爬虫入门知识及环境的搭建今天我们来学习下爬虫一、 什么是爬虫如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是...

python爬虫之字体反爬及解决方案

python爬虫之字体反爬及解决方案

在爬取某些网站的数据时,经常会发现爬下来的数据夹杂着乱码;但是网页上明明是正常的,这就是此网站做了字体反扒技术;比如  https://su.58.com/qztech/ ...

Python之为世界贡献你的轮子

何为轮子?我理解的就是能重复使用的一些包,类,库,,就是咱们通过pip install XX下载的包,今天学习些如何自己写一个包让别人可以使用pip下载并使用第一步,注册账号https://pypi....

python爬虫第二篇之安居客

python爬虫第二篇之安居客

最近考虑换个环境,打算去租个房子,但是租房信息那么多,我们能不能把它爬取下来做个统计,看看什么价位的房子最多,哪个地段的房子最便宜呢在爬取之前,请大家安装下BeautifulSoup库和request...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。