用于便捷记录日志且线程安全的模块

单文件日志

basicConfig()模块函数

功能:创建日志文件和写日志模式【有参】

使用方法:模块名称.basicConfig(filename="日志文件名称",format="(日期时间),(权限用户),(写入等级),(产生日志文件名称),(日志内容)",datefmt="日期时间格式",level="日志等级")

格式如:logging.basicConfig(filename='log.log',format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',level=logging.WARNING)

内置等级写入函数【有参写入的内容】

critical()模块函数,critical等级写入日志
fatal()模块函数,fatal等级写入日志
error()模块函数,error等级写入日志
warning()模块函数,warning等级写入日志
warn()模块函数,warn等级写入日志
info()模块函数,info等级写入日志
debug()模块函数,debug等级写入日志

等级对照表
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10

#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging
logging.basicConfig(filename='log.log',
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',#(日期时间),(权限用户),(写入等级),(产生日志文件名称),(日志内容)
datefmt='%Y-%m-%d %H:%M:%S %p',#日期时间格式
level=logging.WARNING)#日志等级,日志等级要求大写
# 等级对照表
# CRITICAL = 50
# FATAL = CRITICAL
# ERROR = 40
# WARNING = 30
# WARN = WARNING
# INFO = 20
# DEBUG = 10 #注意:写入等级大于日志等级,才写入日志数据 # 写入等级,写入日志
logging.critical('sss')#写入日志,写入等级要求小写
logging.fatal("")#写入日志,写入等级要求小写
logging.error("")#写入日志,写入等级要求小写
logging.warning("")#写入日志,写入等级要求小写
logging.warn("")#写入日志,写入等级要求小写
logging.info("")#写入日志,写入等级要求小写
logging.debug("")#写入日志,写入等级要求小写 #log日志写入数据
# 2016-09-06 15:10:38 PM - root - CRITICAL -index: sss
# 2016-09-06 15:10:38 PM - root - CRITICAL -index: 333
# 2016-09-06 15:10:38 PM - root - ERROR -index: 2222
# 2016-09-06 15:10:38 PM - root - WARNING -index: 5555
# 2016-09-06 15:10:38 PM - root - WARNING -index: 999 #以上可以看出,写入等级大于日志等级,才写入日志数据

log()模块函数

功能:自定义写入等级,写入日志【有参】

使用方法:模块名称.log(写入等级数,"写入内容")

格式如:logging.log(40,'log')

#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging
logging.basicConfig(filename='log.log',
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',#(日期时间),(权限用户),(写入等级),(产生日志文件名称),(日志内容)
datefmt='%Y-%m-%d %H:%M:%S %p',#日期时间格式
level=logging.WARNING)#日志等级,日志等级要求大写
# 等级对照表
# CRITICAL = 50
# FATAL = CRITICAL
# ERROR = 40
# WARNING = 30
# WARN = WARNING
# INFO = 20
# DEBUG = 10 #注意:写入等级大于日志等级,才写入日志数据 # 自定义写入等级,写入日志
logging.log(40,'log')

多文件日志(推荐)

FileHandler()模块函数

功能:打开或创建日志文件【有参】

使用方法:模块名称.FileHandler("文件路径名称","打开模式",encoding='字符编码')

格式如:logging.FileHandler('l1_1.log', 'a', encoding='utf-8')

Formatter()模块函数

功能:创建日志写入格式【有参】

使用方法:模块名称.Formatter(fmt="%(日期和时间)s - %(日志等级名称)s - %(写入等级名称)s -%(产生日志程序名称)s:  %(日志内容)s")

格式如:logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s")

setFormatter()模块函数

功能:将日志写入格式应用到,打开文件【有参】

使用方法:打开日志文件变量.setFormatter(创建日志写入格式变量)

格式如:file_1_1.setFormatter(fmt)

Logger()模块函数

功能:创建日志等级,注意这个日志等级可以参照等级对照表来设置,要求大写【有参】

使用方法:模块名称.Logger("自定义日志等级名称",level=日志等级参数)

格式如:logging.Logger('s1', level=logging.ERROR)

addHandler()模块函数

功能:将日志等级追加到打开的文件【有参】

使用方法:创建日志等级变量.addHandler(打开日志文件变量)

格式如:logger1.addHandler(file_1_1)

close()模块函数

功能:关闭打开的日志文件【无参】

使用方法:打开日志文件变量.close()

格式如:file_1_1.close()

#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging #导入模块
# 定义文件1
file_1_1 = logging.FileHandler('l1_1.log', 'a', encoding='utf-8')#以a模式打开或创建日志文件
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")#创建日志写入格式
file_1_1.setFormatter(fmt)#将日志写入格式应用到,打开文件
# 定义文件2
file_1_2 = logging.FileHandler('l1_2.log', 'a', encoding='utf-8')#以a模式打开或创建日志文件
fmt = logging.Formatter(fmt="%(message)s")#创建日志写入格式
file_1_2.setFormatter(fmt)#将日志写入格式应用到,打开文件 # 定义日志
logger1 = logging.Logger('s1', level=logging.ERROR)#创建日志等级,注意这个日志等级可以参照等级对照表来设置,要求大写
logger1.addHandler(file_1_1)#将日志等级追加到打开的文件
logger1.addHandler(file_1_2)#将日志等级追加到打开的文件 # 写日志
logger1.critical('') #写入等级函数写入日志,注意这个写入等级函数参照等级对照表来设置,要求小写,也可以用log()模块函数来自定义等级,参照log()模块函数 file_1_1.close()#关闭打开的日志文件
file_1_2.close()#关闭打开的日志文件
#这样就将一个日志数据同时写入两个日志文件,注意:要将日志数据写入几个日志文件,就按照上面操作打开几个日志文件

第四十五节,logging日志模块的更多相关文章

  1. 【php增删改查实例】第十五节 - 用户管理模块(删除确认)

    假如有一天,用户找到你,说万一不小心手一抖,就点击了删除用户,不太好.能不能再误点的时候,再给个确认框,让用户进行二次确认. OK,用户是上帝.这边我们可以考虑用confirm方法进行开发. 参考代码 ...

  2. 四十五 常用内建模块 hashlib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...

  3. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  4. 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...

  5. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

  6. pyhton——logging日志模块的学习

    https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模 ...

  7. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  8. python的logging日志模块(二)

    晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕   import logging logging.debug('This is debug message') logging.info('Thi ...

  9. Python logging(日志)模块

    python日志模块 内容简介 1.日志相关概念 2.logging模块简介 3.logging模块函数使用 4.logging模块日志流处理流程 5.logging模块组件使用 6.logging配 ...

随机推荐

  1. MySQL数据库传输BLOB类型数据丢失 解决办法

    修改MySQL安装目录下my.ini文件配置:

  2. 基于HTML5 的WebSql本地设备数据库

    HTML5 的 Web SQL Database 用本地和会话存储实现简单的对象持久化,对繁琐的关系数据进行处理. 在 W3C 的 Web SQL Database 规范中(参照 介绍)有这样的描述: ...

  3. docker安装升级linux内核(2.6.32->3.12.17)

    1.内核升级环境准备 #查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库:yum grouplist#一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具yum ...

  4. SNS

    SNS,专指社交网络服务.也指社交现有已成熟普及的信息载体,如短信SMS服务.SNS的另一种常用解释:全称Social Network Site,即“社交网站”或“社交网”.SNS也指Social N ...

  5. c#委托与事件(详解)

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  6. python之~ 序列化与反序列化

    sy1.proto文件 syntax = "proto2"; message stuff { required int32 stuff_ID = ; required ; opti ...

  7. Atitit 版本管理----分支管理

    Atitit 版本管理----分支管理 版本管理系统"(Version Control System Branch/tag在一个功能选项中,在使用中很容易产生混淆. 分支(Branch)管理 ...

  8. Hibernate3 第一天

    Hibernate3 第一天 课程安排:4天(框架的使用+理论知识) 第一天Hibernate快速入门(单表的CRUD)+核心api讲解(配置+接口) 第二天:Hibernate一级缓存,快照,对象持 ...

  9. jquery 实现 点击一个按钮添加多个div

    <script type="text/javascript"> var blockNum=10; $(document).ready(function(){ var p ...

  10. Python 逻辑行/物理行

    物理行是你在编写程序时所看见的. 逻辑行是Python看见的单个语句.Python假定每个物理行对应一个逻辑行 . 默认地,Python希望每行都只使用一个语句,这样使得代码更加易读. 如果你想要在一 ...