日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统服务:logging日志记录模块

發布時間:2025/3/12 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统服务:logging日志记录模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

許多應用程序中都會有日志模塊,用于記錄系統在運行過程中的一些關鍵信息,以便于對系統的運行狀況進行跟蹤。

在.NET平臺中,有非常著名的第三方開源日志組件log4net,c++中,有人們熟悉的log4cpp。

而在Python中,我們不需要第三方的日志組件,因為它已經為我們提供了簡單易用、且功能強大的日志模塊:logging。

logging模塊支持將日志信息保存到不同的目標域中,如:保存到日志文件中;以郵件的形式發送日志信息;以http get或post的方式提交日志到web服務器;以windows事件的形式記錄等等。這些日志保存方式可以組合使用,每種方式可以設置自己的日志級別以及日志格式。

logging模塊主要函數

  • 16.6. logging — Logging facility for Python
    • 16.6.1. Logger Objects
    • 16.6.2. Logging Levels
    • 16.6.3. Handler Objects
    • 16.6.4. Formatter Objects
    • 16.6.5. Filter Objects
    • 16.6.6. LogRecord Objects
    • 16.6.7. LogRecord attributes
    • 16.6.8. LoggerAdapter Objects
    • 16.6.9. Thread Safety
    • 16.6.10. Module-Level Functions
    • 16.6.11. Module-Level Attributes
    • 16.6.12. Integration with the warnings module
  • 16.7. logging.config — Logging configuration
    • 16.7.1. Configuration functions
    • 16.7.2. Configuration dictionary schema
      • 16.7.2.1. Dictionary Schema Details
      • 16.7.2.2. Incremental Configuration
      • 16.7.2.3. Object connections
      • 16.7.2.4. User-defined objects
      • 16.7.2.5. Access to external objects
      • 16.7.2.6. Access to internal objects
      • 16.7.2.7. Import resolution and custom importers
    • 16.7.3. Configuration file format
  • 16.8. logging.handlers — Logging handlers
    • 16.8.1. StreamHandler
    • 16.8.2. FileHandler
    • 16.8.3. NullHandler
    • 16.8.4. WatchedFileHandler
    • 16.8.5. BaseRotatingHandler
    • 16.8.6. RotatingFileHandler
    • 16.8.7. TimedRotatingFileHandler
    • 16.8.8. SocketHandler
    • 16.8.9. DatagramHandler
    • 16.8.10. SysLogHandler
    • 16.8.11. NTEventLogHandler
    • 16.8.12. SMTPHandler
    • 16.8.13. MemoryHandler
    • 16.8.14. HTTPHandler
    • 16.8.15. QueueHandler
    • 16.8.16. QueueListener

皮皮blog



logging模塊的基本使用

logging使用的基本格式如下

import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

簡單例子1

