logging模块配置笔记
logging模块配置笔记
log文件的路径
#判断在当前的目录下是否有一个logs文件夹。没有则创建
log_dir = os.path.dirname(os.path.dirname(__file__))+'/logs'
if not os.path.exists(log_dir):
os.mkdir(log_dir)
设定log文件名
#在上述的文件夹生成web.log文件
today=datetime.datetime.now().strftime("%Y%m%d")
log_path = os.path.join(log_dir, f'test_{today}.log')
dictConfig通用参数配置
version版本号
'version': 1.0#固定值1.0
formatters日志格式设置
'format': formatter的格式,字符串,比如'%(levelname)s-%(message)s'
'datefmt': 日期的输出格式,字符串,比如'%Y-%m-%d %H:%M:%S'
然后看下面一个配置
'formatters': {
'detail': {#detail自定义一个格式名字
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
'datefmt': "%Y-%m-%d %H:%M:%S"
},
'simple': {#同detail自定义一个格式名字,这里定义另一种格式
'format': '%(name)s - %(levelname)s - %(message)s',
},
}
handlers日志格式设置
然后看下面一个配置
'handlers': {
'console': {#console是自定义的handlers名字
'class': 'logging.StreamHandler',#构造handler使用的类,字符串,必须使用全路径
'level': 'INFO',#级别
'formatter': 'detail'#上面的detail格式
},
'file': {#file是自定义的handlers名字
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 1024 * 1024 * 5,#每个日志文件最大5M,超过之后重新命名一个文件
'backupCount': 10,#最多备份10个日志文件,
'filename': log_path,#上面定义的log文件名
'level': 'INFO',
'formatter': 'detail',
'encoding': 'utf-8',
},
loggers
必须指定一个级别和handlers列表
'loggers': {
'crawler': {#crawler是自定义的日志对象名字
'handlers': ['console', 'file'],#输出方式
'level': 'DEBUG',#级别
},
'parser': {
'handlers': ['file'],#输出方式
'level': 'INFO',#级别
}
}
以上日志配置综合
log_config = {
'version': 1.0,
'formatters': {
'detail': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
'datefmt': "%Y-%m-%d %H:%M:%S" #如果不加这个会显示到毫秒。
},
'simple': {
'format': '%(name)s - %(levelname)s - %(message)s',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',#日志打印到屏幕显示的类。
'level': 'INFO',
'formatter': 'detail'
},
'file': {
'class': 'logging.handlers.RotatingFileHandler',#日志打印到文件的类。
'maxBytes': 1024 * 1024 * 5, #单个文件最大内存
'backupCount': 10, #备份的文件个数
'filename': log_path, #日志文件名
'level': 'INFO',# 日志等级
'formatter': 'detail', #调用上面的哪个格式
'encoding': 'utf-8', #编码
},
},
'loggers': {
'crawler': {
'handlers': ['console', 'file'],#打印屏幕和写入文件
'level': 'DEBUG',#只显示错误的log
},
'parser': {
'handlers': ['file'],
'level': 'INFO',
},
'other': {
'handlers': ['console', 'file'],
'level': 'INFO',
},
'storage': {
'handlers': ['file'],
'level': 'INFO',
}
}
}
创建日志对象使用
1.通过调用dictConfig(config)方法进行配置,config对象为一个dict
log_conf.dictConfig(log_config)
2.生成不同的日志对象
crawler = logging.getLogger('crawler')
parser = logging.getLogger('parser')
3.打印不同级别的log
常用的两种
crawler.error(错误信息)
crawler.info(字符串)
logging模块配置笔记的更多相关文章
- logging模块配置共享以及使用文件配置
1.配置共享 如果每个文件都配置logging,那就太繁琐了,logging提供了父子模块共享配置的机制, 会根据Logger的名称来自动加载父模块的配置.首先定义一个 main.py 文件: imp ...
- 【Python】logging模块学习笔记
因为做接口自动化测试遇到的一个代码逻辑上的问题,又不知道具体问题出在哪里,所以在模块化代码之前,先学习下python的日志模块logging. 入门1 入门2 日志级别大小关系为:CRITICAL & ...
- python logging模块使用流程
#!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') logging ...
- python logging模块使用教程
简单使用 #!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') lo ...
- python之hashlib、configparser、logging模块
hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数 ...
- Python学习笔记——基础篇【第六周】——logging模块
常用模块之logging 用于便捷记录日志且线程安全的模块 import logging logging.basicConfig(filename='log.log', format='%(ascti ...
- Python自学笔记-logging模块详解
简单将日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.warni ...
- os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
一.os常用模块 显示当前工作目录 print(os.getcwd()) 返回上一层目录 os.chdir("..") 创建文件包 os.makedirs('python2/bin ...
- Python之配置日志的几种方式(logging模块)
原文:https://blog.csdn.net/WZ18810463869/article/details/81147167 作为开发者,我们可以通过以下3种方式来配置logging: 1)使用Py ...
随机推荐
- 【Django】Django—Form两种解决表单数据无法动态刷新的方法
一.无法动态更新数据的实例 1. 如下,数据库中创建了班级表和教师表,两张表的对应关系为“多对多” from django.db import models class Classes(models. ...
- jsp和js中获取项目路径名
一.jspa.<%=request.getContextPath()%>//结果:/projectNameb.${pageContext.request.contextPath}//结果: ...
- Python下json中文乱码解决办法
json.dumps在默认情况下,对于非ascii字符生成的是相对应的字符编码,而非原始字符,只需要 #coding=utf8 import json js = json.loads('{" ...
- 【刷题】BZOJ 4566 [Haoi2016]找相同字符
Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. Input 两行,两个字符串s1,s2,长度分别为 ...
- msiexec安装参数详解
原文链接地址:https://blog.csdn.net/wilson_guo/article/details/8151632 1 安装 /i表示安装,/x 表示卸载/f表示修复./l*v 表示输出详 ...
- 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】
题目链接 洛谷P4609 题解 感性理解一下: 一神带\(n\)坑 所以我们只需将除了\(n\)外的\(n - 1\)个元素分成\(A + B - 2\)个集合,每个集合选出最大的在一端,剩余进行排列 ...
- spring mybatis 多数据源配置
1.创建好数据库的配置文件 mysql.url=jdbc:mysql://***/***?useUnicode=true&characterEncoding=UTF-8 mysql.usern ...
- 洛谷P2398 GCD SUM
题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum ...
- IO多路复用之epoll(二)
前一篇介绍了epoll的LT模式,LT模式注意epollout事件在数据全部写成功后需要取消关注, 或者更改为EPOLLIN. 而这次epoll的ET模式,要注意的是在读和写的过程中要在循环中写完或者 ...
- python---基础知识回顾(四)(模块sys,os,random,hashlib,re,序列化json和pickle,xml,shutil,configparser,logging,datetime和time,其他)
前提:dir,__all__,help,__doc__,__file__ dir:可以用来查看模块中的所有特性(函数,类,变量等) >>> import copy >>& ...