Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 1, 2015 01:42:20

djangofan
Зарегистрирован: 2015-04-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация логов

Всем привет,

Кто знает как отфильтровать логи так, чтобы в 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

Офлайн

#2 Апрель 1, 2015 06:18:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Фильтрация логов

Средствами ОС. Как такой вариант:

./manage.py runserver > /tmp/output.log 2>&1
 tail -f /tmp/output.log | grep -v static



Офлайн

#3 Апрель 1, 2015 10:05:20

djangofan
Зарегистрирован: 2015-04-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация логов

Вот это серьезный подход, я даже не подумал, что можно так далеко зайти

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

FishHook
./manage.py runserver > /tmp/output.log 2>&1
Или можно хендлер настроить на запись в файл.

Офлайн

#4 Апрель 1, 2015 13:46:52

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Фильтрация логов

djangofan
вы бы хоть ОС указали. Дело в том что правка вывода в консоли, без правок исходников джанги думаю невозможна ( это я именно о команде manage.py runserver,а не о уровне ОС )



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Апрель 1, 2015 14:28:02

djangofan
Зарегистрирован: 2015-04-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация логов

JOHN_16
djangofan
вы бы хоть ОС указали. Дело в том что правка вывода в консоли, без правок исходников джанги думаю невозможна ( это я именно о команде manage.py runserver,а не о уровне ОС )
Не совсем понимаю о чем вы говорите (править исходники джанги?? ), ну допустим OS X.

Офлайн

#6 Апрель 1, 2015 17:21:27

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Фильтрация логов

Смысл в том, что средствами Django это не реализуется (ключ –verbosity не работает в сочетании с runserver) и это нужно делать (если очень нужно) средствами вашей конкретной OS или IDE (в PyCharm есть плагин).

Офлайн

#7 Апрель 1, 2015 18:02:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Фильтрация логов

Собственно, вот весь патч, замени этим кодом свой 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 с расширенными возможностями настройки вывода.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version