gfrv 发表于 2015-12-1 14:22:17

python日志输出

import logging
logger = logging.getLogger()#生成一个日志对象,()内为日志对象的名字,可以不带,名字不给定就是root,一般给定名字,否则会把其他的日志输出也会打印到你的文件里。

handler=logging.FileHandler("Log_test.txt")#生成一个handler(处理器),
#formatter 下面代码指定日志的输出格式                                 

fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s'   
formatter = logging.Formatter(fmt)   # 实例化formatter

handler.setFormatter(formatter)      # 为handler添加formatter


logger.addHandler(handler)
logger.setLevel(logging.NOTSET) #设置日志输出信息的级别

logger.error("This is an error message") #输出设置小于级别的将不会输出,所以此处的设置应该比setLevel高

logger.info("This is an info message")
logger.critical("This is a critical message")
  python可以生成很多handler,负责把logger创建的日志信息发送到指定的目的地,不同的Handler种类发送到不同的目的地。FileHandler将日志信息写入到文件中;StreamHandler将日志信息输出到控制台;SMTPHandler将日志信息以邮件的形式发送出去;SocketHandler将日志信息用TCP Socket发送出去;DatagramHandler将日志信息用UDP数据报发送出去
  
  formatter的格式






属性名称



    格式



                                       说明





name



%(name)s



日志的名称





asctime



%(asctime)s

可读时间,默认格式‘2003-07-08 16:49:45,896’,逗号之后是毫秒




filename



%(filename)s

文件名,pathname的一部分




pathname



%(pathname)s



文件的全路径名称





funcName



%(funcName)s



调用日志多对应的方法名





levelname



%(levelname)s



日志的等级





levelno



%(levelno)s



数字化的日志等级





lineno



%(lineno)d



被记录日志在源码中的行数





module



%(module)s

模块名


msecs
%(msecs)d
时间中的毫秒部分




process



%(process)d



进程的ID





processName



%(processName)s



进程的名称





thread



%(thread)d



线程的ID





threadName



%(threadName)s



线程的名称





relativeCreated



%(relativeCreated)d



日志被创建的相对时间,以毫秒为单位



  
  
  日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别
  
logging.getLogger()
  创建Logger对象。日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称(注:多次使用相同名称 来调用getLogger,返回的是同一个对象的引用。),Logger实例之间有层次关系,这些关系通过Logger名称来体现,如:
  p = logging.getLogger("root")
  c1 = logging.getLogger("root.c1")
  c2 = logging.getLogger("root.c2")
  例子中,p是父logger, c1,c2分别是p的子logger。c1, c2将继承p的设置。如果省略了name参数, getLogger将返回日志对象层次关系中的根Logger。
页: [1]
查看完整版本: python日志输出