Логи
Я пришел к выводу, что осмысленно выбрать уровни логов (log4j, log4net) в вызовах внутри программы при разработке невозможно.
Всегда возникнет ситуация, в которой конкретно вот сейчас, без перезагрузки сервиса надо сменить уровень лога в данном конкретном методе.
Делать отдельные логгеры на каждый чих и конфигурировать их - это адский комбинаторный взрыв, конфиги становятся нечитабельными, когда там в xml пытаются засунуть то, что должно быть матрицей M(логгеров)*N(аппендеров), а еще лучше такой же матрицей, только с иерархией (общий, группа логгеров, логгер) по одной оси и аналогично для аппендеров по другой.
Кажется, надо просто логи складывать в очереди и фильтровать их по уровням не на этапе создания, а на этапе чтения. Возможно, разве что уберотладочные на каждую букву в каком-нибудь парсере с конечным автоматом отсеивать, и то не факт.
Всегда возникнет ситуация, в которой конкретно вот сейчас, без перезагрузки сервиса надо сменить уровень лога в данном конкретном методе.
Делать отдельные логгеры на каждый чих и конфигурировать их - это адский комбинаторный взрыв, конфиги становятся нечитабельными, когда там в xml пытаются засунуть то, что должно быть матрицей M(логгеров)*N(аппендеров), а еще лучше такой же матрицей, только с иерархией (общий, группа логгеров, логгер) по одной оси и аналогично для аппендеров по другой.
Кажется, надо просто логи складывать в очереди и фильтровать их по уровням не на этапе создания, а на этапе чтения. Возможно, разве что уберотладочные на каждую букву в каком-нибудь парсере с конечным автоматом отсеивать, и то не факт.
no subject
no subject
no subject
no subject
no subject
И таки делать имитацию этого средствами log4х - неудобненько.
no subject
Чота я не вижу проблемы.
no subject
no subject
При желании можно пофильтровать как душе угодно.
no subject
no subject
no subject
no subject
no subject
Вот эти все trace - нахер не нужны в 99% случаев, но если оно где-то упало в конце - неплохо бы поиметь их все, с самого начала, на всю обработку запроса.
Если бы лог был бы древовидный, это все можно было бы неплохо завернуть. Включая, вероятно, и твою задачу - включить логирование всего для такого-то метода на время, вместе с трейсами.
no subject
Только не облако, а словарь типа "поле: значение" и потом по ним фильтровать.
no subject
no subject
no subject
no subject
Полноценный трейсинг незавимый то там есть, но пользоваться им, это как всем остальным дотнетом - вроде есть, но сделано криво и неудобно.
no subject
no subject
no subject
no subject
В таком случае, придётся отказаться от чего-то типа "paranoid"-уровня логов —
будет просто чрезмерно для обычных случаев засирать.
Впрочем, я очень не уверен, нужно ли такое.
no subject
И собирает единомышленников!
no subject
что после какого-то времени, её можно было "законсервировать" без конфликтов,
то получилось бы вполне годная штука.
С другой стороны, для логов в базе данных, их деревянность почти ничего не усложнит и не сильно замедлит.
Кроме того, что для каких-то случаев обработки, они принципиально сложнее.
no subject
no subject
no subject
Если всё вышло ок, ниже какого-то уровня ничего не выводится, а если фейл - выводятся
+ путь из scope-ов
Ну и соот-но можно временно для конкретного scope или пути включить логирование всего подряд
no subject
no subject
Пишешь
var result = ctx.Run("Querying API", () => api.Query("http://a.com"));
И в лог срется типа
Starting Querying API
... тут всякое вложенное с отступом
Done Querying API in 13 sec.
no subject
no subject
А вообще очень сильно не помешало бы - ссылаться из лога прямо на место в *.pdb, да еще и с областями памяти локальных переменных.
no subject
no subject
no subject
no subject
На клиентах до 10 мег, на сервере до 100 мег.
no subject
no subject
no subject
На практике - ну не писать эти данные в логи, делов то.
no subject
(Метаязык описания состояния процесса ннада? убер-стек-трейс. Как свойство языка, понятное дело, чтоб без лишних телодвижений. может получиться забавно.)
no subject
no subject
Так вот даже в такой ситуации умные люди не постеснялись туда регекс впаять, который >10 последовательных цифр крестиками заменяет - номера кредиток отфильтровывать. Чтобы еще больше тормозило.
Впрочем, стоит заметить, когда у тебя каждый вход и каждый выход лежит на диске, аккуратно по папочкам - дебаггер особо включать даже и не надо.
no subject
no subject
no subject
А если есть - то там нет админских прав.
no subject
no subject
Да и по большому счету, вот логи, право читать их программисту как-то кто-то дал же, почему не дать право на подебагать?