如何在python中使用日志logging

日志的作用

  1. 它可以记录你写的代码的情况,比如用户在什么时候做了什么操作,导致了什么样的错误,在哪一行代码出错了…

  2. 可以清晰的了解你的程序的执行流程。

  3. 可以通过日志来分析,你的代码哪里可以优化得更好一点。

  4. 日志和直接 print 的区别在于,日志可以存储,你可以将记录下来的日志存储到指定的目录,根据时间区分文件,下次就可以直接到指定位置查看。

  5. 日志可以配置,你可以让日志以你喜欢的格式输出,可以指定它的存储位置等。

python内置日志模块 logging 介绍

一般情况下,logging 的级别有这么几种:

  1. Debug (调试信息)

  2. Info (日志信息)

  3. Warning (警告信息)

  4. Error (错误信息)

  5. Critical (严重危险信息)

下面分别来操作一下

可以看到,调试信息与日志信息不会输出,其它三个会输出,输不输出这都可以设置的
默认输出格式如下:log级别:log用户:信息
WARNING:root:警告信息
ERROR:root:错误信息
CRITICAL:root:严重危险信息
默认的 log用户为 root, 可以修改如下 :

设置logging

  1. 设置要记录的日志级别为 Debug 级 debug级的信息成功输出
  2. 设置输出格式

    process : 进程

levelname: 日志级别名称

message: 日志信息

asctime: 时间

用 format 或者 f-string 对输出结果再次加内容格式化输出

  • format
  • f-string

用logging 捕获异常

结合try…except 捕获异常信息

灵活用在需要的地方

将日志存储为文件

在设置中增加了一条
再次运行没有适时输出,但生成了一个文件

同样可以对输出文件的内容进行格式化

还可以单独建立配置文件,在项目中直接引用以统一所有模块的日志风格
配置文件模板

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
[loggers] 
keys=root,simpleExample

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

运行结果: