@spbpython

Страница 358 из 785
Дмитрий Нан
05.04.2017
12:52:59
ооооо, виндаааааа)))))

огонь

Andrey
05.04.2017
12:54:02
запахло плюсами, удаляюсь...
как будто что-то плохое

Eugene
05.04.2017
12:54:14
Windows Event Log - это пожалуй однин из лучших механизмов, что придумали в плане отладки

Google
Дмитрий Нан
05.04.2017
12:55:02
как будто что-то плохое
да не, в целом даже наоборот, просто это чисто мое восприятие

языки ниже уровнем всегда хорошо

Eugene
05.04.2017
12:57:34
ооооо, виндаааааа)))))
Тебе, дорогой друг, тожу могу посоветовать проявлять поменьше снобизма. :) Если ты идеально знаешь библиотеку логгирования в питоне, то тебе и кода не нужно, чтобы сказать, как правильно настроить логи из разных пакетов в обычном flask-приложении, запускаемом через uwsgi.

Dmitry
05.04.2017
12:58:20
спокойно, не ссорьтесь )

Дмитрий Нан
05.04.2017
12:58:22
если это мой снобизм, просто игнорь

но мне винда и вправду не по нутру

Dmitry
05.04.2017
12:59:06
> у меня ест друг , он знает 21 язык программирования > ооооо, виндаааааа))))) меньше двачёвости, больше комментариев в дискуссию, пожалуйста. :)

Eugene
05.04.2017
12:59:12
Вопрос звучал: в чём может быть дело? @propositive нормально ответил, например

Дмитрий Нан
05.04.2017
12:59:14
хотя в целом для повседневног пользования она будет попригоднее линуксов

Дмитрий Нан
05.04.2017
12:59:34
дело примитивно в настройках

которые так так упорно не желаешь показывать

Google
Дмитрий Нан
05.04.2017
12:59:48
дерзай сам, разбирайся

Eugene
05.04.2017
12:59:54
дело примитивно в настройках
Ага, главное знать где шарахнуть молотком? :)

Да покажу, покажу :)

Дмитрий Нан
05.04.2017
13:00:12
ты думаешь у меня таких проблем не было?

Eugene
05.04.2017
13:00:29
Я думаю, у всех были, на SO много вопросов

Дмитрий Нан
05.04.2017
13:01:27
я б то как раз и помог

только уже по коду

ибо на словах все может сильно отличаться, это нормально

Roman
05.04.2017
13:28:02
Вот вы устроили тут

Eugene
05.04.2017
13:30:26
Это точно, понаписали фигни всякой. Просто раньше я никогда не сталкивался с проблемой логгирования в приложениях, правда я только десктоп и библиотеки пишу. А меня сразу упрекать, что я неуч. Может и неуч, буду учиться значит :)

Eugene
05.04.2017
13:33:16
Может потому что разные логгеры и разные facility / log level?
Да, думаю, тут ни в чём другом причины быть не может. В доке питона так вообще всё просто: https://docs.python.org/3/howto/logging.html#logging-from-multiple-modules https://docs.python.org/3/howto/logging.html#configuring-logging-for-a-library

Eugene
05.04.2017
13:49:26
Дмитрий Нан смотри, вот мой упрощённый код (думаю, что ничего нового в нём нет) https://paste.fedoraproject.org/paste/PqgA6HtlGxu3cLzDsy8lTV5M1UNdIGYhyRLivL9gydE= В файл myapp.log сваливаются логи из requests, а из flask их нет. Получается, что логгер для flask я должен явно настроить уже после basicConfig явно, задав в нем handler, formatter, level и вот это всё. Пример из доки питона (ссылка выше) говорит, что всё должно работать из коробки. :)

Roman
05.04.2017
13:52:17
Почему нельзя в volume писать?
в какой именно volume?

Sergey
05.04.2017
13:54:37
в какой именно volume?
Data volume https://docs.docker.com/engine/tutorials/dockervolumes/#data-volumes Или что ты имеешь в виду?

Roman
05.04.2017
13:55:36
Data volume https://docs.docker.com/engine/tutorials/dockervolumes/#data-volumes Или что ты имеешь в виду?
ну ок. у меня несколько уровней логгирования от нескольких процессов. писать напрямую в файл - это значит вмазаться в ротацию и вот это всё.

Google
Eugene
05.04.2017
13:58:32
Я не знаю, может натыкался уже на этот gist, но на всякий https://gist.github.com/ibeex/3257877
Именно это я делаю, да. Только setLevel ещё и для логгера тоже, иначе не работает.

Дмитрий Нан
05.04.2017
13:58:35
вот мой примтивный пример

LOG_CONFIG = {'version': 1, 'formatters': { 'common': { 'class': 'logging.Formatter', 'format': '[%(asctime)s %(name)s %(levelname)s] %(message)s' }, }, 'handlers': { 'common': { 'class': 'logging.StreamHandler', 'level': 'DEBUG', 'formatter': 'common' }, }, 'loggers': { 'asyncio': { 'handlers': ['common'], 'level': LOG_LEVEL, }, 'aiohttp': { 'handlers': ['common'], 'level': LOG_LEVEL }, LOGGER_NAME: { 'handlers': ['common'], 'level': LOG_LEVEL } } }

dictConfig(conf.LOG_CONFIG)

