首页 > 其他分享 >日志系统

日志系统

时间:2022-11-18 10:26:47浏览次数:36  
标签:INFO 10 logging 19 系统 日志 main

日志

1、Log简介

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点:

通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。

2、Log的用途

不管是使用何种编程语言,日志输出几乎无处不再。总结起来,日志大致有以下几种用途:

  • 问题追踪:通过日志不仅仅包括我们程序的一些bug,也可以在安装配置时,通过日志可以发现问题。
  • 状态监控:通过实时分析日志,可以监控系统的运行状态,做到早发现问题、早处理问题。
  • 安全审计:审计主要体现在安全上,通过对日志进行分析,可以发现是否存在非授权的操作

3、Log等级

  • DEBUG最详细的日志信息,典型应用场景是 问题诊断
  • INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
  • WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
  • ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息 如IO操作失败或者连接问题
  • CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息

4、日志记录级别

 

 

 

级别 值 描述
CRITICAL 50 关键错误/消息
ERROR 40 错误
WARNING 30 警告消息
INFO 20 通知消息
DEBUG 10 调试
NOTSET 0 无级别

5、Log模块的四大组件

  • Loggers
    提供应用程序代码直接使用的接口

  • Handlers
    用于将日志记录发送到指定的目的位置

    • 内置处理器
      logging模块提供了一些处理器,可以通过各种方式处理日志消息。使用addHandler()方法将这些处理器添加给Logger对象。另外还可以为每个处理器配置它自己的筛选和级别
      • handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器
      • handlers.FileHandler(filename):将日志消息写入文件filename
      • handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器
      • handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1
  • Filters
    提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)

  • Formatters
    用于控制日志信息的最终输出格式

6、记录器

 

关键字参数 描述
filename 将日志消息附加到指定文件名的文件
filemode 指定用于打开文件模式
format 用于生成日志消息的格式字符串
datefmt 用于输出日期和时间的格式字符串
level 设置记录器的级别
stream 提供打开的文件,用于把日志消息发送到文件。

7、format 日志消息格式

格式 描述
%(name)s 记录器的名称
%(levelno)s 数字形式的日志记录级别
%(levelname)s 日志记录级别的文本名称
%(filename)s 执行日志记录调用的源文件的文件名称
%(pathname)s 执行日志记录调用的源文件的路径名称
%(funcName)s 执行日志记录调用的函数名称
%(module)s 执行日志记录调用的模块名称
%(lineno)s 执行日志记录调用的行号
%(created)s 执行日志记录的时间
%(asctime)s 日期和时间
%(msecs)s 毫秒部分
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 记录的消息

