Внедрение имени пользователя / ИД пользователя на уровне приложения в журнал nginx / Apache - PullRequest
8 голосов
/ 25 июля 2011

Есть ли способ ввести имя пользователя или идентификатор уровня приложения (в данном случае, имя пользователя или идентификатор django) в журнал Apache или ngnix?Обратите внимание, что я не спрашиваю об имени пользователя HTTP-аутентификации.

Ответы [ 3 ]

14 голосов
/ 20 февраля 2012

В настоящее время я использую короткое пользовательское промежуточное ПО для добавления этих данных в заголовки ответа, как показано ниже:

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

Имея это в виду, вы можете просто использовать %{X-Remote-User-Name}o и %{X-Remote-User-Id}o в вашей конфигурации Apache (или аналогично для nginx) и получать информацию прямо в ваши журналы.

2 голосов
/ 26 июля 2011

Мы делаем что-то вроде этого, только мы говорим Apache, чтобы он сохранял сессионный cookie-файл Django.

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

Это своего рода двухэтапный процесс сопоставления идентификатора сеанса с пользователем, но его легко реализовать. Вы могли бы сделать что-то подобное, установив cookie с явным идентификатором в нем, а затем используя собственный журнал для его захвата.

0 голосов
/ 10 сентября 2016

Если у вас есть cookie для имени пользователя, скажем «uname», вы можете добавить% {uname} C, например:

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

Здесь X-Forwarded-For - IP-адрес пользователя.Мой сервер приложений - tomcat8 с безопасностью Spring.Вывод выглядит так:

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...