Monkey 发表于 2025-6-6 20:08

日志(logging)

日志是什么
      记录软件/应用程序/代码的运行记录
为什么需要日志
      日志可记录错误发生的时间、错误级别、发生错误的文件、错误发生在哪一行、错误信息等,方便后期定位问题
日志的级别
      日志有如下5个级别:debug、info、warning、error、critical(依次越来越严重)
日志的输出
      日志完整的输出需要如下三个步骤:
            ①指定收集日志的容器(默认的日志收集容器:root logger)
            ②指定输出渠道(默认渠道:console)
            ③指定输出格式(默认格式:级别:日志收集器名称:日志信息)

            ④默认输出的日志级别会自动过滤掉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及以上级别的日志了)

      写一个属于自己的日志系统
      一个属于自己的日志系统,那么日志收集器和输出渠道肯定就不能用系统默认的
            (1)输出渠道为控制台
                  ①创建属于自己的日志收集器
                        mylogger = logging.getLogger('mylogger')
                        ---创建一个以mylogger命名的日志收集器,如果没指定日志收集器的名字系统会默认使用root logger这个收集器
                  ②设置日志收集器收集日志的级别
                        mylogger.setLevel('DEBUG')
                  ③创建属于自己的输出渠道
                        SH = logging.StreamHandler()
                        ---创建一个输出到控制台的输出渠道,如果没指定输出渠道系统会默认使用console这个输出渠道
                  ④设置输出渠道输出日志的级别
                        SH.setLevel('DEBUG')
                  ⑤对接日志收集器和输出渠道
                        mylogger.addHandler(SH)

            (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)

                        我们看看这个mylogger.log文件里都有些啥

      注意:
             ①日志收集器的收集日志级别和输出渠道输出日志的级别不一致,则取高级别(取交集)
             ②日志输出完记得要remov掉,否则会出现重复的日志信息

             ③设置日志输出格式
         formatter = logging.Formatter('[%(asctime)s]-[%(levelname)s]-[%(filename)s]-日志信息:%(message)s')
         (1)日志输出格式应在定义日志输出渠道之前设置好
         (2)定义日志输出渠道后需要应用设置的日志输出格式,否则无效

附:日志的格式化输出


页: [1]
查看完整版本: 日志(logging)