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内置函数之filter map reduce介绍
Nov 30 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
Django实现单用户登录的方法示例
Mar 28 Python
python仿抖音表白神器
Apr 08 Python
Python 占位符的使用方法详解
Jul 10 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
tensorflow 变长序列存储实例
Jan 20 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Docker如何部署Python项目的实现详解
Oct 26 Python
Python数据模型与Python对象模型的相关总结
Jan 26 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
js实现微信分享代码
2020/10/11 Javascript
node.js require() 源码解读
2015/12/13 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
js中less常用的方法小结
2017/08/09 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
Python解析json文件相关知识学习
2016/03/01 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Python高并发和多线程有什么关系
2020/11/14 Python
python集合的新增元素方法整理
2020/12/07 Python
python 实现端口扫描工具
2020/12/18 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
测绘工程本科生求职信
2013/10/10 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
商场营业员岗位职责
2015/04/14 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
MySQL触发器的使用
2021/05/24 MySQL
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL