千家信息网

python logging模块打印log到指定文件

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,可能我们经常会使用print来输出信息到窗口,但当我们有很多个py文件需要运行,项目比较庞大的到时候,print简直就是太low了点了。那么我们可以使用强大的logging模块,把输出到指定的本地pc
千家信息网最后更新 2025年02月05日python logging模块打印log到指定文件

可能我们经常会使用print来输出信息到窗口,但当我们有很多个py文件需要运行,项目比

较庞大的到时候,print简直就是太low了点了。那么我们可以使用强大的logging模块,把

输出到指定的本地pc某个路径的文件中。

一、 logging的框架
1、 Loggers: 可供程序直接调用的接口,app通过调用提供的api来记录日志
2、 Handlers: 决定将日志记录分配至正确的目的地
3、 Filters:对日志信息进行过滤, 提供更细粒度的日志是否输出的判断
4、 Formatters: 制定最终记录打印的格式布局

二、 Log级别
系统默认有6个级别,优先级:

CRITICAL    50ERROR      40WARNING   30INFO        20DEBUG      10NOTSET     0

设置要打印的log时只需要设置优先级,比如设置打印INFO,那么比INFO优先级高的WARNING/ERROR/CRITICAL都将被打印。

三、 正常的打印

这里只输出了ERROR和WARNING的信息,是因为logging默认的输出级别是WARNING。

四、 输出到指定文件
来看看这样写的代码:

import loggingimport unittestclass lgtest(unittest.TestCase):    logging.basicConfig(filename='../LOG/'+__name__+'.log',format='[%(asctime)s-%(filename)s-%(levelname)s:%(message)s]', level = logging.DEBUG,filemode='a',datefmt='%Y-%m-%d %I:%M:%S %p')    def test(self):        logging.error("这是一条error信息的打印")        logging.info("这是一条info信息的打印")        logging.warning("这是一条warn信息的打印")        logging.debug("这是一条debug信息的打印")if __name__=='__main__':    unittest.main()

使用logging.basicConfig来指定要输出的文件以及log的输出形式、包括时间格式、日志级别等等。

Filename:指定路径的文件。这里使用了+-name-+是将log命名为当前py的文件名
Format:设置log的显示格式(即在文档中看到的格式)。分别是时间+当前文件名+log输出级别+输出的信息
Level:输出的log级别,优先级比设置的级别低的将不会被输出保存到log文档中
Filemode: log打开模式
a:代表每次运行程序都继续写log。即不覆盖之前保存的log信息。
w:代表每次运行程序都重新写log。即覆盖之前保存的log信息

五、 最终的log文档

文件名与py文件名相同,因为basicConfig里面使用了name来获取的。

我们来看看内容,这是运行了两次py文件的内容:

[2018-02-10 02:29:57 PM-Logout.py-ERROR:这是一条error信息的打印][2018-02-10 02:29:57 PM-Logout.py-INFO:这是一条info信息的打印][2018-02-10 02:29:57 PM-Logout.py-WARNING:这是一条warn信息的打印][2018-02-10 02:29:57 PM-Logout.py-DEBUG:这是一条debug信息的打印][2018-02-10 02:39:32 PM-Logout.py-ERROR:这是一条error信息的打印][2018-02-10 02:39:32 PM-Logout.py-INFO:这是一条info信息的打印][2018-02-10 02:39:32 PM-Logout.py-WARNING:这是一条warn信息的打印][2018-02-10 02:39:32 PM-Logout.py-DEBUG:这是一条debug信息的打印]
运行一次会有4个信息打印出来,因为filemode设置成了a,所以再次运行时不会覆盖

之前的log信息,就有8条信息了。

Ok,log输出到文档就这么简单。当然大家如果弄熟了可以自己写记录器、过滤器等。

信息 这是 输出 文件 级别 运行 日志 优先级 文件名 文档 格式 程序 代表 内容 时间 路径 模块 强大 相同 到时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全绘画临摹练习 计算机网络技术的国家标准 拼多多的网络安全 大华网络视频存储服务器故障 6k红包软件开发者团队 数据库创建表的四种方法是什么 广东软件开发公司排名 广东省公安局网络安全监督检查 网络安全与个人信息保护法律实务 软件开发人员工种 二维码信息怎么和服务器对应的 龙岗网络安全运维哪家好 预防近视网络安全节目 厦门思明app软件开发 畅捷通服务器怎么登录 如东县网络安全知识小报 叙述软件开发周期 云博计算机软件开发有限公司 高校网络安全教育的必要性 打开oracle服务器 湖南省长沙首选dns服务器 地名世界互联网科技发源地 oa软件开发公司黄页 意识形态和网络安全培训课件 架设服务器服务端ip连接错误 方舟艾克服务器密码 众成医械数据库 网络技术客服前景 presto支持的数据库 根据网络安全发的规定有下列
0