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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
python 解决Windows平台上路径有空格的问题
Nov 10 Python
Python urllib3软件包的使用说明
Nov 18 Python
浅谈Python中的正则表达式
Jun 28 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中使用php://input处理相同name值的表单数据
2015/02/03 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
Python 文件重命名工具代码
2009/07/26 Python
Python中运行并行任务技巧
2015/02/26 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python代码太长换行的实现
2019/07/05 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python如何将函数值赋给变量
2020/04/28 Python
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
小学开学寄语
2014/01/19 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
青安岗事迹材料
2014/05/14 职场文书
安全标语口号
2014/06/09 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
小学生教师节广播稿
2015/08/19 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python