EDIT空白スペースは、サブ関数の深いどこかのコード内の不明なステートメントによって追加されました。これが削除されると、ログ出力はうまくいきます...したがって、私は主語を閉じます。ロギングモジュールは、コンソール出力に先行スペースを追加します。
コンソールのログをstderr
にリダイレクトすると、これを簡単に強調表示することができます。
私は私のプロジェクトからログイン処理するためのPython logging
モジュール、ファイルと標準出力をログに記録するには、両方を使用しています。これは設定ファイルに基づいて、さまざまなロギングレベルで非常にうまく動作します。
問題:標準出力では、行は空白で始まります。これは、2つの文章の間に経過した時間(1秒あたり1つの空間のようなもの)と関連しているようです。
確かに、設定ファイルをロギングする際にエラーが発生しました。私は実際にはそれほど簡単ではありませんが、どこで識別できるかはわかりません。すべてのログレベルを同じに設定すると、何も変更されません。誰か助けてもらえますか?
レポートファイルの内容:
2011-10-11 17:25:43,911 : INFO : P-Tool : P-Tool launched from command-line
2011-10-11 17:25:43,927 : INFO : P-Tool : Starting instantiation of tools
2011-10-11 17:25:43,959 : INFO : P-Tool : Initialization completed
2011-10-11 17:25:43,959 : INFO : P-Tool : Execution started
2011-10-11 17:25:44,973 : WARNING : P-Tool : Process Project File CRC check FAILED, [...]
2011-10-11 17:25:44,973 : INFO : P-Tool : XSD version check passed: Process [...]
2011-10-11 17:25:44,973 : ERROR : P-Tool : XSD validation FAILED for Process[...]
2011-10-11 17:25:44,973 : INFO : P-Tool : Process Call found, ID: 1, short name: [...]
2011-10-11 17:25:44,973 : INFO : lib.tools.I-Tool : importing AC_ICD: [...]
2011-10-11 17:25:52,983 : INFO : lib.tools.I-Tool : importing AC_ICD: [...]
2011-10-11 17:26:00,009 : INFO : lib.tools.V-Tool : verifying project [...]
標準出力:
INFO : P-Tool : P-Tool launched from command-line
INFO : P-Tool : Starting instantiation of tools
INFO : P-Tool : Initialization completed
INFO : P-Tool : Execution started
WARNING : P-Tool : Process Project File CRC check FAILED, [...]
INFO : P-Tool : XSD version check passed: Process Project [...]
ERROR : P-Tool : XSD validation FAILED for Process Project [...]
INFO : P-Tool : Process Call found, ID: 1, short [...]
INFO : lib.tools.I-Tool : importing AC_ICD: [...]
INFO : lib.tools.I-Tool : importing AC_ICD: [...]
INFO : lib.tools.V-Tool : verifying project [...]
ERROR : P-Tool : no CRC found in "Project\Rep[...]
INFO : lib.tools.G-Tool : generating binary for [...]
ERROR : P-Tool : no CRC found in "Project\Reports[...]
INFO : lib.tools.LAF Writer : LAF writing started, [...]
(行が空白で始まっているかに注意してください)
ここでは、私はlogging
を設定する方法ですモジュール:
# in the module p_tool.py
# defining the logging
LOG_CONFIG = 'logging.conf'
logging.config.fileConfig(os.path.join(os.path.split(__file__)[0],
'resources',
LOG_CONFIG))
logger = logging.getLogger('P-Tool')
[...]
# adding some message
logger.info('message to logger')
およびロギング構成ファイル:
# logging.conf
[loggers]
keys=root,P-Tool
[handlers]
keys=consoleHandler,logFileHandler
[formatters]
keys=consoleFormatter,fileFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler,logFileHandler
[logger_P-Tool]
level=DEBUG
handlers=consoleHandler,logFileHandler
qualname=P-Tool
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=consoleFormatter
args=(sys.stdout,)
[handler_logFileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('p_tool_log.txt','w')
[formatter_fileFormatter]
format=%(asctime)s : %(levelname)s : %(name)s : %(message)s
datefmt=
[formatter_consoleFormatter]
format=%(levelname)s : %(name)s : %(message)s
datefmt=
あなたのプログラムには他に 'print'sはありませんか?ロギングモジュールと同時にSTDOUTに印刷している場合、それらは混在します。 – Chriszuma
コンソールフォーマッタのフォーマットを、フォーマットで使用しないときに指定する理由は何ですか? – Velociraptors
'sys.stderr'に変更してみてください - コンソール出力に何か変更がありますか?もしそうなら、Chriszumaはsys.stdoutへのあなたのプログラムの書いている他のものについて正しいかもしれません –