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 Django模板的使用方法(图文)
Nov 04 Python
python实现socket客户端和服务端简单示例
Feb 24 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
python数据结构之列表和元组的详解
Sep 23 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
python轮询机制控制led实例
May 03 Python
Python selenium爬取微博数据代码实例
May 22 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
python如何求圆的面积
Jul 01 Python
Django一小时写出账号密码管理系统
Apr 29 Python
Django框架中视图的用法
Jun 10 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实现与ASP Banner组件相似的类
2006/10/09 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
JQuery 风格的HTML文本转义
2009/07/01 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
vue组件name的作用小结
2018/05/23 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
光声世纪笔试题目
2012/08/25 面试题
学校岗位设置方案
2014/01/16 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
自主招生推荐信范文
2014/05/10 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
护士求职自荐信
2015/03/25 职场文书
文明旅游倡议书
2015/04/28 职场文书
施工现场安全管理制度
2015/08/05 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技