2011-10-11 14 views
1

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= 
+0

あなたのプログラムには他に 'print'sはありませんか?ロギングモジュールと同時にSTDOUTに印刷している場合、それらは混在します。 – Chriszuma

+0

コンソールフォーマッタのフォーマットを、フォーマットで使用しないときに指定する理由は何ですか? – Velociraptors

+1

'sys.stderr'に変更してみてください - コンソール出力に何か変更がありますか?もしそうなら、Chriszumaはsys.stdoutへのあなたのプログラムの書いている他のものについて正しいかもしれません –

答えて

1

上に書いたとおり、私は私のコードに2つのミスを犯しました。したがって、loggingモジュールまたはこれで作成した構成に問題はありません。

空白は、コード内で、サブ関数の深いどこかの曖昧な文で追加されました。これが削除されると、ログ出力はうまくいきます...したがって、私は主語を閉じます。

コンソールのログをstderrにリダイレクトすると、これを簡単に強調表示することができます。

関連する問題