Có cách nào để nhập tên người dùng hoặc id cấp ứng dụng (trong trường hợp này, tên người dùng hoặc id django) vào nhật ký Apache hoặc ngnix không? Lưu ý rằng tôi không hỏi về tên người dùng xác thực HTTP.Tiêm tên người dùng cấp ứng dụng/userid vào nhật ký nginx/Apache
Trả lời
Chúng tôi làm một cái gì đó như thế này, chỉ có chúng tôi nói với Apache để lưu trữ các cookie sessionid Django.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{sessionid}C" withsession
CustomLog logs/example.com-access_log withsession
Đây là quy trình gồm hai bước để ánh xạ sessionid cho người dùng nhưng dễ thực hiện. Bạn có thể làm một cái gì đó tương tự bằng cách thiết lập một cookie với ID rõ ràng trong nó và sau đó sử dụng nhật ký tùy chỉnh để nắm bắt nó.
Tôi hiện đang sử dụng một trung gian tùy chỉnh ngắn để thêm dữ liệu này để tiêu đề phản ứng, như sau:
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
Với điều này tại chỗ, bạn chỉ có thể sử dụng %{X-Remote-User-Name}o
and %{X-Remote-User-Id}o
trong cấu hình Apache của bạn (hoặc tương tự cho nginx) và nhận thông tin trực tiếp vào nhật ký của bạn.
Nếu bạn có một cookie cho tên người dùng, nói "uname", bạn có thể thêm% {uname} C, như thế này:
LogFormat "%{X-Forwarded-For}i %{uname}C %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Ở đây X-Forwarded-For là địa chỉ dùng ip. Máy chủ ứng dụng của tôi là tomcat8 với bảo mật mùa xuân. Đầu ra như sau:
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. Cách nhận EventLog để ghi tên người dùng vào Nhật ký sự kiện Window?
- 2. Tiêm một tài khoản người dùng vào mySQL
- 3. Log4j: Nhiều nhật ký, cấp độ và ứng dụng
- 4. WSGI/Django: chuyển tên người dùng về Apache cho nhật ký truy cập
- 5. PHP Tiêm trong phiên người dùng khác
- 6. Thêm thuộc tính tên vào 'Người dùng` trong Devise
- 7. Tiêm ứng dụng Log4J vào ứng dụng Grails
- 8. Người dùng Facebook hủy cấp phép ứng dụng
- 9. Ứng dụng .NET cho mỗi máy/người dùng cấp phép
- 10. Django, đăng ký người dùng với tên và họ?
- 11. Giới hạn ký tự trên Instagram Tên người dùng
- 12. phân cấp ghi nhật ký so với trình ghi nhật ký gốc?
- 13. Đăng ký người dùng CouchApp
- 14. Cập nhật giao diện người dùng ứng dụng Windows Store
- 15. ghi vào nhật ký IIS từ một ứng dụng ASP.NET
- 16. Bắt người dùng nhập vào
- 17. capistrano một tên người dùng cho nhiều người dùng
- 18. UPN - Tên người dùng chính
- 19. signalR - nhận tên người dùng
- 20. Ghi nhật ký Python: thông báo tin nhắn cấp dưới mức nhật ký hiện tại
- 21. Canonicalisation của tên người dùng
- 22. Xác thực tên người dùng Skype
- 23. Cách @Validate tên người dùng duy nhất vào mùa xuân?
- 24. Buộc cập nhật ứng dụng thông qua thị trường, như thể người dùng nhấp vào "Cập nhật"
- 25. email authlogic như tên người dùng
- 26. Ứng dụng đa người dùng ASP.NET
- 27. Rails 4 & Devise - Tên người dùng không được thêm vào cơ sở dữ liệu khi người dùng mới tạo
- 28. Ký tự tên người dùng hợp lệ bằng cách sử dụng nhà cung cấp SQL cho thành viên ASP.NET
- 29. Log4Net định cấu hình cấp nhật ký
- 30. regex cho tên người dùng Twitter
Tuyệt vời, tôi không biết tùy chọn "C" khi ghi nhật ký, điều này có thể hoạt động. – Parand