いいものをつくろう

CTOの日記

python

pythonのパッケージ開発でのロギングはどのようにするべきか

投稿日:

ふと

pythonのパッケージ開発でのロギングはどのようにするべきか

思いました。

how-should-logging-be-used-in-a-python-package

答えは、loggingを使えば良い。

このstackoverflow質問者さんのパッケージはソースコードだとおもうのですが

このように logging.error( とかつかわれていますね。

logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s',
                    level=logging.DEBUG,
                    stream=sys.stdout)

もちろん、こういうことはアプリケーション再度で設定されるべきで

パッケージの開発コードベースでは宣言んしません。

null handerをパッケージ側で設定してあげると、アプリケーション側でdisableすることができるようです。

# This goes into your library somewhere
logging.getLogger('name.of.library').addHandler(logging.NullHandler())
and developers using your library can then disable all logging just for your library by disabling log propagation:

logging.getLogger('name.of.library').propagate = False

 

補足ですが、python-logging-disable-logging-from-imported-modules

を見て改て、logging.infoではなくてlogger = logging.getLogger(__name__)とするのが一般的なようです。

ですのでmodule(file)の各先頭でlogger = logger.getLogger(__name__)とするのが

今私が考える正解です。

 

以上です

-python

Copyright© CTOの日記 , 2020 All Rights Reserved.