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 环境变量和import模块导入方法(详解)
Jul 11 Python
python实现Floyd算法
Jan 03 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
Python之文字转图片方法
May 10 Python
查看Django和flask版本的方法
May 14 Python
python中退出多层循环的方法
Nov 27 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
对python中UDP,socket的使用详解
Aug 22 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
详解Django中的FBV和CBV对比分析
Mar 01 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
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
laravel自定义分页效果
2017/07/23 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
详解Python的Django框架中的中间件
2015/07/24 Python
深入理解Python装饰器
2016/07/27 Python
import的本质解析
2017/10/30 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
python切割图片的示例
2020/11/12 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
《木笛》教学反思
2014/03/01 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
布达拉宫的导游词
2015/02/02 职场文书
唐山大地震观后感
2015/06/05 职场文书
个人合作协议范本
2015/08/06 职场文书