49634


### 背景

Pythonでライブラリを作成しています。  
REST APIをラップしたものです。  
`pip isntall`でインストールされることを前提としています。

### 質問

ライブラリ内でデバッグ用にprint文を使っていますが、以下の点で良くないと考えています。

  * デバッグ用の標準出力のON/OFFを切り替えられない

ライブラリでデバッグ用に標準出力したい場合、どのようなコードを書くべきでしょうか？

具体的には、以下のようなコードです。

[code]

    def get_hoge(self):
        if not self.is_authenticated():
            print("not logined")
            self.login()
    
        requests.get("https://hoge.co.jp/hoge")
    
[/code]

### 追記（分からなかったこと）

いろいろなサイトを見て、print文を使うのはよくないということが分かりました。  
しかし標準ライブラリの`http.client.HTTPConnection`では、以下のようにprint文を使っていたので、疑問に思いました。

[code]

    def _read_status(self):
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
        if len(line) > _MAXLINE:
            raise LineTooLong("status line")
        if self.debuglevel > 0:
            print("reply:", repr(line))
    
[/code]

<https://github.com/python/cpython/blob/master/Lib/http/client.py#L260>

また、<https://qiita.com/amedama/items/b856b2f30c2f38665701>
を読みましたがよく分からず、特にloggingとloggerの違いが分かりませんでした。


CC BY-SA 4.0
2018-10-25T01:18:26.080
49632
2018-10-26T02:08:02.180
2018-10-26T02:08:02.180
19524
19524
question
python
Pythonのライブラリで、デバッグ用に標準出力する方法（print文でよい？）


loggerを使いましょう。  
<https://docs.python.org/ja/3/library/logging.html>

使い方については、以下に説明があります  
<https://docs.python.org/ja/3/howto/logging.html>


CC BY-SA 4.0
2018-10-25T01:51:29.467
49634
2018-10-25T01:51:29.467
806
49632
answer