Найти - Пользователи
Полная версия: Фильтрация логов
Начало » Django » Фильтрация логов
1
djangofan
Всем привет,

Кто знает как отфильтровать логи так, чтобы в DEBUG не писались записи о GET-запросах статики, например в /static/ и в /media/?

[01/Apr/2015 00:39:10] "GET /static/theme/plugins/bootstrap/dist/css/bootstrap.min.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/flexslider/flexslider.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/font-awesome/css/font-awesome.min.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/animate/animate.min.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/css/theme-style.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/css/custom-style.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/js/jquery.js HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/css/colour-green.css HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/bootstrap/dist/js/bootstrap.min.js HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/isotope/dist/isotope.pkgd.min.js HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/imagesloaded/imagesloaded.pkgd.min.js HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/plugins/flexslider/jquery.flexslider-min.js HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/theme/js/script.js HTTP/1.1" 304 0
[01/Apr/2015 00:39:10] "GET /static/js/scripts.js HTTP/1.1" 304 0
FishHook
Средствами ОС. Как такой вариант:
./manage.py runserver > /tmp/output.log 2>&1
 tail -f /tmp/output.log | grep -v static
djangofan
Вот это серьезный подход, я даже не подумал, что можно так далеко зайти

Но все несколько проще - я должен был упомянуть, что мне при отладке всего лишь хотелось бы убрать ненужные записи в консоли. Но спасибо за ваш совет - радикальное и, главное, действенное решение.

FishHook
./manage.py runserver > /tmp/output.log 2>&1
Или можно хендлер настроить на запись в файл.
JOHN_16
djangofan
вы бы хоть ОС указали. Дело в том что правка вывода в консоли, без правок исходников джанги думаю невозможна ( это я именно о команде manage.py runserver,а не о уровне ОС )
djangofan
JOHN_16
djangofan
вы бы хоть ОС указали. Дело в том что правка вывода в консоли, без правок исходников джанги думаю невозможна ( это я именно о команде manage.py runserver,а не о уровне ОС )
Не совсем понимаю о чем вы говорите (править исходники джанги?? ), ну допустим OS X.
inoks
Смысл в том, что средствами Django это не реализуется (ключ –verbosity не работает в сочетании с runserver) и это нужно делать (если очень нужно) средствами вашей конкретной OS или IDE (в PyCharm есть плагин).
FishHook
Собственно, вот весь патч, замени этим кодом свой manage.py c соответствующими правками и будет счастье.

def log_message(self, format, *args):
    msg = "[%s] %s\n" % (self.log_date_time_string(), format % args)
    if "static" in msg:
        return
    if args[1][0] == '2':
        msg = self.style.HTTP_SUCCESS(msg)
    elif args[1][0] == '1':
        msg = self.style.HTTP_INFO(msg)
    elif args[1] == '304':
        msg = self.style.HTTP_NOT_MODIFIED(msg)
    elif args[1][0] == '3':
        msg = self.style.HTTP_REDIRECT(msg)
    elif args[1] == '404':
        msg = self.style.HTTP_NOT_FOUND(msg)
    elif args[1][0] == '4':
        msg = self.style.HTTP_BAD_REQUEST(msg)
    else:
        # Any 5XX, or any other response
        msg = self.style.HTTP_SERVER_ERROR(msg)
    sys.stderr.write(msg)
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWord.settings")
    from django.core.management import execute_from_command_line
    from django.core.servers.basehttp import WSGIRequestHandler
    WSGIRequestHandler.log_message = log_message
    execute_from_command_line(sys.argv)

Надеюсь, что ты как лицо заинтересованное доведешь дело до красивого решения в виде приложения runserver_grep с расширенными возможностями настройки вывода.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB