• python


    python主要是通过logging模块来进行日志处理

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,

    你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error(), critical() 5个级别,

      日志级别:
        DEBUG
        INFO
        WARNING
        ERROR
        CRITICAL
    等级依次提高(打印的信息越来越少,DEBUG最详细)

     1 日志格式:
     2     %(name)s            Logger的名字(默认root)
     3     %(levelno)s         字形式的日志级别 依次为:
     4                         DEBUG:10  INFO:20  WARNING:30  ERROR:40  CRITICAL:50
     5     %(levelname)s       文本形式的日志级别
     6     %(pathname)s        调用日志输出函数的模块的完整路径名,可能没有
     7     %(filename)s        调用日志输出函数的模块的文件名
     8     %(module)s          调用日志输出函数的模块名   
     9     %(message)s         用户输出的消息
    10     %(funcName)s        调用日志输出函数的函数名
    11     %(lineno)d          调用日志输出函数的语句所在的代码行
    12     %(created)f         当前时间,用UNIX标准的表示时间的浮 点数表示
    13     %(relativeCreated)d    输出日志信息时的,自Logger创建以 来的毫秒数
    14     %(asctime)s         字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    15     %(thread)d          线程ID。可能没有
    16    %(threadName)s      线程名。可能没有
    17     %(process)d         进程ID。可能没有

    日志模块使用:

      1、最简单用法,打印到屏幕( 不用print,自带打印)

    1 import logging
    2 logging.warning('user [root] attempted wrong password more than 3 times')
    3 logging.critical('server is down') 

    #想要debug()、info() 或 error() 跟上面一样,添加上就是了

      2、设置时间

    1 import logging
    2 logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
    3 logging.warning('is when this event was logged.')

      3、把日志写到文件

    1 import logging
    2 
    3 logging.basicConfig(filename='./file/logging.log',level=logging.DEBUG,format='%(asctime)s  %(name)s - %(levelname)s ->%(levelno)s :  %(message)s ', datefmt='%Y-%m-%d %H:%M:%S')
    4 logging.debug('This message should go to the log file')
    5 logging.info('So should this')
    6 logging.warning('And this, too')
    7 logging.error('And this, too')
    8 logging.critical('And this, too')

    文件内容:

        2017-04-04 17:14:10 root - DEBUG ->10 : This message should go to the log file
        2017-04-04 17:14:10 root - INFO ->20 : So should this
        2017-04-04 17:14:10 root - WARNING ->30 : And this, too
        2017-04-04 17:14:10 root - ERROR ->40 : And this, too
        2017-04-04 17:14:10 root - CRITICAL ->50 : And this, too

      4、把日志同时写到文件和打印到屏幕 

     1 '''
     2 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:
     3 
     4      logger提供了应用程序可以直接使用的接口;
     5          Logger.setLevel(lel):指定最低的日志级别,低于lel的级别将被忽略。debug是最低的内置级别,critical为最高
     6          Logger.addFilter(filt)、Logger.removeFilter(filt):添加或删除指定的filter
     7          Logger.addHandler(hdlr)、Logger.removeHandler(hdlr):增加或删除指定的handler
     8          Logger.debug()、Logger.info()、Logger.warning()、Logger.error()、Logger.critical():可以设置的日志级别
     9 
    10      handler将(logger创建的)日志记录发送到合适的目的输出;
    11           Handler.setLevel(lel):指定被处理的信息级别,低于lel级别的信息将被忽略
    12           Handler.setFormatter():给这个handler选择一个格式
    13           Handler.addFilter(filt)、Handler.removeFilter(filt):新增或删除一个filter对象
    14 
    15      filter提供了细度设备来决定输出哪条日志记录;
    16 
    17      formatter决定日志记录的最终输出格式。
    18 '''
    19 import logging
    20 
    21 #创建logger
    22 logger = logging.getLogger('XT-LOG')
    23 logger.setLevel(logging.DEBUG)  
    24      #设置全局的日志级别(全局的优先级高于局部的但是若局部的在全局之上,则保存局部的)
    25      
    26 #创建一个console handler,并且设置其日志级别为debug
    27 ch = logging.StreamHandler()
    28 ch.setLevel(logging.DEBUG)
    29 
    30 #创建一个file handler,并且设置其日志级别为warning
    31 fh = logging.FileHandler('./file/logging.log')
    32 fh.setLevel(logging.WARNING)
    33 
    34 #创建一个formatter(格式)
    35 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',datefmt='%Y-%m-%d %H:%M:%S')
    36 
    37 #把formatter添加到console handler和file handler
    38 ch.setFormatter(formatter)
    39 fh.setFormatter(formatter)
    40 
    41 #把console handler和file handler添加到logger
    42 logger.addHandler(ch)
    43 logger.addHandler(fh)
    44 
    45 #设置错误消息
    46 logger.debug('debug message')
    47 logger.info('info message')
    48 logger.warning('warning message')
    49 logger.error('error message')
    50 logger.critical('critical message')

    以上输出到屏幕结果:

        2017-04-08 16:12:49 - XT-LOG - DEBUG - debug message
        2017-04-08 16:12:49 - XT-LOG - INFO - info message
        2017-04-08 16:12:49 - XT-LOG - WARNING - warning message
        2017-04-08 16:12:49 - XT-LOG - ERROR - error message
        2017-04-08 16:12:49 - XT-LOG - CRITICAL - critical message

  • 相关阅读:
    修改msn密碼的地址
    Global.asax.cs中的方法的含义 Application_AcquireRequestState验证Session[轉]
    工作筆記DMIS項目
    给创业者的忠告
    Windows 2008 / Windows 7 x64: The ‘Microsoft.Jet.OLEDB.4.0′ provider is not registered on the local machine.
    Case Study: Nick Leeson and The Barings Debacle
    如何减小MS SQL Server的Log文件尺寸
    如何使windows7的默认共享可以被访问
    Android 开发人员必须掌握的 10 个开发工具
    在Windows Server 2008 R2上设置FTP 服务
  • 原文地址:https://www.cnblogs.com/xtsec/p/6682150.html
Copyright © 2020-2023  润新知