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

单文件日志

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. EasyUI 日期选择插件封装成选择到月份的插件

    将普通的日期选择插件封装成选择到月份的插件:                     var nowMonth = new Date();                    var month = ...

  2. webuploader问题

    pick里面的id,我理解就是有点选择器的意思,目前我的认知是不设置它就无法取文件操作: 然后,查看页面的时候发现,pick通过id选定的元素,被替换成了webuploader自定义的元素,表现是-- ...

  3. 打开新世界的第一步:学习servlet

    什么是servlet? 是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 创建servlet 一.创建一个web project 1)流程:eclipse-F ...

  4. 统计C语言程序行数

    补充前一篇中统计C语言程序行数的程序 写得比较匆忙,可能有些失误,等弄明白GitHub的用法并完善程序后再补充完整代码链接 没有写成函数,但经过简单修改可以作为一个计算或判断函数使用 判断算法主要为以 ...

  5. Java jvm 原理

    1.Java语言运行的过程 Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行. 也相当与 ...

  6. html5权威指南:表格元素

    第十一章:表格元素                                                                                           ...

  7. input的type属性

    input的type属性:http://www.w3school.com.cn/tags/att_input_type.asp 基本语法: <input type="hidden&qu ...

  8. php mysq模糊查询l

    范例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  9. article标签和aside标签两者的理解

    article标签,使用后感觉和P(段落)差不多,语义化的标签.<aside> 标签定义article以外的内容(可用做文章的侧栏). 语义化的标签.  html 标签有几种分类,其中有一 ...

  10. jquery设置select选中

    /*设置select选中开始*/ var prod_type=$('.prod_type').val(); //alert(prod_type); var select = document.getE ...