私はPythonでlogging
モジュールを使用して、デバッグとエラーメッセージを書き込みます。ファイルハンドラのロギングレベルとPythonでの表示
logging.DEBUG
以上のすべてのメッセージをファイルに書きたいと思います。
しかし、私はlogging.WARNING
以上のメッセージしか印刷しません。
Logger
とFileHandler
の1つを使用すれば可能ですか?
私はPythonでlogging
モジュールを使用して、デバッグとエラーメッセージを書き込みます。ファイルハンドラのロギングレベルとPythonでの表示
logging.DEBUG
以上のすべてのメッセージをファイルに書きたいと思います。
しかし、私はlogging.WARNING
以上のメッセージしか印刷しません。
Logger
とFileHandler
の1つを使用すれば可能ですか?
ハンドラは簡単に作成して追加することができるので、2つのハンドラを使用する方が良いでしょう。しかし、何らかの理由で1つに固執したい場合は、Python logging cookbookには、コンソールとファイルの両方にロギングすることができますが、さまざまなレベルでロギングすることができます。 )。これは、しかし、単一StreamHandler
なくFileHandler
以外でそれを行います
import logging
# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='/temp/myapp.log',
filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)
# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')
# Now, define a couple of other loggers which might represent areas in your
# application:
logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')
logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')
編集:(このコードは依然として2つのハンドラを生成したコメントで説明したが、一の構成にbasicConfigの使用を介して「隠し」という) 。両方を明示的に作成することを強くお勧めします。
いいえファイルとスクリーン出力は、2つのハンドラが必要であることを意味します。
1つのハンドラでは、現在、ファイルと画面の両方に書き込んでいます。しかし、両方とも同じレベル(logging.DEBUG)です。 – cssndrx
@cssndrx: "1つのハンドラで、現在ファイルと画面の両方に書き込んでいます。"私はそれが理解しにくいことがわかります。 **これを実現するために使用しているロギング設定を含めるために**質問を**更新してください。 –
@eryksun:多くのことを「行うことができます」。実際に何をしているのかを確認する必要があります。 –
これはまだ2つのハンドラです。あなただけが 'FileHandler'の作成を' basicConfig(...) 'でマスクしましたが、どちらも明示的に作成したいと思います。 – plundra
あなたはもちろんそうです。しかし、私はこれを似たように思っていましたが、1つのロガーだけで2箇所に出力していると言いました。私はあなたの他の点でもあなたに同意する必要があります:それは明確に両方のハンドラを明示的にIMO宣言するためにはっきりと明瞭です。 – bdeniker