zoukankan      html  css  js  c++  java
  • logging 模块 五星知识

    好的博客:https://www.cnblogs.com/Nicholas0707/p/9021672.html

    logging 是用来记录日志的,有下面5种模式,它和print功能一样,只不过,print不能控制自己打印的内容,而logging可以控制,你想打印什么东西。

    logging 有两种形式:

    第一种:低端操作,一般不怎么使用。

    import logging
    #低端的输出模式,这种模式我们很少用
    logging.basicConfig(level=logging.DEBUG,
                        format='[%(asctime)s]%(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S',
                        filename='test1.log',   #配置filename就输入到文件里,没有输入filename就输入到屏幕上
                        filemode='a')
    
    logging.debug('debug message')#调试模式不是必须出现但是如果有问题,需要借助它的信息调试
    logging.info('info message')#信息模式 必须出现但是对程序的运行没有任何影响
    logging.warning('warning message')#警告模式不会直接出发程序的崩溃,但是可能会出现问题
    logging.error('error message')#错误模式 出错了
    logging.critical('critical message')#批判模式
    #默认情况下,logging的等级是WARNING
    
    try:
        r=input("num:")
        int(r)
    except:
        logging.error("please enter a number")

    配置参数表:

    logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
    
    filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
    filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
    format:指定handler使用的日志显示格式。
    datefmt:指定日期时间格式。
    level:设置rootlogger(后边会讲解具体概念)的日志级别
    stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
    
    format参数中可能用到的格式化串:
    %(name)s Logger的名字
    %(levelno)s 数字形式的日志级别
    %(levelname)s 文本形式的日志级别
    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行
    %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
    %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
    %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d 线程ID。可能没有
    %(threadName)s 线程名。可能没有
    %(process)d 进程ID。可能没有
    %(message)s用户输出的消息

    第二种方法:高端操作

    #高端的输出模式
    import logging
    logger=logging.getLogger() #实例化一个logger对象
    fh=logging.FileHandler("test3.log",encoding="utf-8")#文件句柄
    formatter=logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")   #日志输出格式
    fh.setFormatter(formatter)                  #文件句柄绑格式
    logger.setLevel(logging.DEBUG)#设置文件等级如果不设置默认warning
    logger.addHandler(fh) #logger绑文件句柄
    sh=logging.StreamHandler()#屏幕流对象
    logger.addHandler(sh)
    sh.setFormatter(formatter) #以上三步都是为了让屏幕显示打印内容,如果不需要删除就行
    logger.info("你好")
    logging 有两种形式:
    1 basicConfig 配置简单,可以直接用
    2 对象的输出模式:可以 随意控制往什么地方输出日志,且可以控制输出内容的格式。
  • 相关阅读:
    【XSY2534】【CF835D】Palindromic characteristics 回文自动机
    启发式合并&线段树合并/分裂&treap合并&splay合并
    【XSY2534】【BZOJ4817】树点涂色 LCT 倍增 线段树 dfs序
    线性求逆元
    l1 和l2范数的真实意义
    方向导数及梯度
    大厂实习总结和反思
    高考报考以及心态调整健康贴士
    【骑士走棋盘】
    【老鼠走迷宫一】
  • 原文地址:https://www.cnblogs.com/sticker0726/p/7886582.html
Copyright © 2011-2022 走看看