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切片用法实例教程
Sep 08 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
如何将python中的List转化成dictionary
Aug 15 Python
Python程序退出方式小结
Dec 09 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Python八皇后问题解答过程详解
Jul 29 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
python3.9之你应该知道的新特性详解
Apr 29 Python
浅谈python数据类型及其操作
May 25 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开发文件系统实例讲解
2006/10/09 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
python创建学生管理系统
2019/11/22 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
学习十八大报告感言
2014/02/28 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
检讨书格式
2015/05/07 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
争做文明公民倡议书
2019/06/24 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL