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

单文件日志

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. 12C RMAN 备份参考v1

    windows bat 1,C:\dba\utility\rman\rman.bat del C:\dba\utility\rman\full_db_* /qset TNSNAME=ceipuatrm ...

  2. String与StringBuilder区别总结

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...

  3. 利用StringBuffer向字符串特定的重复子字符串插入数据

    public class InsertDetail {    public void insertInvoiceDetail(StringBuffer sb, String Label, String ...

  4. javascript Navigator对象

    0.Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 1.对象属性 2. var browser=navigator.appName; var b_version=n ...

  5. ios获取相册图片 压缩图片

    从摄像头/相册获取图片 刚刚在上面的知识中提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用.在这里,我们需要过UIImagePickerController类来和用户交互. ...

  6. 扩展KMP——算法总结,来自于 迷路的鸽子

    扩展kmp                 LRH 所谓扩展kmp指的是与kmp相似的求辅助数组的原理,但是本身与kmp关系不大. 1.exkmp的用途:给定一个主串s和一个子串t,求出s中每一个后缀 ...

  7. C#.NET的微信功能开发学习

    对于新手的我来说,我不是申请一个微信公众号认证后进行开发,我是申请一个订阅号,然后通过自己申请的订阅号的公众平台测试号来学习. 一,申请后成功后,打开开发者工具-公众平台测试号 二,进去公众平台测试号 ...

  8. HDU1009FatMouse' Trade(贪心)

    Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding th ...

  9. POJ 2240 Arbitrage(SPFA+邻接矩阵)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

  10. hdu_5286_wyh2000 and sequence(分块)

    题目链接:hdu_5286_wyh2000 and sequence 题意: 给一段长度为N的序列,每次询问l-r(l和r和上一次询问的答案有关)内 不同的数的 出现次数的次方 的和.强制在线 题解: ...