2017-02-03 17 views
2

変数 "log_location"の内容を現在のロガーに追加しようとしています。Flask Python Logging:ファイル内のファイルパスをロギング中にエラーが発生しました

log_location = log_folder_location + os.path.sep + log_file_name 
logger.debug("log location", str(log_location)) 
print "log_location: ",log_location 

これは、それは私が通常のPythonプロンプト にしようとすると、このエラーがで起きていない

log_location: /U01/Nova/Logs/DEV-INT/TEST/validation_20170203-164617-5.log 

に出力しますコンソールに出力しますが、ログにエラーを与え、

Traceback (most recent call last): 
    File "/usr/lib64/python2.6/logging/__init__.py", line 784, in emit 
    msg = self.format(record) 
    File "/usr/lib64/python2.6/logging/__init__.py", line 662, in format 
    return fmt.format(record) 
    File "/usr/lib64/python2.6/logging/__init__.py", line 444, in format 
    record.message = record.getMessage() 
    File "/usr/lib64/python2.6/logging/__init__.py", line 314, in getMessage 
    msg = msg % self.args 
TypeError: not all arguments converted during string formatting 

フラスコを使用すると同じ向きになる

私は試しましたLogging Python stdout to File... with active stdout (backspacing/updating)TypeError: not all arguments converted during string formatting python とこれもtoo Python: Logging TypeError: not all arguments converted during string formatting

しかし、何をすべきか分からなかった。誰かが簡単な言語を使ってこれを説明することはできますか?

+0

どのPythonバージョンを使用していますか?多分ユニコードの問題がありますか?どのタイプがlog_folder_locationとlog_file_nameですか? – bastian

+0

私はあなたのロガー設定が必要です、これはおそらく役立ちます。 –

答えて

3

logger.debug()メソッド呼び出しに引数を1つだけ使用します。私。

Logger.debug(MSG、*引数:のは、ドキュメントから見てみましょう - オートフォーマット機能(私はあなたがこれを必要とすると思うが、完全性のためにしていない)について

logger.debug("log location: " + str(log_location))

、** kwargs)

このロガーでDEBUGレベルのメッセージを記録します。 msgはメッセージフォーマット文字列であり、argsは文字列フォーマット演算子を使用してmsgに をマージする引数です。あなたは、たとえば、最初の引数にテンプレートをフォーマットしたとき(これはあなたが一緒に単一 辞書の引数を指定して、フォーマット文字列内のキーワードを使用することができます を意味することに注意してください。)

ので、複数の引数は便利です

logger.debug('log location: %s', log_location)

+0

はい、これは正しい方法でした。実際には、このコードの上にロガーを使用していましたが、 "、"、printstmtsをlogger.debugに変更すると忘れました...今、私はそれについて考えます。しかし、はい、Thanxはこれで多くの問題を解決します(テスト済み)。 –

関連する問題