ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • Python笔记

    • 基础知识

    • 并发编程

    • 爬虫笔记

    • 模块笔记

      • PyInstaller
      • Jieba
      • Kubernetes
      • Logging
        • 介绍
        • 日志级别
        • 基础配置
        • 字典配置
        • 使用例子
        • 日志轮转
          • 介绍
          • 设置方法
      • Loguru
      • Socket
      • APScheduler
      • PyMySQL
      • Redis
    • 后端笔记

  • C笔记

  • C++笔记

  • Arduino笔记

  • Web笔记

  • Dev
  • Python笔记
  • 模块笔记
Hoshinozora
2024-01-04
目录

Logging

# 介绍

logging是Python内置的日志记录系统。

个人目前使用更方便的Loguru模块,只作为笔记留存。

# 日志级别

越往下级别越高,触发条件也应当越严格。

# debug

logging.debug('调试日志信息')

10 调试级别,在程序开发调试时用。

# info

logging.info('信息日志信息')

20 消息级别,正常运行的输出信息。

# warning

logging.warning('警告日志信息')

30 警告级别,现在运行没问题,但是以后可能出现错误的警告信息。

# error

logging.error('错误日志信息')

40 错误级别,程序已经出现错误的信息。

# critical

logging.critical('灾难日志信息')

50 灾难级别,发生的错误非常严重,可能会导致程序的全面崩溃的信息。

# 基础配置

logging.basecConfig(filename='...',format='...',datefmt='...')

了解即可,一般用配置字典来进行配置。

# 日志输出位置

filename='日志文件路径'

不指定则只输出到终端屏幕。

# 日志输出格式

format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s'

  • %(asctime)s 调用日志函数时的格式化时间。
  • %(name)s 日志文件名称。
  • %(levelname)s 日志级别。
  • %(levelname)s 调用日志函数的模块名。
  • %(funcName)s 调用日志函数的函数名。
  • %(lineno)d 调用日志函数的代码行数。
  • %(message)s 用户输出的消息。

# 时间格式

datefmt='%Y-%m-%d %H:%M:%S %p'

# 日志输出级别

level=30

默认是30,也就是warning级别。

# 字典配置

一般写到配置文件或模块中。

LOGGING_DIC = {
    'version': 1.0,
    # 是否禁用已经存在的logger实例,一般设为False即可
    'disable_existing_loggers': False,
    # 指定日志格式,日志格式内容一般可以用变量传入,方便修改
    'formatters': {
    '日志格式名1': {'format': '日志格式'},
    '日志格式名2': {'format': '日志格式'}
    },
    # 会输出日志
    'handlers': {
        # 输出到屏幕
        '日志处理方式名1': {
            # 可数字、也可是大写的级别名
            'level': '日志级别',
            # logging.StreamHandler表示指定输出到屏幕
            'class': 'logging.StreamHandler',
            # formatters中配置的格式名
            'formatter': '日志格式名'
        # 输出到文件
        '日志处理方式名2': {
            'level': '日志级别',
            # logging.FileHandler表示指定输出到文件
            'class': 'logging.FileHandler',
            'formatter': '日志格式名',
            # 指定输出日志的文件路径
            'filename': '日志文件路径',
            # 指定输出到文件的编码格式
            'encoding': '编码格式'
        }},
    }
    # 会产生日志并传递给handlers,大多数日志都是传输到一个文件,除非特殊场景
    'loggers': {
        # logger名
        '日志名1': {
            # 日志输出位置,可指定多个
            'handlers': [handler名1, handler名2],
            # 在这里会先过滤一次,到handlers又会过滤一次
            'level': '日志级别',
            # 默认为True会向上级传递,通常关闭使日志更独立
            'propagate': False
        },
        '日志名2': {... ...}
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 使用例子

from logging import config, getLogger

# 导入日志配置字典
config.dictConfig(LOGGING_DIC)

# 获得指定的logger对象
logger01 = getLogger('logger名')

# 发送对应级别的日志到logger所对应的handler
# logger对象.日志级别('日志信息')
logger01.info('This is a info log!')
1
2
3
4
5
6
7
8
9
10
11

# 日志轮转

# 介绍

日志文件会随着时间越来越大,为了防止日志文件过大造成打开文件过慢且占用内存多。此时就需要日志轮转,也就是将日志按大小或者时间进行分割,分割成多个日志文件。

超过大小后,会将日志文件以前的内容,全部剪切到日志切割文件,然后将新内容写入日志文件。

# 设置方法

# 日志输出位置中
'handlers': {
    '日志处理方式名': {
            'level': '日志级别',
            # 保存到文件并进行日志轮转
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': '日志格式名',
            'filename': '日志文件路径',
            'encoding': '编码格式',
            # 日志文件最大字节大小,此处是5M
            'maxBytes': 1024*1024*5,
            # 分割的日志文件最大保留数量,超过则最早的将被删除
            'backupCount': 10
        }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#Python#模块#日志
Kubernetes
Loguru

← Kubernetes Loguru→

最近更新
01
Vue路由
12-09
02
FastAPI实现用户管理
11-23
03
Tortoise ORM
11-23
更多文章>
Theme by Vdoing | Copyright © 2022-2026 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式