python logging模块的使用详解


Posted in Python onOctober 23, 2020

logging日志模块:是用来记录日志的模块,一般记录用户在软件中的操作

使用方法:模板直接拿来用,手动修改

# logging的配置信息(模板)
import os
import logging.config


# 定义三种日志输出格式 开始(模板,不用配置,直接拿来用)
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
         '[%(levelname)s][%(message)s]' # 其中name为get_logger中指定的名字
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
# 定义日志输出格式 结束


# (*****)注意1: log文件的目录(手动修改)
BASE_PATH = os.path.dirname(os.path.dirname(__file__))  # 获取项目路径
logfile_dir = os.path.join(BASE_PATH, 'log')  # 存放log文件的目录
# (*****)注意2: log文件名(手动修改)
logfile_name = 'user.log'


# 如果不存在定义的日志目录就创建一个
if not os.path.isdir(logfile_dir):
  os.mkdir(logfile_dir)
# log文件的全路径
logfile_path = os.path.join(logfile_dir, logfile_name)


# (*****)注意3: log配置字典(模板,不用配置,直接拿来用)
LOGGING_DIC = {
  'version': 1,
  'disable_existing_loggers': False,
  'formatters': {
    'standard': {
      'format': standard_format
    },
    'simple': {
      'format': simple_format
    },
  },
  'filters': {},
  'handlers': {
    # 打印到终端的日志
    'console': {
      'level': 'DEBUG',
      'class': 'logging.StreamHandler', # 打印到屏幕
      'formatter': 'simple'
    },
    # 打印到文件的日志,收集info及以上的日志
    'default': {
      'level': 'DEBUG',
      'class': 'logging.handlers.RotatingFileHandler', # 保存到文件
      'formatter': 'standard',
      'filename': logfile_path, # 日志文件
      'maxBytes': 1024 * 1024 * 5, # 日志大小 5M
      'backupCount': 5,
      'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了
    },
  },
  'loggers': {
    # logging.getLogger(__name__)拿到的logger配置
    '': {
      'handlers': ['default', 'console'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
      'level': 'DEBUG',
      'propagate': True, # 向上(更高level的logger)传递
    },
  },
}


# (*****)注意4:定义日志函数,传入的参数可以是日志信息中的"用户id"或者"用户名字",也可以是某一类型的统称
def get_logger(user_type):
  # 1.加载log配置字典到logging模块的配置中
  logging.config.dictConfig(LOGGING_DIC)
  # 2.获取日志对象
  # logger = logging.getLogger('user')
  # logger = logging.getLogger('bank')
  # logger = logging.getLogger('shop')
  logger = logging.getLogger(user_type)
  return logger

# 调用函数,记录日志# 通过logger日志对象,调用内部的日志打印
logger = get_logger('user')  # 这里的参数为日志信息中的"用户id"或者"用户名字"
# 调用获取日志函数的日志对象
# logger.debug('学习不要浮躁,一步一个脚印!')
logger.info('学习不要浮躁,一步一个脚印!')  # debug和info均为日志等级,用info即可,info后面传入的内容就是需要记录日志的内容

注意:前三个注意点可以根据情况修改设置,第四个注意点是log的配置字典,无需修改,只需留意即可。

执行结果:

[INFO][2020-10-22 20:23:07,405][04 logging模块.py:100]学习不要浮躁,一步一个脚印!

logging模块应用输出示例:

python logging模块的使用详解

python logging模块的使用详解

以上就是python logging模块的使用详解的详细内容,更多关于python logging模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
简单了解python变量的作用域
Jul 30 Python
python3实现单目标粒子群算法
Nov 14 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python 键盘事件详解
Nov 11 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 #Python
Python中免验证跳转到内容页的实例代码
Oct 23 #Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 #Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 #Python
详解python模块pychartdir安装及导入问题
Oct 22 #Python
Python实现自动装机功能案例分析
Oct 22 #Python
Python reversed反转序列并生成可迭代对象
Oct 22 #Python
You might like
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
php定时执行任务设置详解
2015/02/06 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python中的进程分支fork和exec详解
2015/04/11 Python
python中map、any、all函数用法分析
2015/04/21 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
python日志logging模块使用方法分析
2019/05/23 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
《最可爱的人》教学反思
2014/02/14 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
工作会议主持词
2014/03/17 职场文书
项目合作意向书范本
2014/04/01 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书