2016-12-25 9 views
0

Pythonの初心者では、@classmethodの前にユーザはいません。 何らかの理由でloggerメソッドがshutdown_webdriver関数内で実行されないという問題があります。@classmethodのPython 3.5 logger.info

import time 
import logging 

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
from selenium.webdriver.common.proxy import Proxy 


class WebBrowserSettings(object): 
    logger = logging.getLogger(__name__) 

    def __init__(self, proxy): 
     self.proxy = proxy 

    def setup_remote_chromedriver(self): 

     **irrelevant code** 

     return browser 

    @classmethod 
    def shutdown_webdriver(cls, browser): 
     print('here') 
     cls.logger.info("Shutting down 1") 
     for index in range(0, 20): 
      error_check = 0 
      try: 
       time.sleep(5) 
       browser.quit() 
      except Exception: 
       error_check = 1 

      if error_check == 0: 
       break 

     cls.logger.info("Browser is down") 

私のコンソール出力にはprint( 'here')メッセージしか表示されません。

P.S.ロギング設定はセットアップされ安定しており、他のクラスでも動作します。

+0

'logger'がNoneかどうかチェックしましたか? –

+0

はありません。ロガーは100%動作しています。いくつかの構造はおそらく.. 現在 '@ classmethod'に' logger'をインスタンス化して動作させています – user1935987

答えて

0

ここに示すコードは問題ありません。 cls.logger.infocls.logger.errorに置き換えたときにログ出力が表示されると思われます。これは、ロギングシステムの設定に問題が起こっていることを意味します。これもここには表示されていない部分なので、何がうまくいかないのか分かりません。

いずれの場合でも、ロガー・インスタンスのインスタンス化前にレベルINFOを表示するようにロギング・システムが構成されていることを確認する必要があります。 コードが解析された時点で、他のコードがこのモジュールをインポートしたときなどに、ロガーがインスタンス化されます。 これは、このモジュールをインポートする前にロギングシステムを設定する必要があることを意味します。

+0

同じですが、問題は見えません:)しかし、ログは適切に設定されています。このクラスの問題のみ。 – user1935987

+0

'cls.logger.info'を 'cls.logger.error'に置き換えることでこれを確認できますか?まだstdoutにログメッセージはありませんか?私はかなり確信しているでしょう... – roman

+0

あなたは確かに.error/.info/.debug(ロギング設定の 'level = DEBUG')で試してみました。とにかく私はこの1つのクラスだけでこのprobを参照してください...客観的に、私の "悪い"修正は私のために大丈夫です。 – user1935987