
Дмитрий Нан
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.

Дмитрий Нан
05.04.2017
12:58:00

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
хотя в целом для повседневног пользования она будет попригоднее линуксов

Sergey
05.04.2017
12:59:33

Дмитрий Нан
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
Это точно, понаписали фигни всякой. Просто раньше я никогда не сталкивался с проблемой логгирования в приложениях, правда я только десктоп и библиотеки пишу. А меня сразу упрекать, что я неуч. Может и неуч, буду учиться значит :)

Roman
05.04.2017
13:30:34

Eugene
05.04.2017
13:33:16

Roman
05.04.2017
13:49:17

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

Sergey
05.04.2017
13:49:47

Roman
05.04.2017
13:52:17

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

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

Дмитрий Нан
05.04.2017
13:57:41

Google

Eugene
05.04.2017
13:58:32

Дмитрий Нан
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

Дмитрий Нан
05.04.2017
16:02:58

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

Eugene
05.04.2017
16:07:34
Я шучу если что.

Дмитрий Нан
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
дело в том, что с таким форматированием у тебя будут проблемы
просто будет ломаться форматирование

Sergey
05.04.2017
16:10:08

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

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

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