Форум сайта python.su
Всем привет,
Кто знает как отфильтровать логи так, чтобы в 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
Офлайн
Средствами ОС. Как такой вариант:
./manage.py runserver > /tmp/output.log 2>&1
tail -f /tmp/output.log | grep -v static
Офлайн
Вот это серьезный подход, я даже не подумал, что можно так далеко зайти
Но все несколько проще - я должен был упомянуть, что мне при отладке всего лишь хотелось бы убрать ненужные записи в консоли. Но спасибо за ваш совет - радикальное и, главное, действенное решение.
FishHookИли можно хендлер настроить на запись в файл../manage.py runserver > /tmp/output.log 2>&1
Офлайн
djangofan
вы бы хоть ОС указали. Дело в том что правка вывода в консоли, без правок исходников джанги думаю невозможна ( это я именно о команде manage.py runserver,а не о уровне ОС )
Офлайн
JOHN_16Не совсем понимаю о чем вы говорите (править исходники джанги?? ), ну допустим OS X.
djangofan
вы бы хоть ОС указали. Дело в том что правка вывода в консоли, без правок исходников джанги думаю невозможна ( это я именно о команде manage.py runserver,а не о уровне ОС )
Офлайн
Смысл в том, что средствами Django это не реализуется (ключ –verbosity не работает в сочетании с runserver) и это нужно делать (если очень нужно) средствами вашей конкретной OS или IDE (в PyCharm есть плагин).
Офлайн
Собственно, вот весь патч, замени этим кодом свой 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)
Офлайн