8

私はPythonでのログインについて学んでいるので、この特定の出力を取得したときに行をフォーマットする部分がソースコードのどこにあるかを調べようとしています: "GET /dashboard/ HTTP/1.1" 200 249176? また、249176 とはどういう意味ですか?

問題はありません。この質問は私の好奇心を満たすためのものです。

このログレコードのフォーマッタを本当に探しています。また、これがどのログハンドラーから来ているのかもわかりません (おそらくこれはロギングモジュールから来ているのではなく、単なる印刷コマンドです)。ソース コードを検索しましたが、これがどこから来ているのかわかりませんでした。ソースへのリンクが必要です。

コードを実行すると、次のようになります。

September 05, 2013 - 05:38:50
Django version 1.5.1, using settings 'dapi.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[05/Sep/2013 05:38:57] "GET /dashboard/ HTTP/1.1" 200 249176
[05/Sep/2013 05:38:58] "GET /static/plugins/uniform/css/uniform.default.css HTTP/1.1" 304 0
[05/Sep/2013 05:38:58] "GET /static/plugins/bootstrap-daterangepicker/daterangepicker.css HTTP/1.1" 304 0
4

1 に答える 1

7

この数値は、応答コンテンツの長さ、つまり送信されたバイト数です。

この出力は基本的に、次のようにdjango の wsgiref の simple_server (および BaseHTTPServer に基づいています)から取得ますclass WSGIRequestHandler( source )。

$ cat django/core/servers/basehttp.py

   ... ignored here ...

class WSGIRequestHandler(simple_server.WSGIRequestHandler):

    def log_message(self, format, *args):
        
        ...... the access log comes here ......

        # sys.stderr.write(msg)
        # level(format, *args, extra=extra)

log_request()関数は、実際には内部でコードとコンテンツのサイズを記録しています:

log_request([コード[, サイズ]])

受け入れられた (成功した) 要求をログに記録します。code は、応答に関連付けられた数値の HTTP コードを指定する必要があります。応答のサイズが利用可能な場合は、サイズ パラメータとして渡す必要があります。

興味がある場合は、BaseHTTPServerpypy の実現をご覧ください: https://bitbucket.org/pypy/pypy/src/9d88b4875d6e/lib-python/2.7/BaseHTTPServer.py

以下も参照してください。

于 2013-09-05T10:54:45.453 に答える