热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

logging题块的使用[Python常见问题]

logging模编logging旣:作坝梘纄殡记录日志的木圆问一舦记僨喈払圆軍乮亚的操乙れ〸彳惌景法:樺板竴挍疞现畴︪拀么伍改#logging,酈罡侄问(模板)importo

python

logging模编

  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"

# 夀果䞜存在殚义的日志目踋峻创建廠个

ifnot 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模块应用输出示例:


推荐阅读
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
author-avatar
手机用户2502885897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有