Журналирование

Системой Ultima Businessware® поддерживается два способа журналирования:

основной вариант – централизованное журналирование на базе библиотеки Serilog, поддерживающей большой ассортимент хранилищ разной степени структурированности: от текстовых файлов до документоориентированных баз данных. Встроенный в систему анализатор логов работает с базой данных MongoDB 3.0, которая позволяет писать достаточно сложные запросы к свойствам документов, в том числе с регулярными выражениями и поиском с учетом русской морфологии. При желании, однако, можно использовать любое поддерживаемое библиотекой Serilog хранилище, в том числе и NLog, используя собственные инструменты анализа;

дополнительный вариант – журналирование на платформе NLog, которая поддерживает множество способов вывода логов – от файла и консоли, в которой запущено приложение, до журнала событий и электронной почты.

Каждый метод имеет свои преимущества и недостатки.

Так Serilog предлагает:

структурированное хранение событий (в виде текста и дополнительных свойств);

большой набор баз, форматов и доступных инструментов для анализа;

но при этом:

не умеет перегружать настройки из файла конфигурации на лету;

не позволяет нескольким процессам писать в один лог-файл.

В то же время NLog:

позволяет нескольким процессам писать в один лог-файл. Это актуально для приложения PrintWorker;

однако имеет и ряд недостатков:

на каждом сервере свои файлы логов, для анализа которых необходимо иметь доступ к каждому из них;

файлы логов еще необходимо найти (этот и предыдущий пункты актуальны в большей степени для прикладного разработчика);

файлы довольно велики и не всегда под рукой есть программа, способная их открыть;

когда файлов много, сложно определить, какие из них актуальны на текущий момент;

поскольку текст не структурирован, поиск часто натыкается на лишние совпадения;

поиск с регулярными выражениями доступен не во всякой программе;

иногда логи обрываются на самом интересном месте.

При этом Serilog умеет в качестве хранилища использовать NLog, что полностью нивелирует его недостатки. В этом случае потребность писать в один файл из нескольких процессов легко разрешить путем перенаправления событий в NLog.

Выбор метода журналирования – только Serilog на базе MongoDB или своего хранилища, или же Seroilog в связке с NLog – остается за системным администратором/прикладным разработчиком.