タイトル長くてすみません。タイトル通りで使い方をただメモしたかっただけです。
# これはダメ
>>> logging.basicConfig(format="[str.format ver] :{} / {}".format(levelname, message))
NameError Traceback (most recent call last)
<ipython-input-15-6b4e7d3e1ac2> in <module>()
----> 1 loghandle=logging.basicConfig(format="str.format log :{} / {}".format(levelname, message))
NameError: name 'levelname' is not defined
# まあそうだよね・・・
# これで出来ました
>>> logging.basicConfig(format="[str.format ver] :{levelname} - {message}", style="{")
>>> logging.warn("warning!!")
[str.format ver] :WARNING - warning!!
basicConfigというかFormatterメソッドなんですが、styleパラメータに"{"を設定すれば使えるようです。
このstyle属性は3.2から追加されたものらしいので、最近のpyhton3でないとダメとのこと。
16.7. logging — Python 用ロギング機能 — Python 3.4.1 ドキュメント -logging.Formatter
最近formatメソッドの書式に慣れてしまってたのでいちいち%演算子に戻るのが面倒だったのでこうなりました。
ちなみにdatefmtで日付のカスタムも出来ますが、str.formatメソッドで出来ませんでした。
>>> logging.basicConfig(format="{asctime} [str.format ver] :{levelname} - {message}", datefmt="{Y}-{m}-{d} {H}:{M}:{S}", style="{")
>>> logging.warn("warning!!")
{Y}-{m}-{d} {H}:{M}:{S} [str.format ver] :WARNING - warning!!
あとこれを調べていて知ったのですが、string.templateというテンプレート方式もあるらしいです。2.4の頃からあるらしいのですが、これ知らなかった。。。