Python不归路_logging模块

Logging模块学习

1、Logging的五个等级

debug:诊断性的信息

info:确认一切按预期运行

warning:警告性信息,如CPU负载过高,硬盘空间少

error:更严重的事情,但系统还能运行

critical:系统无法继续运行

这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。

2、将日志输出到屏幕

  2.1简单输出

1 import logging
2 logging.warning(‘this is a warning message‘)
3 logging.error(‘this is a error message‘)
4
5 #输出
6 WARNING:root:this is a warning message
7 ERROR:root:this is a error message

  只有WARNING或之上的才会输出至屏幕。

  2.2logging.basicConfig()函数输出 

1 logging.basicConfig(format=‘%(asctime)s %(message)s‘)
2 logging.warning(‘this is a warning message‘)
3 logging.error(‘this is a error message‘)
4
5 #输出
6
7 2017-11-09 14:52:05,311 this is a warning message
8 2017-11-09 14:52:05,311 this is a error message  

  logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息:

  %(levelno)s: 打印日志级别的数值
  %(levelname)s: 打印日志级别名称
  %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
  %(filename)s: 打印当前执行程序名
  %(funcName)s: 打印日志的当前函数
  %(lineno)d: 打印日志的当前行号
  %(asctime)s: 打印日志的时间
  %(thread)d: 打印线程ID
  %(threadName)s: 打印线程名称
  %(process)d: 打印进程ID
  %(message)s: 打印日志信息

  常用的格式:

1 logging.basicConfig(format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘)
2 logging.warning(‘this is a warning message‘)
3 logging.error(‘this is a error message‘)
4
5 #输出
6
7 2017-11-09 15:06:14,915 logging模块.py[line:8] WARNING this is a warning message
8 2017-11-09 15:06:14,915 logging模块.py[line:9] ERROR this is a error message

3、将日志出输出至文件

 1 logging.basicConfig(level=logging.ERROR,format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,filename=‘d:\\111.log‘,filemode=‘w‘)
 2 logging.warning(‘this is a warning message‘)
 3 logging.error(‘this is a error message‘)
 4 with open(‘d:\\111.log‘,‘r‘) as f:
 5     for lines in f.readlines():
 6         print(lines)
 7
 8 #输出
 9
10 2017-11-09 16:45:44,998 logging模块.py[line:9] ERROR this is a error message

上面的代码比2.2中新添加了日志等级和文件存储。’level = logging.INFO‘,‘filename=‘d:\\111.log‘,filemode=‘w‘’。

4、将日志同时输出至屏幕和文件

具体步骤

  

 1 logger = logging.getLogger()
 2 logger.setLevel(logging.DEBUG)  #记录日志等级的总开关
 3
 4 logfile = ‘d:\\333.log‘
 5 fh = logging.FileHandler(logfile,mode=‘w‘)  #文件存储位置
 6 fh.setLevel(logging.INFO)  #记录日志等级
 7
 8 sh = logging.StreamHandler()   #输出屏幕
 9 sh.setLevel(logging.WARNING)   #记录日志等级
10
11 geshi = logging.Formatter(‘%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:%(message)s‘)   #日志输出格式
12 fh.setFormatter(geshi)
13 sh.setFormatter(geshi)
14
15 logger.addHandler(sh)  #添加Handler
16 logger.addHandler(fh)
17
18
19 logger.info(‘this is a INFO message‘)
20 logger.warning(‘this is a WARNING message‘)
21 logger.debug(‘this is a DEBUG message‘)
22
23
24 输出
25
26 2017-11-10 11:40:00,035 - logging模块.py[line:34] - WARNING:this is a WARNING message

  handler对象负责发送相关的信息到指定目的地。Python的日志系统有多种Handler可以使用。有些Handler可以把信息输出到控制台,有些Logger可以把信息输出到文件,还有些 Handler可以把信息发送到网络上。如果觉得不够用,还可以编写自己的Handler。可以通过addHandler()方法添加多个多handler。比如上面代码中输出至文件FileHandler()和标准输出SteamHandler()。

  

 

 

  

