對Python環境變量進行述說介紹
Python環境變量具有一個強大靈活的工業級的記錄模塊,該模塊能夠在不同的層次把消息記錄到任意位置,例如內存、文件、網絡和控制臺等。要想使用該模塊,需要進行必要的配置。
對于那些想要提供日志記錄的程序庫,可以選擇讓用戶使用程序庫的默認配置(這樣不會打擾用戶),或者選擇讓用戶親自配置日志記錄功能。當然,如果您是一位程序庫開發人員的話,***替用戶搭理好一切,而不是去惹他們討厭。那么,你的程序庫配置本身應該做哪些設置呢?
這里有兩個常見的選項:將記錄寫到一個文件中,或者寫到控制臺。不過這兩個選項都會導致混亂。直到Python環境變量,***實踐要求程序庫開發人員包含一個小型的do-nothing處理程序。
并配置它的logger使用這個處理程序。Python 3.1將這種NullHandler作為記錄模塊本身的一部分。下面我們舉例進行說明。假設您的lib.py模塊中含有下面所示的程序庫代碼。這里有一個接收日志記錄處理程序的init()函數,但是默認時接收的卻是新的NullHandler。
之后,將logger對象設置為使用提供的logger(或者默認的logger)。日志記錄處理程序是一個對象,它確定把記錄輸出到何處。這里的示例函數a_function_that_uses_logging()調用了全局logger對象,并記錄一些有趣的消息:
- import HTMLParser
- import urllib
- import sys
- #定義HTML解析器
- class parseLinks(HTMLParser.HTMLParser):
- def handle_starttag(self, tag, attrs):
- if tag == 'a':
- for name,value in attrs:
- if name == 'href':
- print value
- print self.get_starttag_text()
- #創建HTML解析器的實例
- lParser = parseLinks()
- #打開HTML文件
- lParser.feed(urllib.urlopen( \
- "http://www.python.org/index.html").read())
- lParser.close()
為此,我們的代碼將此處理程序配置為每個日志文件只保存250字節內容,并且最多維護5個備份文件。***,代碼調用a_function_that_uses_logging()函數。下面的應用程序代碼配置了一個回旋式文件處理程序,這是一個改進過的處理程序,可用于長期運行的系統,因為這些系統會生成大量的日志信息。
此處理程序會限制每個文件中日志記錄信息的數量,并且還保持了一個備份文件的預設數量。這些限制能夠保證日志文件不會超過規定尺寸,并且總是保留(達到此限制之前的)***的日志記錄信息。
這種做法很好,因為有時候用戶并不關心記錄的消息——他們想要的是在調用函數時無需配置logger,并且這些日志不會耗盡他們的硬盤空間,也不會出現滿屏的消息。這時,NullHandler正好可以派上用場。
下面的代碼所做的事情與上面一致,不過它并沒有配置日志記錄處理程序,所以也就得不到日志記錄結果。注意,這里沒有導入logging和logging.handlers,并且也沒有確定使用哪個處理程序以及如何對Python環境變量說明。
【編輯推薦】