#Auther Bob
#--*--coding:utf-8--*-- import logging #python一共有5个级别的日志,debug、info、warning、error、critical,其中用下面的方式,debug和info的日志不会打印出来
# logging.debug('time is over')
# logging.info('password is error')
# logging.warning('you have 3 times')
# logging.error('you have no time')
# logging.critical('server is down') # ================================================================================================================== #输出最简单的日志到文件中,这里的还不带任何格式,下面这段代码的意思是,输出日志到log1.txt中,但是是打印info级别以上的日志
# logging.basicConfig(filename='log1.txt',level=logging.INFO)
# logging.debug('time is over')
# logging.info('password is error')
# logging.warning('you have 3 times')
# logging.error('you have no time')
# logging.critical('server is down') #查看log1.txt中的内容,只有info及info以上的日志
# INFO:root:password is error
# WARNING:root:you have 3 times
# ERROR:root:you have no time
# CRITICAL:root:server is down # =============================================================================================================== #下面我们在丰富一下上面的例子,可以修改和优化日志打印的格式,format中的参数asctime是时间,message就是日志的内容 # logging.basicConfig(filename='log2.txt',level=logging.INFO,format='%(asctime)s,%(message)s',datefmt='%m/%d/%Y:%H:%M:%S %p')
# logging.debug('time is over')
# logging.info('password is error')
# logging.warning('you have 3 times')
# logging.error('you have no time')
# logging.critical('server is down') #我们来看下log2.txt中的内容
# 04/11/2017:10:01:37 AM,password is error
# 04/11/2017:10:01:37 AM,you have 3 times
# 04/11/2017:10:01:37 AM,you have no time
# 04/11/2017:10:01:37 AM,server is down # ====================================================================================================== #上面要么就输出到屏幕上,要么就输出到文件中,如果我们想同时输出到屏幕和文件中,该怎么办呢? #1,先注册一个全局的日志对象
log_obg = logging.getLogger('root')
log_obg.setLevel(logging.WARNING) #2,创建一个打印到屏幕的日志对象,和该日志对象的级别,如果该级别低于全局的级别,则全局的级别生效,如果该级别高于全局的级别
#则该级别生效
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR) #3,创建一个打印到文件的日志对象,和该日志对象的级别,如果该级别低于全局的级别,则全局的级别生效,如果该级别高于全局的级别
#则该级别生效
fh = logging.FileHandler('log3.txt')
fh.setLevel(logging.WARNING) #3,创建一个日志的格式的对象
format_obg = logging.Formatter('%(asctime)s -%(name)s -%(levelname)s -%(message)s') # %(name)s 这里就是logging.getLogger('root')的'root'
# %(levelno)s 这里就是日志的级别DEBUG, INFO,WARNING, ERROR, CRITICAL # %(levelname)s
# %(pathname)s 这里就是文件的路径名
# %(filename)s 这里就是文件的名称
# %(module)s 模块的名称
# %(lineno)d 行数
# %(funcName)s 函数的名称
# %(created)f 日志记录创建时间
# %(asctime)s 时间
# %(msecs)d 秒
# %(thread)d 线程id
# %(threadName)s 线程名称
# %(process)d 进程id
# %(message)s 日志内容 #4、对打印到屏幕的日志设定格式
ch.setFormatter(format_obg) #5、对打印到文件的日志设定格式
fh.setFormatter(format_obg) #在全局的日志对象中注册打印到屏幕的日志对象
log_obg.addHandler(ch) #在全局的日志对象中注册打印到文件的日志对象
log_obg.addHandler(fh) # log_obg.debug('time is over')
# log_obg.info('password is error')
# log_obg.warning('you have 3 times')
# log_obg.error('you have no time')
# log_obg.critical('server is down') #输出到屏幕的日志
# 2017-04-11 10:25:03,241 -root -ERROR -you have no time
# 2017-04-11 10:25:03,241 -root -CRITICAL -server is down #输出到文件的日志
# 2017-04-11 10:25:03,241 -root -WARNING -you have 3 times
# 2017-04-11 10:25:03,241 -root -ERROR -you have no time
# 2017-04-11 10:25:03,241 -root -CRITICAL -server is down
#Auther Bob
#--*--coding:utf-8--*--
import logging #z注册一个全局的日志对象
log_obj = logging.getLogger("root")
log_obj.setLevel(logging.DEBUG) #注册一个打印到屏幕上的日志对象
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR) #注册一个打印到文件的日志对象
fh = logging.FileHandler("db.txt")
fh.setLevel(logging.ERROR) #设定日志打印的格式
log_format = logging.Formatter("%(name)s-%(message)s-%(levelno)s-%(thread)d-%(threadName)s-%(process)d-%(asctime)s",datefmt='%m/%d/%Y:%H:%M:%S %p')
# log_format = logging.Formatter("%(name)s-%(message)s-%(levelno)s-%(thread)d-%(threadName)s-%(process)d-%(asctime)s") #在打印到屏幕的日志对象中应用日志格式
fh.setFormatter(log_format) #在打印到文件的日志对象中应用日志格式
sh.setFormatter(log_format) #将打印到屏幕和日志的对象注册到全局的日志对象中
log_obj.addHandler(fh)
log_obj.addHandler(sh) while True:
log_obj.debug('time is over')
log_obj.info('password is error')
log_obj.warning('you have 3 times')
log_obj.error('you have no time')
log_obj.critical('server is down')

  