[python] view plaincopy print?
  • import?logging????
  • logging.basicConfig(filename?=?os.path.join(os.getcwd(),?'log.txt'),?level?=?logging.DEBUG)????
  • logging.debug('this?is?a?message')????
  • import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) logging.debug('this is a message') 運行上面例子的代碼,將會在程序的根目錄下創建一個log.txt文件,打開該文件,里面有一條日志記錄:"DEBUG:root:this is a message"。

    四個主要的組件
    logger: 日志類,應用程序往往通過調用它提供的api來記錄日志;
    handler: 對日志信息處理,可以將日志發送(保存)到不同的目標域中;
    filter: 對日志信息進行過濾;
    formatter:日志的格式化;

    日志級別

    在記錄日志時, 日志消息都會關聯一個級別("級別"本質上是一個非負整數)。系統默認提供了6個級別,它們分別是:

    級別對應的值
    CRITICAL50
    ERROR40
    WARNING30
    INFO20
    DEBUG10
    NOTSET0
    可以給日志對象(Logger Instance)設置日志級別,低于該級別的日志消息將會被忽略,也可以給Hanlder設置日志級別,對于低于該級別的日志消息, Handler也會忽略。

    皮皮blog



    logging模塊中的常用函數

    logging.basicConfig([**kwargs]):

    為日志模塊配置基本信息。

    kwargs 支持如下幾個關鍵字參數
    filename :日志文件的保存路徑。如果配置了些參數,將自動創建一個FileHandler作為Handler;
    filemode :日志文件的打開模式。 默認值為'a',表示日志消息以追加的形式添加到日志文件中。如果設為'w', 那么每次程序啟動的時候都會創建一個新的日志文件;
    format :設置日志輸出格式;
    datefmt :定義日期格式;
    level :設置日志的級別,對低于該級別的日志消息將被忽略
    stream :設置特定的流用于初始化StreamHandler;

    [python] view plaincopy print?
  • import?logging????
  • logging.basicConfig(filename?=?os.path.join(os.getcwd(),?'log.txt'),?/????
  • ????level?=?logging.WARN,?filemode?=?'w',?format?=?'%(asctime)s?-?%(levelname)s:?%(message)s')????
  • logging.debug('debug')??#被忽略????
  • logging.info('info')????#被忽略????
  • logging.warning('warn')????
  • logging.error('error')????
  • #-----?結果????
  • #2009-07-13?21:42:15,592?-?WARNING:?warn????
  • #2009-07-13?21:42:15,640?-?ERROR:?error????
  • import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), / level = logging.WARN, filemode = 'w', format = '%(asctime)s - %(levelname)s: %(message)s') logging.debug('debug') #被忽略 logging.info('info') #被忽略 logging.warning('warn') logging.error('error') #----- 結果 #2009-07-13 21:42:15,592 - WARNING: warn #2009-07-13 21:42:15,640 - ERROR: error logging.getLogger([name])

    創建Logger對象。日志記錄的工作主要由Logger對象來完成。在調用getLogger時要提供Logger的名稱(注:多次使用相同名稱來調用getLogger,返回的是同一個對象的引用。)

    Logger實例之間有層次關系,這些關系通過Logger名稱來體現,如:

    p = logging.getLogger("root")

    c1 = logging.getLogger("root.c1")

    c2 = logging.getLogger("root.c2")

    Note:

    1. p是父logger, c1,c2分別是p的子logger。c1, c2將繼承p的設置。

    2. 如果省略了name參數, getLogger將返回日志對象層次關系中的根Logger。

    logging.setLoggerClass(klass)

    logging.getLoggerClass()

      獲取/設置日志類型。用戶可以自定義日志類來代替系統提供的logging.Logger類。

    logging.getLevelName(lvl)

      獲取日志級別對應的名稱。

    logging.shutdown()

      當不再使用日志系統的時候,調用該方法,它會將日志flush到對應的目標域上。一般在系統退出的時候調用。

    皮皮blog



    Logger對象方法和屬性

    通過調用logging.getLogger(name)來創建,有如下常用的方法和屬性:

    Logger.setLevel(lvl):

    設置日志的級別。對于低于該級別的日志消息將被忽略。setLevel方法的例子:

    [python] view plaincopy print?
  • #coding=gbk????
  • import?logging????
  • logging.basicConfig(filename?=?os.path.join(os.getcwd(),?'log.txt'),?level?=?logging.DEBUG)????
  • log?=?logging.getLogger('root.test')????
  • log.setLevel(logging.WARN)??#日志記錄級別為WARNNING????
  • log.info('info')????#不會被記錄????
  • log.debug('debug')??#不會被記錄????
  • log.warning('warnning')????
  • log.error('error')??
  • #coding=gbk import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root.test') log.setLevel(logging.WARN) #日志記錄級別為WARNNING log.info('info') #不會被記錄 log.debug('debug') #不會被記錄 log.warning('warnning') log.error('error')

    Logger.debug(msg [ ,*args?[, **kwargs]])

    記錄DEBUG級別的日志信息。參數msg是信息的格式,args與kwargs分別是格式參數。

    [python] view plaincopy print?
  • import?logging????
  • logging.basicConfig(filename?=?os.path.join(os.getcwd(),?'log.txt'),?level?=?logging.DEBUG)????
  • log?=?logging.getLogger('root')????
  • log.debug('%s,?%s,?%s',?*('error',?'debug',?'info'))????
  • log.debug('%(module)s,?%(info)s',?{'module':?'log',?'info':?'error'})????
  • import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root') log.debug('%s, %s, %s', *('error', 'debug', 'info')) log.debug('%(module)s, %(info)s', {'module': 'log', 'info': 'error'})

    Logger.info(msg[ , *args[ , **kwargs]] )

    Logger.warnning(msg[ , *args[ , **kwargs]] )

    Logger.error(msg[ , *args[ , **kwargs]] )

    Logger.critical(msg[ , *args[ , **kwargs]] )

      記錄相應級別的日志信息。參數的含義與Logger.debug一樣。

    Logger.log(lvl, msg[ , *args[ , **kwargs]] )

    記錄日志,參數lvl用戶設置日志信息的級別。參數msg, *args, **kwargs的含義與Logger.debug一樣。

    Logger.exception(msg[, *args])?

      以ERROR級別記錄日志消息,異常跟蹤信息將被自動添加到日志消息里。Logger.exception通過用在異常處理塊中,如:

    [python] view plaincopy print?
  • import?logging????
  • logging.basicConfig(filename?=?os.path.join(os.getcwd(),?'log.txt'),?level?=?logging.DEBUG)????
  • log?=?logging.getLogger('root')????
  • try:????
  • ????raise?Exception,?'this?is?a?exception'????
  • except:????
  • ????log.exception('exception')?#異常信息被自動添加到日志消息中????
  • import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root') try: raise Exception, 'this is a exception' except: log.exception('exception') #異常信息被自動添加到日志消息中 Logger.addFilter(filt)

    Logger.removeFilter(filt)

      添加/移除日志消息過濾器。

    Logger.addHandler(hdlr)

    Logger.removeHandler(hdlr)

      添加/移除日志消息處理器。

    Logger.makeRecord(name, lvl, fn, lno, msg, args, exc_info[, func, extra])

      創建LogRecord對象。日志消息被實例為一個LogRecord對象,并在日志類內處理。

    [ Python模塊學習 ---- logging 日志記錄(一)]

    from:http://blog.csdn.net/pipisorry/article/details/45151825

    總結

    以上是生活随笔為你收集整理的操作系统服务:logging日志记录模块的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。