web.pyについて出力先を別の出力先に再調整するにはどうすればよいですか? ログファイルのようにするか、あなたはこのようなファイルを印刷することができweb.pyの出力を再調整するには
答えて
コンソール出力print
は、sys.stdout
に送信されます。必要に応じて、このストリームを開いているファイルまたはファイルに似たオブジェクトに置き換えることができます。唯一の要件は、カスタムオブジェクトにwrite()
メソッドがあることです。
元の出力ストリームにアクセスするには、sys.__stdout__
を使用します。
sys.stdout = sys.__stdout__ # Restore stdout
は私には役に立たない。サーバーの出力は次のようになります。 192.168.0.123:52931 - - [27/Aug/2011 11:57:45] "HTTP/1.1 POST/params" - 200 OK 192.168.0.123:52937 - - [ 2011 11:57:47] "HTTP/1.1 POST/params" - 200 OK 192.168.0.123:52942 - - [27/Aug/2011 11:57:49] "HTTP/1.1 POST/params" - 200 OK 192.168.0.123:52947 - - [27/Aug/2011 11:57:50] "HTTP/1.1 POST/params" - 200 OK – Cletrix
私はもう一度やり直して動作します。 tks – Cletrix
'web.httpserver.sys.stderr = MyOutputStream()' プログラムからの他の出力を抑制したくない場合 –
:
file = open("/tmp/test.txt", "wt")
print >> file, "Foobar"
Pythonはまた、ログ機能のためのログモジュールを提供します。
しかし、質問の質は、あなたが出力しようとしているものとその理由を解釈するにはあまりにも多く、したがって良い答えは不可能です。詳細については、質問を編集してみてください。
それは古いスレッドですが、それに実行している人は、このsolution from the web.py cookbook
に興味があるかもしれませんそれは基本的にデフォルトHTTPServerのためにログを制御する方法について説明します。
更新:
別の解決策は、直接web.pyのコードを変更し、推奨hereのように、ファイルにhttpserver.py
で印刷をリダイレクトすることになります。
要求/応答イベントをファイルに記録するには、例をhttp://webpy.org/cookbook/loggingに変更する必要がありました。基本的には、をオーバーロードするWsgiLoggingのインスタンスを渡す(リンクされた例)に加えて、コール関数もオーバーロードする必要があります。
class FileLog(WsgiLog):
def __init__(self, application):
WsgiLog.__init__(
self,
application,
logformat = '[%(asctime)s][%(name)s][%(levelname)s]: %(message)s',
debug = True,
tofile = web.config.log_tofile,
toprint = False,
file = web.config.log_file,
loglevel = logging.DEBUG
)
def __call__(self, environ, start_response):
def hstart_response(status, response_headers, *args):
out = start_response(status, response_headers, *args)
try:
logline=environ["SERVER_PROTOCOL"]+" "+environ["REQUEST_METHOD"]+" "+environ["REQUEST_URI"]+" - "+status
except err:
logline="Could not log <%s> due to err <%s>" % (str(environ), err)
self.logger.info(logline)
return out
return super(FileLog, self).__call__(environ, hstart_response)
web.configファイル変数は、この
[Tue, 01 Apr 2014 17:40:56][wsgilog.log][INFO]: HTTP/1.1 OPTIONS /api/sessions/5399d05f41f0 - 200 OK
[Tue, 01 Apr 2014 17:40:56][wsgilog.log][INFO]: HTTP/1.1 GET /api/sessions/5399d05f41f0 - 200 OK
[Tue, 01 Apr 2014 17:40:56][wsgilog.log][INFO]: HTTP/1.1 GET /api/sessions/5399d05f41f0/tasks/ - 200 OK
[Tue, 01 Apr 2014 17:40:56][wsgilog.log][INFO]: HTTP/1.1 GET /api/sessions/5399d05f41f0/tasks//messages/?timestamp__gt=1396291350 - 200 OK
変更のように、
import sys
import os
import datetime, time
import optparse
import logging
from wsgilog import WsgiLog
if __name__ == "__main__":
parser = optparse.OptionParser()
parser.add_option("--logfile", dest="logfile", default="",
help="OPTIONAL send log messages to specified file instead of std out")
(options, args) = parser.parse_args()
#P Need to "eat" all of the passed in args because webpy will try to interpret them first
sys.argv = []
webpyapp = web.application(urls, locals())
if hasattr(options, "logfile") and options.logfile != '':
web.config.log_file = options.logfile
web.config.log_toprint = False
web.config.log_tofile = True
webpyapp.run(FileLog)
else:
webpyapp.run()
これは、要求イベントと指定されたファイルに応答を記録します私の主な機能に設定されていますFileLoggerの 'logformat'変数を使用して、出力がファイル内で形式化される方法を変更します。
私が知る限り、web.pyフレームワークによって生成されたリクエスト/応答メッセージの出力を抑止する方法はありません。イベントを出力するには、独自のクラス(httpserver.pyのLogMiddleware)を使用します。 FileLoggerは、さまざまなロガーに自身を追加するだけで、LogMiddlewareに代わるものではありません。
ファイルにロギングした後は、stdoutとstderrの出力を/ dev/nullにリダイレクトできます。
./yourapp.py > /dev/null 2> /dev/null
これは役に立って幸運を願っています!
RDP
は、それを取り除くために
web.config.debug = Falseをまだ助けていませんでした。まだいくつかの出力が行われました。ファイル内
コメントアウト行: C:\ Python27 \ Libの\サイト - パッケージ\ウェブ\ httpserver.py
ライン:どのような出力
print >> outfile, utils.safestr(msg) ->
#print >> outfile, utils.safestr(msg)
- 1. バッチファイル出力をテキストファイルに調整する
- 2. GraphMLでXML出力を調整する
- 3. mathematicaで出力を調整する
- 4. CNNへの入力の再調整
- 5. html入力と提出の調整
- 6. Drupalアグリゲーターと調整済み出力
- 7. アンドロイドのTimerを再調整する
- 8. AMPL車の例を再調整する
- 9. RStudioの出力幅を調整する方法Markdown出力(HTMLへ)
- 10. 出力テキストの色をテキストファイルに調整できますか?
- 11. mathematicaで出力を操作する方法を調整するには?
- 12. は、相続人は、ブラウザの再調整
- 13. AWKを使用してコマンドの出力を調整します
- 14. If文がユーザー入力を再調整しない
- 15. MRUnitを使用してテストする前に出力を調整する
- 16. 入力フィールドとadd/minusボタンを使って出力を調整するAngularJS
- 17. Expressはミドルウェアをどのように再調整しますか?
- 18. アンドロイドでビデオの再生速度を調整する方法は?
- 19. iPhone:電話中にアプリの再生音量を調整する
- 20. 再生中にAVPlayerのフレームレートを調整する
- 21. スライダーの位置にカラーを再調整する
- 22. divタグの位置を絶対的に再調整する
- 23. 4xxエラーの同期呼び出しエラー処理を再調整する
- 24. レスポンシブ部門の再調整の問題
- 25. CNN - Conv層の出力を高密度層に再整形
- 26. go1.7ベンダーディレクトリを再調整しない
- 27. ChromeとFirefox間のWebRTC再調整
- 28. Silverlightの有効WCFサービス再調整値
- 29. Kurento Media Serverでの再調整
- 30. 要素を更新した後にjava.util.PriorityQueueを再調整する
? HTML出力はブラウザに送られ、 'print()'出力はコンソールに送られますか? –
コンソールに送信されたprint()出力。 – Cletrix