![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я пришел к выводу, что осмысленно выбрать уровни логов (log4j, log4net) в вызовах внутри программы при разработке невозможно.
Всегда возникнет ситуация, в которой конкретно вот сейчас, без перезагрузки сервиса надо сменить уровень лога в данном конкретном методе.
Делать отдельные логгеры на каждый чих и конфигурировать их - это адский комбинаторный взрыв, конфиги становятся нечитабельными, когда там в xml пытаются засунуть то, что должно быть матрицей M(логгеров)*N(аппендеров), а еще лучше такой же матрицей, только с иерархией (общий, группа логгеров, логгер) по одной оси и аналогично для аппендеров по другой.
Кажется, надо просто логи складывать в очереди и фильтровать их по уровням не на этапе создания, а на этапе чтения. Возможно, разве что уберотладочные на каждую букву в каком-нибудь парсере с конечным автоматом отсеивать, и то не факт.
Всегда возникнет ситуация, в которой конкретно вот сейчас, без перезагрузки сервиса надо сменить уровень лога в данном конкретном методе.
Делать отдельные логгеры на каждый чих и конфигурировать их - это адский комбинаторный взрыв, конфиги становятся нечитабельными, когда там в xml пытаются засунуть то, что должно быть матрицей M(логгеров)*N(аппендеров), а еще лучше такой же матрицей, только с иерархией (общий, группа логгеров, логгер) по одной оси и аналогично для аппендеров по другой.
Кажется, надо просто логи складывать в очереди и фильтровать их по уровням не на этапе создания, а на этапе чтения. Возможно, разве что уберотладочные на каждую букву в каком-нибудь парсере с конечным автоматом отсеивать, и то не факт.
no subject
Date: 2015-12-18 10:21 am (UTC)no subject
Date: 2015-12-18 11:24 am (UTC)Только не облако, а словарь типа "поле: значение" и потом по ним фильтровать.
no subject
Date: 2015-12-18 12:01 pm (UTC)no subject
Date: 2015-12-18 10:32 am (UTC)no subject
Date: 2015-12-18 10:53 am (UTC)И таки делать имитацию этого средствами log4х - неудобненько.
no subject
Date: 2015-12-18 10:55 am (UTC)Чота я не вижу проблемы.
no subject
Date: 2015-12-18 11:25 am (UTC)no subject
Date: 2015-12-18 11:33 am (UTC)no subject
Date: 2015-12-18 12:06 pm (UTC)no subject
Date: 2015-12-18 02:00 pm (UTC)no subject
Date: 2015-12-18 02:50 pm (UTC)На клиентах до 10 мег, на сервере до 100 мег.
no subject
Date: 2015-12-18 02:51 pm (UTC)no subject
Date: 2015-12-18 10:34 am (UTC)no subject
Date: 2015-12-18 10:41 am (UTC)no subject
Date: 2015-12-18 11:00 am (UTC)no subject
Date: 2015-12-18 11:09 am (UTC)no subject
Date: 2015-12-18 11:14 am (UTC)no subject
Date: 2015-12-18 11:17 am (UTC)no subject
Date: 2015-12-18 11:43 am (UTC)И собирает единомышленников!
no subject
Date: 2015-12-18 11:26 am (UTC)no subject
Date: 2015-12-18 06:25 pm (UTC)(Метаязык описания состояния процесса ннада? убер-стек-трейс. Как свойство языка, понятное дело, чтоб без лишних телодвижений. может получиться забавно.)
no subject
Date: 2015-12-18 11:09 am (UTC)При желании можно пофильтровать как душе угодно.
no subject
Date: 2015-12-18 12:50 pm (UTC)no subject
Date: 2015-12-18 01:44 pm (UTC)А вообще очень сильно не помешало бы - ссылаться из лога прямо на место в *.pdb, да еще и с областями памяти локальных переменных.
no subject
Date: 2015-12-18 01:13 pm (UTC)no subject
Date: 2015-12-18 11:21 am (UTC)no subject
Date: 2015-12-18 11:29 am (UTC)Полноценный трейсинг незавимый то там есть, но пользоваться им, это как всем остальным дотнетом - вроде есть, но сделано криво и неудобно.
no subject
Date: 2015-12-18 11:41 am (UTC)no subject
Date: 2015-12-18 11:24 am (UTC)Вот эти все trace - нахер не нужны в 99% случаев, но если оно где-то упало в конце - неплохо бы поиметь их все, с самого начала, на всю обработку запроса.
Если бы лог был бы древовидный, это все можно было бы неплохо завернуть. Включая, вероятно, и твою задачу - включить логирование всего для такого-то метода на время, вместе с трейсами.
no subject
Date: 2015-12-18 11:27 am (UTC)no subject
Date: 2015-12-18 11:33 am (UTC)no subject
Date: 2015-12-18 11:46 am (UTC)что после какого-то времени, её можно было "законсервировать" без конфликтов,
то получилось бы вполне годная штука.
С другой стороны, для логов в базе данных, их деревянность почти ничего не усложнит и не сильно замедлит.
Кроме того, что для каких-то случаев обработки, они принципиально сложнее.
no subject
Date: 2015-12-18 12:50 pm (UTC)Если всё вышло ок, ниже какого-то уровня ничего не выводится, а если фейл - выводятся
+ путь из scope-ов
Ну и соот-но можно временно для конкретного scope или пути включить логирование всего подряд
no subject
Date: 2015-12-18 12:56 pm (UTC)Пишешь
var result = ctx.Run("Querying API", () => api.Query("http://a.com"));
И в лог срется типа
Starting Querying API
... тут всякое вложенное с отступом
Done Querying API in 13 sec.
no subject
Date: 2015-12-18 06:55 pm (UTC)no subject
Date: 2015-12-18 11:42 am (UTC)В таком случае, придётся отказаться от чего-то типа "paranoid"-уровня логов —
будет просто чрезмерно для обычных случаев засирать.
Впрочем, я очень не уверен, нужно ли такое.
no subject
Date: 2015-12-18 02:27 pm (UTC)no subject
Date: 2015-12-18 02:28 pm (UTC)no subject
Date: 2015-12-18 03:06 pm (UTC)no subject
Date: 2015-12-18 04:21 pm (UTC)На практике - ну не писать эти данные в логи, делов то.
no subject
Date: 2015-12-18 07:30 pm (UTC)Так вот даже в такой ситуации умные люди не постеснялись туда регекс впаять, который >10 последовательных цифр крестиками заменяет - номера кредиток отфильтровывать. Чтобы еще больше тормозило.
Впрочем, стоит заметить, когда у тебя каждый вход и каждый выход лежит на диске, аккуратно по папочкам - дебаггер особо включать даже и не надо.
no subject
Date: 2015-12-18 10:34 pm (UTC)no subject
Date: 2015-12-19 04:07 pm (UTC)А если есть - то там нет админских прав.
no subject
Date: 2015-12-20 12:58 pm (UTC)Да и по большому счету, вот логи, право читать их программисту как-то кто-то дал же, почему не дать право на подебагать?
no subject
Date: 2015-12-19 07:09 am (UTC)no subject
Date: 2015-12-19 04:09 pm (UTC)