2013-05-26 5 views
16

ログに含まれている情報を解読しようとしています(ロギング設定はデフォルトのフォーマッタを使用しています)。 documentationの状態:デフォルトのPythonロギングフォーマッタは何ですか

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

しかし、実際にこのデフォルトの形式が何であるかを示す参照は見つかりません。

おかげ

+0

ドキュメントにそのようなことが示されているようです。 –

答えて

24

デフォルトのフォーマットがあるhere位置しています:

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

Formatコードは、あなたがそれをカスタマイズする方法を教えてくれます。ここでは、カスタマイズ方法の例を示します。

import logging 
logging.basicConfig(
    level=logging.DEBUG, 
    format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s", 
    datefmt="%H:%M:%S", stream=sys.stdout) 
logging.info("HEY") 
になり

[26/May/2013 06:41:40] INFO [root.<module>:1] HEY 
+0

ロギングのBASIC_FORMAT属性をどのように知っていますか?あなたの例では、すべてが – iMath

+1

の 'log'が定義されていません。おそらく 'ロギング 'と呼ばれるべきです。 – Ztyx

1

それはlogging/__init__.pyの源である:

_defaultFormatter = Formatter() 

デフォルトのフォーマット文字列は、同様のソースである%(message)s、次のとおりです。

if fmt: 
    self._fmt = fmt 
else: 
    self._fmt = "%(message)s" 
1

デフォルトではあると思われます%(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 
+0

ソースコードのデフォルトではなく、現在のフォーマッタをチェックする方法がわかります。 – jjj

0
import logging 
print(logging.BASIC_FORMAT) 

旧スレッドが、これは、クエリ「のpythonログのデフォルトフォーマット」のための私のGoogle検索結果の最初に来るので、私は、私は追加する必要がありますと思った私回答。

また、いくつかのコメントは、これをどのように自分自身で発見することができたかについて尋ねました。

import logging 
print(dir(logging)) 

BASIC_FORMATは、実際に、それは私の場合は、結果の最初のエントリがあり、そこにあります。ここで行うには自然なことです。