2011-07-25 12 views

答えて

2

私たちはこのようなことをしますが、ApacheにDjangoのsessionid cookieを保存するように指示します。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{sessionid}C" withsession 
CustomLog logs/example.com-access_log withsession 

これはセッションIDをユーザーにマッピングするための2段階のプロセスですが、実装は簡単です。明示的なIDを持つCookieを設定してからカスタムログを使用してそれを取得することで、同様のことを行うことができます。私は現在、以下のように、レスポンスヘッダにこのデータを追加するために、短いカスタムミドルウェアを使用してい

+0

優れていますが、私はロギングの "C"オプションを認識していませんでした。 – Parand

13

class RemoteUserMiddleware(object): 
    def process_response(self, request, response): 
     if request.user.is_authenticated(): 
      response['X-Remote-User-Name'] = request.user.username 
      response['X-Remote-User-Id'] = request.user.id 

     return response 

これにより場所で、あなただけのnginxのためのあなたのApacheの設定で%{X-Remote-User-Name}o and %{X-Remote-User-Id}o(または類似を使用することができます)、情報を直接ログに記録してください。ユーザー名のためにクッキーを使用している場合は

0

は、あなたがこのように、%{のuname} Cを追加することができ、 "のuname" と言う:

ここ
LogFormat "%{X-Forwarded-For}i %{uname}C %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 

X-転送さ-の場合は、ユーザーのIPアドレスです。私のアプリケーションサーバーは、春のセキュリティを持つtomcat8です。出力は次のようになります。

24.xx.xx.xxx user.name - - [09/Sep/2016:19:33:21 -0400] "GET /xxxx HTTP/1.1" 304 - "https://xxx/xxx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" 
関連する問題