时间: 2024-10-29 19:11:17

Python不归路_logging模块的相关文章

Python不归路_字符编码操作

文件操作补充 上篇随笔中写了文件操作的几个方法,其中truncate()方法遗漏,truncate()方法作用是截取内容,f.truncate()不带参数会清空文件内容,带参数表示截取从零到参数的位置 字符编码 在<Python不归路_零基础学习二>中我们已经学习了一些编码的知识,比如ASCII一共有255个符号,Unicode中,中文字符占两个字节,英文占一个字节,utf-8是unicode的优化方案,中文字节占三个字符.不同字符编码之间需要相互转化才能正常读取.encode和decode,

Python不归路_os和system模块

OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作,OS模块提供对操作系统进行调用的接口. 几个重要函数: os.getcwd()#查看当前所在路径,默认是Python程序所在路径 os.chdir()#切换目录,功能和linux中cd命令一样 os.curdir#返回当前目录'.' os.pardir#返回当前父目录'..' os.makedirs()#新建多级目录,功能和linux中的mkdir -p命令一样 os.removedirs

Python之路36-logging模块

#很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别 import logging #打印日志 logging.warning("user [alex] attempted wrong password more than

Python之路28-sys模块

import sys #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 print(sys.path) #返回操作系统平台名称 print(sys.platform) #命令行参数List,第一个元素是程序本身路径 print(sys.argv) #退出程序,正常退出时exit(0) #sys.exit(0) #获取Python解释程序的版本信息 print(sys.version)

Python之路-常用模块(re模块)

一.正则表达式 定义:具有特殊含义符号组合到一起用来描述字符或字符串的一种方法.内嵌在Python中,通过 re模块实现,被编译成一系列字节码,由C编写的匹配引擎执行. 1.常用匹配模式 2.常用的re模块函数 (1).  re.match() 决定RE是否在字符串刚开始的位置匹配.//注:这个方法并不是完全匹配.当pattern结束时若string还有剩 余字符,仍然视为成功.想要完全匹配,可以在表达式末尾加上边界匹配符'$ 格式: re.match(pattern, string, flag

python之路——常用模块

 什么是模块? 常见的场景:一个模块就是一个包含了python定义和申明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共享库或DLL的C或C++扩展 3.包好一组模块的包 4.使用C编写并链接到python解释器的内置模块 为什么要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过pytho

python之路---23 模块 os sys pickle json

一.   os模块 主要是针对操作系统的 用于文件操作 二.    sys 模块 模块的查找路径   sys.path 三   pickle 模块 1.  pickle.dumps(对象) 序列化  把对象拍散成字节 2.pickle.loads(字节) 反序列化,把字节整合成对象 3.pickle.dump(对象,文件) 把对象打散写入到文件, 序列化的内容不是给人看的 多个对象时  可以存入列表 4.pickle.load(文件) 读取文件 四.  json 模块 可以认为是python中的

Python之路43-paramiko模块

paramiko模块 通过ssh2协议远程登录服务器执行命令或上传下载文件 ssh 公钥密钥连接 RSA -非对称密钥验证 公钥 public key 私钥 private key 10.0.0.31 ----> 10.0.0.41 私钥             公钥 10.0.0.31先生成一对公钥和私钥,将公钥给要被登录的机器 ssh-keygen生成一对公钥私钥,id_rsa.pub公钥,id_rsa私钥 将公钥放到.ssh/authorized_keys下面 ssh-copy-id &quo

Python_不归路 random模块

random模块 random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. 随机浮点数: random.random,随机生成0-1之间的浮点数. random.uniform,随机生成自定义区间的浮点数. import random random.random() random.uniform(1,10)#随机生成1-10之间的浮点数 输出结果: 0.417112947846879365.00397895015067 随机整数: random.randint,随机生成自