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

单文件日志

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. 解决 git extensions 每次提交需要输入用户名和密码

    打开git bash 输入用户名和密码 git config --global user.name "username" git config --global user.emai ...

  2. wso2 CEP集成storm实验

    1.三台机子:192.168.225.1(manager,nimbus), 192.168.225.2(worker,supervisor), 192.168.225.3(worker,supervi ...

  3. qt5.6 for android

    尝试在qt下写android的程序.测试,没有编译成功. 在选项-android配置页面,提示有"Qt version for 3 architectures are missing&quo ...

  4. JavaScript DOM编程艺术-学习笔记

    发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...

  5. 在java中json的使用案例

    import java.text.ParseException; import org.json.JSONArray; import org.json.JSONObject; public class ...

  6. 3.Thread中的静态方法

    1.currentThread() public class Thread14 extends Thread{ static { System.out.println("静态块的打印:&qu ...

  7. 根据ClassName获取元素节点

    功能描述: 通过ClassName获取元素节点,并解决兼容性问题 实现效果: 编码思路: 利用getElementsByTagName选出所有元素,再根据ClassName条件进行筛选 代码示例:

  8. 微信小程序入门——Mustache语法学习

    微信小程序中用到了大量Mustache语法,特发此文学习一下 1.简单的变量调换:{{name}} 1 var data = { "name": "Willy" ...

  9. 设计模式--命令模式(Command)

    基本概念:  Command模式也叫命令模式 ,是行为设计模式的一种.Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数,命令模式将方法调用给封装起来了. 命令模式的 ...

  10. 淘淘商城_day05_课堂笔记

    今日大纲 学习Redis 使用Redis完成项目中缓存需求 实现商品详情页功能 缓存的需求 大广告位数据无需每次查询后台系统的接口,可以在前台系统添加缓存,提高访问首页的速度. 商品类目的数据也可以缓 ...