46

ログに含まれる情報を解読しようとしています (ログの設定はデフォルトのフォーマッタを使用しています)。ドキュメントには次のように記載されています。

レコードのフォーマットを行います - フォーマッタが設定されている場合は、それを使用します。それ以外の場合は、モジュールの既定のフォーマッタを使用します。

ただし、このデフォルト形式が何であるかを実際に述べているリファレンスは見つかりません。

4

5 に答える 5

72

デフォルトのフォーマットは次の場所にあります

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"  

Formatコードは、それをカスタマイズする方法を教えてくれます。カスタマイズ方法の一例を次に示します。

import sys
import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
    datefmt="%d/%b/%Y %H:%M:%S",
    stream=sys.stdout)

logging.info("HEY")

結果は次のとおりです。

[26/May/2013 06:41:40] INFO [root.<module>:1] HEY
于 2013-05-26T13:42:45.207 に答える
7
import logging
print(logging.BASIC_FORMAT)

古いスレッドですが、これはクエリ「python logging default format」の Google 検索結果で最初に表示されるため、回答を追加する必要があると考えました。

また、自分でこれを発見するに至った経緯について質問するコメントもありました。これは当然のことです:

import logging
print(dir(logging))

BASIC_FORMAT はそこにあります。実際、私の場合、結果の最初のエントリです。

于 2017-04-06T17:32:12.300 に答える
2

デフォルトは%(levelname)s:%(name)s:%(message)s

import logging
logging.error("Some error")
print "fmt: " , logging.root.handlers[0].formatter._fmt
# ERROR:root:Some error
# fmt:  %(levelname)s:%(name)s:%(message)s
于 2013-05-26T09:35:38.420 に答える