<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Logging > 譯者:[OSGeo 中國](https://www.osgeo.cn/) 注解 `scrapy.log` 已經不贊成與函數一起使用,而贊成顯式調用Python標準日志記錄。繼續閱讀以了解有關新日志記錄系統的更多信息。 Scrapy 用途 [Python's builtin logging system](https://docs.python.org/3/library/logging.html) 用于事件日志記錄。我們將提供一些簡單的示例來幫助您入門,但對于更高級的用例,強烈建議您仔細閱讀其文檔。 日志記錄是開箱即用的,可以在某種程度上使用中列出的碎片設置進行配置。 [日志記錄設置](#topics-logging-settings) . Scrapy電話 [`scrapy.utils.log.configure_logging()`](#scrapy.utils.log.configure_logging "scrapy.utils.log.configure_logging") 設置一些合理的默認值并在 [日志記錄設置](#topics-logging-settings) 當運行命令時,建議在運行腳本的scrapy時手動調用它,如中所述。 [從腳本中運行Scrapy](practices.html#run-from-script) . ## 日志級別 python的內置日志記錄定義了5個不同的級別,以指示給定日志消息的嚴重性。以下是標準的,按降序排列: 1. `logging.CRITICAL` -對于嚴重錯誤(嚴重性最高) 2. `logging.ERROR` -對于常規錯誤 3. `logging.WARNING` -用于警告消息 4. `logging.INFO` -以獲取信息性消息 5. `logging.DEBUG` -用于調試消息(最低嚴重性) ## 如何記錄消息 下面是如何使用 `logging.WARNING` ```py import logging logging.warning("This is a warning") ``` 在標準的5個級別中,有一個用于發布日志消息的快捷方式,還有一個常規的 `logging.log` 方法,該方法將給定的級別作為參數。如果需要,最后一個示例可以重寫為: ```py import logging logging.log(logging.WARNING, "This is a warning") ``` 除此之外,您還可以創建不同的“記錄器”來封裝消息。(例如,常見的做法是為每個模塊創建不同的記錄器)。這些記錄器可以獨立配置,并且允許層次結構。 前面的示例在后臺使用根記錄器,它是一個頂級記錄器,所有消息都在其中傳播(除非另有規定)。使用 `logging` 幫助程序只是顯式獲取根記錄器的快捷方式,因此這也相當于最后一段代碼: ```py import logging logger = logging.getLogger() logger.warning("This is a warning") ``` 您可以使用不同的記錄器,只需將其名稱 `logging.getLogger` 功能: ```py import logging logger = logging.getLogger('mycustomlogger') logger.warning("This is a warning") ``` 最后,通過使用 `__name__` 變量,用當前模塊的路徑填充: ```py import logging logger = logging.getLogger(__name__) logger.warning("This is a warning") ``` 參見 ```py 模塊日志記錄, ``` 基本日志教程 ```py 模塊日志記錄, ``` 關于伐木工人的進一步文件 ## 從 Spider 記錄 Scrapy提供了 [`logger`](spiders.html#scrapy.spiders.Spider.logger "scrapy.spiders.Spider.logger") 在每個 Spider 實例中,可以這樣訪問和使用: ```py import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['https://scrapinghub.com'] def parse(self, response): self.logger.info('Parse function called on %s', response.url) ``` 這個記錄器是使用 Spider 的名稱創建的,但是您可以使用任何您想要的自定義Python記錄器。例如:: ```py import logging import scrapy logger = logging.getLogger('mycustomlogger') class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['https://scrapinghub.com'] def parse(self, response): logger.info('Parse function called on %s', response.url) ``` ## 日志記錄配置 日志記錄者自己不管理如何顯示通過它們發送的消息。對于此任務,可以將不同的“處理程序”附加到任何記錄器實例,它們將這些消息重定向到適當的目標,例如標準輸出、文件、電子郵件等。 默認情況下,scrappy根據下面的設置為根記錄器設置和配置處理程序。 ### 日志記錄設置 這些設置可用于配置日志記錄: * [`LOG_FILE`](settings.html#std:setting-LOG_FILE) * [`LOG_ENABLED`](settings.html#std:setting-LOG_ENABLED) * [`LOG_ENCODING`](settings.html#std:setting-LOG_ENCODING) * [`LOG_LEVEL`](settings.html#std:setting-LOG_LEVEL) * [`LOG_FORMAT`](settings.html#std:setting-LOG_FORMAT) * [`LOG_DATEFORMAT`](settings.html#std:setting-LOG_DATEFORMAT) * [`LOG_STDOUT`](settings.html#std:setting-LOG_STDOUT) * [`LOG_SHORT_NAMES`](settings.html#std:setting-LOG_SHORT_NAMES) 前兩個設置定義日志消息的目標。如果 [`LOG_FILE`](settings.html#std:setting-LOG_FILE) 設置后,通過根記錄器發送的消息將被重定向到名為 [`LOG_FILE`](settings.html#std:setting-LOG_FILE) 帶編碼 [`LOG_ENCODING`](settings.html#std:setting-LOG_ENCODING) . 如果未設置 [`LOG_ENABLED`](settings.html#std:setting-LOG_ENABLED) 是 `True` ,將在標準錯誤上顯示日志消息。最后,如果 [`LOG_ENABLED`](settings.html#std:setting-LOG_ENABLED) 是 `False` ,將不會有任何可見的日志輸出。 [`LOG_LEVEL`](settings.html#std:setting-LOG_LEVEL) 確定要顯示的最低嚴重性級別,將篩選出嚴重性較低的消息。它的范圍包括 [日志級別](#topics-logging-levels) . [`LOG_FORMAT`](settings.html#std:setting-LOG_FORMAT) 和 [`LOG_DATEFORMAT`](settings.html#std:setting-LOG_DATEFORMAT) 指定用作所有消息布局的格式字符串。這些字符串可以包含中列出的任何占位符 [logging's logrecord attributes docs](https://docs.python.org/2/library/logging.html#logrecord-attributes) 和 [datetime's strftime and strptime directives](https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior) 分別。 如果 [`LOG_SHORT_NAMES`](settings.html#std:setting-LOG_SHORT_NAMES) 設置后,日志將不會顯示打印日志的 Scrapy 組件。默認情況下,它是未設置的,因此日志包含負責該日志輸出的廢料組件。 ### 命令行選項 有一些命令行參數可用于所有命令,您可以使用這些參數來覆蓋有關日志記錄的一些零碎設置。 * ```py --logfile FILE ``` 重寫 [`LOG_FILE`](settings.html#std:setting-LOG_FILE) * ```py --loglevel/-L LEVEL ``` 重寫 [`LOG_LEVEL`](settings.html#std:setting-LOG_LEVEL) * ```py --nolog ``` 集合 [`LOG_ENABLED`](settings.html#std:setting-LOG_ENABLED) 到 `False` 參見 ```py 模塊 ``` 有關可用處理程序的進一步文檔 ### 高級自定義 因為scrapy使用stdlib日志記錄模塊,所以可以使用stdlib日志記錄的所有功能自定義日志記錄。 例如,假設您正在抓取一個返回許多HTTP 404和500響應的網站,并且您希望隱藏像這樣的所有消息: ```py 2016-12-16 22:00:06 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <500 http://quotes.toscrape.com/page/1-34/>: HTTP status code is not handled or not allowed ``` 首先要注意的是一個記錄器名稱-它在括號中: `[scrapy.spidermiddlewares.httperror]` . 如果你得到公正 `[scrapy]` 然后 [`LOG_SHORT_NAMES`](settings.html#std:setting-LOG_SHORT_NAMES) 可能設置為true;設置為false并重新運行爬網。 接下來,我們可以看到消息具有信息級別。為了隱藏它,我們應該為 `scrapy.spidermiddlewares.httperror` 高于信息;信息后的下一級是警告。可以這樣做,例如在 Spider 的 `__init__` 方法: ```py import logging import scrapy class MySpider(scrapy.Spider): # ... def __init__(self, *args, **kwargs): logger = logging.getLogger('scrapy.spidermiddlewares.httperror') logger.setLevel(logging.WARNING) super().__init__(*args, **kwargs) ``` 如果您再次運行此 Spider ,則從 `scrapy.spidermiddlewares.httperror` 日志記錄器將消失。 ## scrapy.utils.log模塊 ```py scrapy.utils.log.configure_logging(settings=None, install_root_handler=True) ``` 初始化Scrapy的日志記錄默認值。 | 參數: | * **settings** (dict, [`Settings`](api.html#scrapy.settings.Settings "scrapy.settings.Settings") object or `None`) -- 用于創建和配置根記錄器處理程序的設置(默認值:無)。 * **install_root_handler** (_bool_) -- 是否安裝根日志記錄處理程序(默認值:true) | | --- | --- | 此功能可以: * 通過python標準日志記錄路由警告和扭曲日志記錄 * 分別將調試和錯誤級別分配給殘缺和扭曲的記錄器 * 如果日志輸出設置為真,則將stdout路由到日志 什么時候? `install_root_handler` 為true(默認值),此函數還根據給定的設置為根記錄器創建處理程序(請參見 [日志記錄設置](#topics-logging-settings) )可以使用替代默認選項 `settings` 爭論。什么時候? `settings` 為空或無,使用默認值。 `configure_logging` 在使用scrappy命令時自動調用,但在運行自定義腳本時需要顯式調用。在這種情況下,不需要使用它,但建議使用它。 如果您計劃自己配置處理程序,仍然建議您調用此函數,通過 `install_root_handler=False` . 請記住,在這種情況下,不會默認設置任何日志輸出。 要開始手動配置日志輸出,可以使用 [logging.basicConfig()](https://docs.python.org/2/library/logging.html#logging.basicConfig) 設置基本根處理程序。這是一個關于如何重定向的示例 `INFO` 或更高的文件消息: ```py import logging from scrapy.utils.log import configure_logging configure_logging(install_root_handler=False) logging.basicConfig( filename='log.txt', format='%(levelname)s: %(message)s', level=logging.INFO ) ``` 參照 [從腳本中運行Scrapy](practices.html#run-from-script) 有關使用scrapy的更多詳細信息。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看