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中max函数用法实例分析
Jul 17 Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
python 中[0]*2与0*2的区别说明
May 10 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 Python
python创建字典及相关管理操作
Apr 13 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设计模式 Observer(观察者模式)
2011/06/26 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
浅谈js闭包理解
2019/04/01 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
如何获取Python简单for循环索引
2019/11/21 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Python控制台实现交互式环境执行
2020/06/09 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
业务员岗位职责
2013/11/16 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
简历里的自我评价范文
2014/02/24 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
青春励志演讲稿
2014/04/29 职场文书
五四青年节活动总结
2015/02/10 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python