pyhon模块之日志模块的更多相关文章

  1. python基础编程:生成器、迭代器、time模块、序列化模块、反序列化模块、日志模块

    目录: 生成器 迭代器 模块 time 序列化 反序列化 日志 一.生成器 列表生成式: a = [1,2,3,3,4,5,6,7,8,9,10] a = [i+1 for i in a ] prin ...

  2. Python模块——loguru日志模块简单学习

    Python loguru模块简单学习 首先安装模块:pip install logoru,然后引入模块: from loguru import logger 1.直接输出到console logge ...

  3. loggin模块,错误日志模块

    # 记录用户行为或者报错信息 import logging # 配置错误日志有两种方法 # 方法1:通过basicconfig # 配置简单.但是能做的事情少,解决不了中文乱码,不能同时输出到屏幕和文 ...

  4. Python学习日记(二十八) hashlib模块、configparse模块、logging模块

    hashlib模块 主要提供字符加密算法功能,如md5.sha1.sha224.sha512.sha384等,这里的加密算法称为摘要算法.什么是摘要算法?它又称为哈希算法.散列算法,它通过一个函数把任 ...

  5. 包、logging模块、hashlib模块、openpyxl模块、深浅拷贝

    包.logging模块.hashlib模块.openpyxl模块.深浅拷贝 一.包 1.模块与包 模块的三种来源: 1.内置的 2.第三方的 3.自定义的 模块的四种表现形式: 1.py文件 2.共享 ...

  6. Py-re正则模块,log模块,config模块,哈希加密

    9.re正则表达式模块,用于字符串的模糊匹配 元字符: 第一:点为通配符 用.表示匹配除了换行符以外的所有字符 import re res=re.findall('a..x','adsxwassxdd ...

  7. 【腾讯Bugly干货分享】微信mars 的高性能日志模块 xlog

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581c2c46bef1702a2db3ae53 Dev Club 是一个交流移动 ...

  8. Python 日志模块 logging通过配置文件方式使用

    vim logger_config.ini[loggers]keys=root,infoLogger,errorlogger [logger_root]level=DEBUGhandlers=info ...

  9. 搭建一套自己实用的.net架构(2)【日志模块-log4net】

    先谈谈简单的模块,日志.在系统中日志模块是必须的,什么系统日志,操作日志,调试日志.这里用的是log4net. 对log4net还不熟悉的小伙伴们赶快去搜索基础教程哦, 我这里就不温故了. 那么有人要 ...

随机推荐

  1. oracle 年龄计算 岁 月 天

    select trunc(months/12) || '岁' || trunc(mod(months, 12)) || '月' ||       trunc(sysdate - add_months( ...

  2. css 参考属性大全

    动画属性 属性 描述 CSS @keyframes 定义一个动画,@keyframes定义的动画名称用来被animation-name所使用. 3 animation 复合属性.检索或设置对象所应用的 ...

  3. Determining IP information for eth0...failed 错误解决

    问题描述:虚拟机使用wget命令上网,执行service network restart后出现如下错误Determining IP information for eth0...failed解决办法: ...

  4. 通过yum升级gcc/g++至版本4.8.2

    最近在坐一个日期处理的问题,需要安装sxtwl模块,但是gcc版本4.7死活也安装不上,最后测试到只能升级gcc版本到4.8才得以解决 [root@123 bin]# gcc -vUsing buil ...

  5. Java技术栈

    内容: 1.Java基础(JavaSE) 2.数据结构与算法与设计模式 3.计算机理论知识 4.数据库 5.Java web(JavaEE) 6.消息队列 7.Linux及服务器相关 8.分布式相关 ...

  6. HTML|CSS之CSS选择器及样式

    知识内容: 1.CSS选择器 2.CSS常用样式 参考:http://www.cnblogs.com/yuanchenqi/articles/5977825.html 一.CSS选择器 1.基础选择器 ...

  7. CUDA C Programming Guide 在线教程学习笔记 Part 10【坑】

    ▶ 动态并行. ● 动态并行直接从 GPU 上创建工作,可以减少主机和设备间数据传输,在设备线程中调整配置.有数据依赖的并行工作可以在内核运行时生成,并利用 GPU 的硬件调度和负载均衡.动态并行要求 ...

  8. 《GPU高性能编程CUDA实战》第九章 原子性

    ▶ 本章介绍了原子操作,给出了基于原子操作的直方图计算的例子. ● 章节代码 #include <stdio.h> #include "cuda_runtime.h" ...

  9. 0_Simple__simpleTexture + 0_Simple__simpleTextureDrv

    使用纹理引用来旋转图片,并在使用了静态编译和运行时编译两种环境. ▶ 源代码:静态编译 #include <stdio.h> #include <windows.h> #inc ...

  10. PHP获取照片exif信息

    在这个没图说个屁的年代,照片还是很重要的.如果照片上传后会自动加上 照片相关信息,那用户体验的确会好很多,本着这个想法,今天尝试了下 PHP获取照片exif信息,重要的是 获取图片的GPS信息,如果再 ...