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([name])

创建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. SqlServer 触发器
  2. logstash 配置 logstash-forwarder (前名称:lumberjack)
  3. 深入解读Linux与Android的相互关系(转-lining)
  4. [python学习笔记]Day1
  5. [PCL]4 PCL中图像匹配的几个类图
  6. SQL 根据指定字符拆分字符串
  7. Careercup - Google面试题 - 4699414551592960
  8. Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示
  9. jqplot配置详解
  10. 整合最优雅SSM框架:SpringMVC + Spring + MyBatis
  11. Git操作大全[实际用到的都放在这里总结]
  12. Java课程设计 201521123078
  13. input输入框失去焦点,软键盘关闭后,滚动的页面无法恢复到原来位置
  14. 【洛谷】【计数原理+Floyed】P1037 产生数
  15. BZOJ4764弹飞大爷——LCT
  16. MT【61】含参数二次函数最大最小值
  17. charles mock方法及问题
  18. mybatis源码-解析配置文件(二)之解析的流程
  19. 2. Linear Model
  20. wordpress4.4+版本自动生成一个768w像素缩略图的解决办法

热门文章

  1. epmap服务
  2. highcharts 结合phantomjs纯后台生成图片
  3. Windows下Java File对象创建文件夹时的一个"坑"
  4. PHP开发者常犯的10个MySQL错误
  5. [置顶] android 与JavaScript的互相调用
  6. JPA中的@MappedSuperclass
  7. 自定义progressbar
  8. 【.NET应用技巧】Asp.NET MVC 4 设置IIS下调试
  9. codeforces 334B - Eight Point Sets
  10. [反汇编练习] 160个CrackMe之016