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用字典统计单词或汉字词个数示例
Apr 22 Python
从零学Python之hello world
May 21 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
python中的字典使用分享
Jul 31 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
python线程池如何使用
May 28 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
如何用python爬取微博热搜数据并保存
Feb 20 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
解析link_mysql的php版
2013/06/30 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python插入排序算法实例分析
2015/07/03 Python
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
python开发之for循环操作实例详解
2015/11/12 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
python如何调用字典的key
2020/05/25 Python
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
培训演讲稿范文
2014/01/12 职场文书
优秀民警事迹材料
2014/01/29 职场文书
老师对学生的寄语
2014/04/09 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
委托书格式
2014/08/01 职场文书
暑期培训班策划方案
2014/08/26 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
2014年团队工作总结
2014/11/24 职场文书
增值税发票丢失证明
2015/06/19 职场文书
新兵入伍决心书
2015/09/22 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
nginx访问报403错误的几种情况详解
2022/07/23 Servers