找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 147|回复: 0

[Python基础] 日志(logging)

[复制链接]

19

主题

3

回帖

79

积分

管理员

积分
79

热心会员湖北省RedHat高手

发表于 2025-6-6 20:08 | 显示全部楼层 |阅读模式
日志是什么
      记录软件/应用程序/代码的运行记录
为什么需要日志
      日志可记录错误发生的时间、错误级别、发生错误的文件、错误发生在哪一行、错误信息等,方便后期定位问
日志的级别
      日志有如下5个级别:debug、info、warning、error、critical(依次越来越严重)
日志的输出
      日志完整的输出需要如下三个步骤
            ①指定收集日志的容器(默认的日志收集容器:root logger)
            ②指定输出渠道(默认渠道:console
            ③指定输出格式(默认格式:级别:日志收集器名称:日志信息)
LTXIT-20250609184938.jpg
            ④默认输出的日志级别会自动过滤掉debug和info级别的日志,仅输出warning及以上级别的日志(将鼠标放到logging.debug/logging.info/logging.warning/logging.error/logging.critical中任意一个日志级别(debug/info/warning/error/critical)上,然后按住键盘上的Ctrl键并单击鼠标左键跳转到__init__.py模块,将root = RootLogger(WARNING)中的WARNING修改为DEBUG后,控制台即可输出debug及以上级别的日志了)
LTXIT-20250609185616.jpg
      写一个属于自己的日志系统
      一个属于自己的日志系统,那么日志收集器和输出渠道肯定就不能用系统默认的
            (1)输出渠道为控制
                    ①创建属于自己的日志收集
                        mylogger = logging.getLogger('mylogger')
                        ---创建一个以mylogger命名的日志收集器,如果没指定日志收集器的名字系统会默认使用root logger这个收集器
                    ②设置日志收集器收集日志的级别
                        mylogger.setLevel('DEBUG')
                    ③创建属于自己的输出渠道
                        SH = logging.StreamHandler()
                        ---创建一个输出到控制台的输出渠道,如果没指定输出渠道系统会默认使用console这个输出渠道
                    ④设置输出渠道输出日志的级别
                        SH.setLevel('DEBUG')
                    ⑤对接日志收集器和输出渠
                        mylogger.addHandler(SH)
LTXIT-20250609191315.jpg
            (2)输出渠道为文件
                    ①创建属于自己的日志收集
                        mylogger = logging.getLogger('mylogger')
                        ---创建一个以mylogger命名的日志收集器,如果没指定日志收集器的名字系统会默认使用root logger这个收集器
                    ②设置日志收集器收集日志的级别
                        mylogger.setLevel('DEBUG')
                    ③创建属于自己的输出渠道
                        FH = logging.FileHandler('mylogger.log',encoding = 'utf-8')
                        ---创建一个输出到mylogger.log文件的输出渠道,如果没指定输出渠道系统会默认使用console这个输出渠
                    ④设置输出渠道输出日志的级别
                        FH.setLevel('DEBUG')
                    ⑤对接日志收集器和输出渠
                        mylogger.addHandler(FH)
LTXIT-20250609191913.jpg
                        我们看看这个mylogger.log文件里都有些啥
LTXIT-20250609192055.jpg
      注意
             ①日志收集器的收集日志级别和输出渠道输出日志的级别不一致,则取高级别(取交集
             ②日志输出完记得要remov掉,否则会出现重复的日志信
LTXIT-20250609193240.jpg
             ③设置日志输出格式
         formatter = logging.Formatter('[%(asctime)s]-[%(levelname)s]-[%(filename)s]-日志信息:%(message)s')
         (1)日志输出格式应在定义日志输出渠道之前设置好
         (2)定义日志输出渠道后需要应用设置的日志输出格式,否则无效
LTXIT-20250609194344.jpg
附:的格式化输出
日志的格式化输出.png

评分

参与人数 1ITB +50 贡献值 +5 收起 理由
Happy + 50 + 5 原创性突出

查看全部评分

Archiver|手机版|小黑屋|LTXIT家园 ( 鄂ICP备2025089526号|鄂公网安备42110002000175号 )

GMT+8, 2025-8-3 00:52 , Processed in 0.151882 second(s), 31 queries .

Powered by LTXIT家园 X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表