アプリケーションレベルのユーザー名またはID(この場合はdjangoユーザー名またはID)をApacheまたはngnixログに挿入する方法はありますか? HTTP認証ユーザー名については尋ねていないことに注意してください。nginx/Apacheログにアプリレベルのユーザー名/ユーザーIDを入力
8
A
答えて
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を設定してからカスタムログを使用してそれを取得することで、同様のことを行うことができます。私は現在、以下のように、レスポンスヘッダにこのデータを追加するために、短いカスタムミドルウェアを使用してい
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"
関連する問題
- 1. ggplotへのユーザー入力名
- 2. ユーザー入力名回年齢
- 3. ユーザーに正しいユーザー名を入力する方法usernameパスワードバリデータ
- 4. vue.js入力検索でユーザーの動的なユーザー名を検索
- 5. ユーザー入力ファイル名を開くファイル
- 6. C - ユーザー入力ファイル名を使用
- 7. Pythonでユーザー入力ディレクトリ名を作成
- 8. googleads.g.doubleclick.netユーザー名とパスワードの入力
- 9. MVC 4自動入力ウィンドウのユーザー名
- 10. 第三者のアプリレベルの仮入力
- 11. ユーザー入力をCXに入力
- 12. ユーザー入力
- 13. ユーザー入力
- 14. ユーザー入力
- 15. CユーザーによるGUIユーザー入力
- 16. ログインフォームの後のラベルにユーザー名とユーザーIDを表示
- 17. ユーザー入力のパスインジェクション
- 18. スカラ:ユーザーの入力
- 19. タイマーカウントダウンのユーザー入力
- 20. ユーザーIDのユーザー名をチタンに保存する方法
- 21. ユーザー名でlinuxのユーザーIDを取得するには?
- 22. ユーザー入力を配列に
- 23. Asp.net FormsAuthenticationユーザー名、ID、GUID
- 24. ASP.NET ID 2と匿名ユーザー
- 25. モノデベロッパーC#ユーザー入力
- 26. Talendユーザー入力フォーム
- 27. C#XNA - ユーザー入力
- 28. Qt3d qmlユーザー入力
- 29. 取得ユーザー入力
- 30. カプセル化(ユーザー入力)
優れていますが、私はロギングの "C"オプションを認識していませんでした。 – Parand