文章目录
- Chap.I Logging
- Sec.I 日志等级
- Sec.II 实操笔记
- Chap.II Configparser
- Sec.I 配置文件
- Sec.II 实操记录
Chap.I Logging
Python之日志处理(logging模块)
Logging 的升级版 loguru,支持彩色输出,支持输出到多个文件,分级别分别输出,过大创建新文件,过久自动删除等等。
Sec.I 日志等级
日志等级(level) | 描述 |
DEBUG | 最详细的日志信息,典型应用场景是 问题诊断 |
INFO | 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作 |
WARNING | 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的 |
ERROR | 由于一个更严重的问题导致某些功能不能正常运行时记录的信息 |
CRITICAL | 当发生严重错误,导致应用程序不能继续运行时记录的信息 |
等级顺序:DEBUG < INFO < WARNING < ERROR < CRITICAL
DEBUG 最详细,CRITICAL 最简略。可通过basicConfig()
函数中的level
参数来控制输出日志的等级。
Sec.II 实操笔记
import logging
# 对 log 的基本配置,设置输出文件、输出日志等级、输出格式等
logging.basicConfig(filename='my.log',level=logging.INFO,
format='%(asctime)s [%(levelname).1s] <%(filename)-s :%(lineno)-s> : %(message)s',
filemode="w",
)
import logging
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
#------------------ out ---------------------------
2022-06-13 11:43:37,465 [I] <main.py :14> : This is a info log.
2022-06-13 11:43:37,465 [W] <main.py :15> : This is a warning log.
2022-06-13 11:43:37,465 [E] <main.py :16> : This is a error log.
2022-06-13 11:43:37,465 [C] <main.py :17> : This is a critical log.
Chap.II Configparser
这个模块是用来读取配置*.ini
文件的。
import configparser # 首先导入模块
它的常用方法有
方法 | 含义 |
| 读取配置信息到对象中 |
| 获取所有节的名称,返回一个字符串列表 |
| 获取节 |
| 获取节 |
| 获取节 |
| 检查节 |
| 检查节 |
| 加入节 |
| 将节 |
| 删除节 |
| 删除选项 |
| 对 |
Sec.I 配置文件
首先需要了解一下什么是*.ini
文件,ini
是Initialization file
的缩写,即为初始化文件,windows
很多配置文件都采用这种文件。它的格式也十分简单,下面几行就可以概括:
[sec_xxx] # 代表节,section
option_xxx=value_xxx # 代表参数,parameter
; # 注释符
-
INI
所包含的最基本的“元素”就是参数(parameter),每个参数都有一个name和一个value,name和value由等号=
隔开,name在等号的左边。 - 所有的参数都是以节(section)为单位结合在一起的。所有的section名称都是独占一行,并且section名字都被方括号包围着。在section声明后的所有parameters都属于该section。一个section没有明显的结束标识符,一个section的开始就是上一个section的结束,或者是文件结束。
- 注释标识符为
;
,在分号后面的文字,直到该行结尾都全部为注释。
[user]
user_name = Mr.X
password = 222
[connect]
ip = 127.0.0.1
port = 4723
[date]
year = 2022
mon = 6
day = 14
yymmdd = ${year}-${mon}-${day}
上面是一个简单的*.ini
配置文件,就将它命名为test.ini
。
Sec.II 实操记录
下面根据上面的配置文件,来练练手。
首先导入模块,读取配置文件
import configparser
config = configparser.ConfigParser()
fname=r'C:\Users\OHanlon\source\mGit\python\mpythonscript\src\test.ini'
config.read(fname, encoding='utf-8')
config
是我们所创建的configparser
对象,它常用的方法如上表所示,下面尝试一下使用这些方法。
首先是取值
all_sections = config.sections()
print('sections: ', all_sections)
items = config.items('user')
print(items)
options = config.options('user')
print(options)
# -------------- out ----------------
sections: ['user', 'connect', 'date']
[('user_name', 'Mr.X'), ('password', '222')]
['user_name', 'password']
然后是利用取出来的值,对“不完全的值”做更改
year = config.getint('date', 'year')
mon = config.getint('date', 'mon')
day = config.getint('date', 'day')
print(type(year))
print(year,mon,day)
ymd = config.get('date', 'yymmdd')
print(ymd)
ymd = ymd.replace('${year}',str(year))
ymd = ymd.replace('${mon}',str(mon).zfill(2)) # 位数不够前补0
ymd = ymd.replace('${day}',str(day).zfill(2))
print(ymd)
# -------------- out ----------------
<class 'int'>
2022 6 14
${year}-${mon}-${day}
2022-06-14
加一些选项,并将配置写入文件
config.set('date', 'new_yymmdd', ymd)
config.set('date', 'gpsweek', '2048')
print(config.get('date', 'new_yymmdd'))
print(config.get('date', 'gpsweek'))
config.write(open(fname, 'w'))
# -------------- out ----------------
2022-06-14
2048
写入文件后,文件变为
[user]
user_name = Mr.X
password = 222
[connect]
ip = 127.0.0.1
port = 4723
[date]
year = 2022
mon = 6
day = 14
yymmdd = ${year}-${mon}-${day}
new_yymmdd = 2022-06-14
gpsweek = 2048