8、logging

    • 简单使用-控制台查看
      示例
      import logging 

      • logging.info()就可以输出一段文本
        配置级别
        import logging
        logging.basicConfig(level=logging.INFO)
        输出结果
        $ python err.py
        INFO:root:n = 0
        Traceback (most recent call last):
        File "err.py", line 8, in
        print(10 / n)
        ZeroDivisionError: division by zero
        说明:
        这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debug和info就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
        logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件

      • logging进阶使用-控制台查看
        配置logging基本的设置,然后在控制台输出日志
        import logging
        logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        logger = logging.getLogger(name)

      • 运行时,控制台输出
          • 2088-10-09 19:11:19,434 - main - INFO - Start print log
            2088-10-09 19:11:19,434 - main - WARNING - Something maybe fail.
            2088-10-09 19:11:19,434 - main - INFO - Finish
            将logger的级别改为DEBUG,再观察一下输出结果
            logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            控制台输出,可以发现,输出了debug的信息
            2088-10-09 19:12:08,289 - main - INFO - Start print log
            2088-10-09 19:12:08,289 - main - DEBUG - Do something
            2088-10-09 19:12:08,289 - main - WARNING - Something maybe fail.
            2088-10-09 19:12:08,289 - main - INFO - Finish

          • 将日志写入到文件
            设置logging,创建一个FileHandler,并对输出消息的格式进行设置,将其添加到logger,然后将日志写入到指定的文件中
            示例
            import logging
            logger = logging.getLogger(name)
            logger.setLevel(level = logging.INFO)
            handler = logging.FileHandler("log.txt")
            handler.setLevel(logging.INFO)
            formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            handler.setFormatter(formatter)
            logger.addHandler(handler)

            • log.txt中日志数据为
              2088-10-09 19:01:13,263 - main - INFO - Start print log
              2088-10-09 19:01:13,263 - main - WARNING - Something maybe fail.
              2088-10-09 19:01:13,263 - main - INFO - Finish

            • 将日志同时输出到屏幕和日志文件
              logger中添加StreamHandler,可以将日志输出到屏幕上
              import logging
              logger = logging.getLogger(name)
              logger.setLevel(level = logging.INFO)
              handler = logging.FileHandler("log.txt")
              handler.setLevel(logging.INFO)
              formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
              handler.setFormatter(formatter)


          •  

            可以在log.txt文件和控制台中看到
            2088-10-09 19:20:46,553 - main - INFO - Start print log
            2088-10-09 19:20:46,553 - main - WARNING - Something maybe fail.
            2088-10-09 19:20:46,553 - main - INFO - Finish 

标签:INFO,10,logging,19,系统,日志,main
From: https://www.cnblogs.com/fan-1994716/p/16902316.html

相关文章

  • 安全建设管理-(八)系统交付
    安全建设管理 控制点8.系统交付系统交付管理是指对机房建设、系统集成、网络改造中的外包工程项目的系统交付的管理,明确了交付工作的各个环节(各类工程、系统相关文档交......
  • 05.大促高并发系统下JVM如何调优指导(1) 内存溢出定位与分析在视频最后
                                                         ......
  • 数学规划优化系统 工具选型
    目录GurobiCBCCPLEXSCIP成套优化工具XPRESSMATLABSASGurobihttp://www.gurobi.cn/about.asp?id=1Gurobi是全局优化器,支持的模型类型包括:(1)连续和混合整数线性问题(2)凸......
  • 针对某客服系统的组合攻击
    前言本文从漏洞利用到对该客服系统进行渗透测试中遇到的问题做详细解析,并在文章结尾公布黑客针对该系统进行攻击的样本。......
  • 【2022.11.17】N5105安装PVE系统,关联proxmox
    下载、安装PVE系统先去PVE官网下载新版的ISO文件:ProxmoxVE7.2ISOInstaller写入磁盘后直接进入BIOS,选择U盘启动选择同意选择磁盘如果有网络的话,不用选择,没网络的......
  • 第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛
    目录5.4接口开发-根据id删除附件5.4.1接口文档5.4.2代码实现5.4.3接口测试5.4.4测试ALI和FAST_DFS以及MINIO上传和删除的接口5.4.4.1阿里云OSS上传和删除5.4.4.2Fas......
  • C++图书资源管理系统
    C++图书资源管理系统题目3:图书资源管理实现一个简单的图书资源管理系统,管理维护已有图书资源,图书资源有不同的类型,有一般图书,杂志,电子资源等。不同资源有不同的属性和操......
  • C/C++自助攒机系统
    C/C++自助攒机系统管理员可以录入如下几种硬件的价格、型号信息:CPU:主频、品牌、价格、图片硬盘:容量、品牌、价格显示器:尺寸、品牌、价格内存:品牌、型号、价格机......
  • C语言交通查询系统
    C语言交通查询系统数据结构实验周任务书1.设计目的:数据结构实验周课程设计旨在培养学生运用数据结构的相关知识和理论解决计算机建模的能力,具备良好的数据结构建模的思想......
  • 现代操作系统 原理与实现 电子书 pdf
    作者:陈海波/夏虞斌出版社:机械工业出版社 关注公众号,回复【电子书】即可:  ......