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文件操作类操作实例详解
Jul 11 Python
Python获取任意xml节点值的方法
May 05 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
python中什么是面向对象
Jun 11 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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 搜索框提示(自动完成)实例代码
2012/02/05 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
Python编程中装饰器的使用示例解析
2016/06/20 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Django通过json格式收集主机信息
2020/05/29 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
法人授权委托书范本
2014/04/04 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
庆六一活动总结
2014/08/29 职场文书
送达通知书
2015/04/25 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
党员反邪教心得体会
2016/01/15 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
PyTorch的Debug指南
2021/05/07 Python
python playwright 自动等待和断言详解
2021/11/27 Python
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技