Eugene
05.04.2017
13:58:51
Это из Django что-ли?

Дмитрий Нан
05.04.2017
13:59:01
нет

Eugene
05.04.2017
13:59:04
Обычно там такие развесистые конфиги

Дмитрий Нан
05.04.2017
13:59:07
это просто пример теюе

везде такие

Eugene
05.04.2017
14:00:52
Да, с этим, похоже, можно жить, так как всё настраивается для логгеров из разных пакетов в одном месте.

Дмитрий Нан
05.04.2017
14:03:10
ты главное не забывай эту настройку в каждом нужно процессе инициализировать

Eugene
05.04.2017
14:03:21
В официальной доке кстати используется ini формат https://docs.python.org/3.6/howto/logging.html#configuring-logging

Eugene
05.04.2017
14:03:27
Я понял про процессы, да

Дмитрий Нан
05.04.2017
14:03:54
актуальный - словарь

но решать тебе

оба работают

Eugene
05.04.2017
14:05:19
Ну там и yaml есть, он всеядный, похоже.

new dictionary-based approach, понятно. Спасибо!

Дмитрий Нан
05.04.2017
14:05:38
ямла не было

Google
Дмитрий Нан
05.04.2017
14:05:44
где увидел?

я про стандартну библиотеку

из твоего примера кстати

Eugene
05.04.2017
14:06:53
там же ниже: "Here’s an example of the same configuration as above, in YAML format for the new dictionary-based approach:" Но это они, видимо, как пример приводят, что можно так сделать через configuration function если я правильно понял

Дмитрий Нан
05.04.2017
14:07:23
@app.route('/') @app.route('/index') def index(): logging.debug('hello') # вот тута замени должно заработать при твоих настройках return 'hello'

Eugene
05.04.2017
14:08:06
Но у меня ещё есть пакеты где используется иерархия логгеров и там это работать не будет, надо будет вот такой конфиг делать.

Дмитрий Нан
05.04.2017
14:08:38
да, иначе только явно конфигурировать логер фласка

Olya
05.04.2017
15:04:08
Я тренируюсь в графомании и потихоньку познаю продукты Майкрософта. Можете глянуть статью :) https://habrahabr.ru/company/microsoft/blog/325728/

Lulz
05.04.2017
15:19:53
лол ишью не кинул, а фичу которая не меняет бэкграунд, если заходить с разного пк сделали(про телеграм)

Admin
ERROR: S client not available

Eugene
05.04.2017
16:01:35
@app.route('/') @app.route('/index') def index(): logging.debug('hello') # вот тута замени должно заработать при твоих настройках return 'hello'
Кстати, проверил. Не работает. Как только мы создаём экземпляр flask-приложения, корневой регистратор "ломается". import logging logging.basicConfig(filename='logs/aaa.log', level=logging.INFO) logging.info('Hello') # это запишется from myapp import app # а это не запишется logging.info('Flask app logger name:', app.logger.name) Так я дурак или нет? Это нормально или нет? :) Можно на оба вопроса ответить положительно, только аргументируйте :))

Eugene
05.04.2017
16:03:08
Ошибка где?

Дмитрий Нан
05.04.2017
16:03:16
на втором вызове ?

тут logging.info('Flask app logger name:', app.logger.name)

Eugene
05.04.2017
16:03:43
2 суток без сна...

сейчас

Отлично, я дурак! ?

Дмитрий Нан
05.04.2017
16:04:36
так, не помню точно, но такая запись вроде не сразботает из-за того, что нет конкатенации строк

Google
Eugene
05.04.2017
16:04:59
в принте работает нормально, потмоу что args

Дмитрий Нан
05.04.2017
16:05:05
logging.info('Flask app logger name: {}'.format( app.logger.name))

Eugene
05.04.2017
16:05:15
logging.info('Flask app logger name: %s', app.logger.name)

Дмитрий Нан
05.04.2017
16:06:30
я не помню как метод logger.log(msg, *args) работает с args

А так кстати нельзя
почему нельзя? Оо

Eugene
05.04.2017
16:07:08
Это же важно, производительность. Если ты везде напихаешь формат, он будет всегда выполняться, а отключенный логгер не будет делать формат

Дмитрий Нан
05.04.2017
16:07:13
logging.info('Flask app logger name: %s', app.logger.name)
это как вообще? где литеральчик подстановки значения в строку? - logging.info('Flask app logger name: %s' % app.logger.name)

Дмитрий Нан
05.04.2017
16:07:57
и вообще питон и производительность это не тема для обсуждения

Eugene
05.04.2017
16:08:45
Если у тебя уровень логгирования отключен, то твои сообщения не будут обрабатываться, все эти форматирования в них. Если сообщений очень много, это может повлиять на производительность.

Правильно использовать debug("message %s, %s", arg1, arg2)

Дмитрий Нан
05.04.2017
16:09:23
дело в том, что с таким форматированием у тебя будут проблемы

просто будет ломаться форматирование

Eugene
05.04.2017
16:10:15
Почему?

Дмитрий Нан
05.04.2017
16:10:49
ну потому что в плэйсхолдер %s ты не подставишь все , что угодно

а нередко бывает переменная содержит не то, что ожидал)

Eugene
05.04.2017
16:11:19
Всё что угодно ставится в %s

Страница 358 из 785