zoukankan      html  css  js  c++  java
  • logging用法

    举例

    import logging

    class Logger:

      def addlog(self):

        #打印日志到文件

        logpath=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

        file=time.strftime('%Y-%m-%d_%H_%M_%S',time.localtime(time.time()))+'.log'          #文件名里不能有空格和冒号

        logging.basicConfig(level=logging.DEBUG ,

                  format=' %(asctime)s %(name)-12s %(levelname)-8s %(message)s ' ,

                  datefmt=' %m-%d %H:%M ' ,

                   filename=logpath + ' \log\ ' + str(file) , 

                  filemode=' a ')

        #打印日志到控制台

        console=logging.StreamHandle()

        console.setLevel(logging.DEBUG)

        formatter=logging.Formatter( ' %(name)-12s %(levelname)-8s %(message)s ' )

        console.setFormatter(formatter)

        logging.getLogger( ' ' ) . addHandler(console)

        return file

    应用的时候:

    import Logger    

    Logger().addlog()

    级别数字值
    CRITICAL 50
    ERROR 40
    WARNING 30
    INFO 20
    DEBUG 10
    NOTSET 0
    DEBUG 详细信息,一般只在调试问题时使用。
    INFO 证明事情按预期工作。
    WARNING 某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。
    ERROR 由于更严重的问题,软件已不能执行一些功能了。
    CRITICAL 严重错误,表明软件已不能继续运行了。

    用logging.basicConfig()方法打印

    日志级别: debug < info < warning < error < critical
    
    logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
    logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
    logging.warning('waring级别,一般用来打印警信息')
    logging.error('error级别,一般用来打印一些错误信息')
    logging.critical('critical 级别,一般用来打印一些致命的错误信息,等级最高')

    打印到控制台:
    logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                        level=logging.DEBUG)
    logging.debug('debug 信息')
    logging.info('info 信息')
    logging.warning('warning 信息')
    logging.error('error 信息')
    logging.critical('critial 信息')


    打印到文件,如果在logging.basicConfig()设置filename 和filemode,则只会保存log到文件,不会输出到控制台。
    logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
                        filename='new.log',
                        filemode='a',##  模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志,#a是追加模式,默认如果不写的话,就是追加模式
                        format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' #日志格式
                        )


    Formatters

    Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S,下面是Formatter常用的一些信息

    %(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

    用户输出的消息



    来源,具体请查看以下链接
    https://www.cnblogs.com/nancyzhu/p/8551506.html
  • 相关阅读:
    加入页面切换动画, 避免冷启动
    Spark Shuffle模块——Suffle Read过程分析
    java使用线程请求訪问每次间隔10分钟连续5次,之后停止请求
    二叉排序树(BST)构造与应用
    L贪心基础
    leetcode笔记:Ugly Number II
    Android API Guides---Layouts
    红外目标图像中阈值切割方法的比較与研究
    IOS开发证书变成“此证书的签发者无效”解决方法
    Web前端开发规范收集
  • 原文地址:https://www.cnblogs.com/jiaoxiaohui/p/10475467.html
Copyright © 2011-2022 走看看