Системой Ultima Businessware® поддерживается два способа журналирования:
•основной вариант – централизованное журналирование на базе библиотеки Serilog, поддерживающей большой ассортимент хранилищ разной степени структурированности: от текстовых файлов до документоориентированных баз данных. Встроенный в систему анализатор логов работает с базой данных MongoDB 3.0, которая позволяет писать достаточно сложные запросы к свойствам документов, в том числе с регулярными выражениями и поиском с учетом русской морфологии. При желании, однако, можно использовать любое поддерживаемое библиотекой Serilog хранилище, в том числе и NLog, используя собственные инструменты анализа;
•дополнительный вариант – журналирование на платформе NLog, которая поддерживает множество способов вывода логов – от файла и консоли, в которой запущено приложение, до журнала событий и электронной почты.
Каждый метод имеет свои преимущества и недостатки.
Так Serilog предлагает:
•структурированное хранение событий (в виде текста и дополнительных свойств);
•большой набор баз, форматов и доступных инструментов для анализа;
но при этом:
•не умеет перегружать настройки из файла конфигурации на лету;
•не позволяет нескольким процессам писать в один лог-файл.
В то же время NLog:
•позволяет нескольким процессам писать в один лог-файл. Это актуально для приложения PrintWorker;
однако имеет и ряд недостатков:
•на каждом сервере свои файлы логов, для анализа которых необходимо иметь доступ к каждому из них;
•файлы логов еще необходимо найти (этот и предыдущий пункты актуальны в большей степени для прикладного разработчика);
•файлы довольно велики и не всегда под рукой есть программа, способная их открыть;
•когда файлов много, сложно определить, какие из них актуальны на текущий момент;
•поскольку текст не структурирован, поиск часто натыкается на лишние совпадения;
•поиск с регулярными выражениями доступен не во всякой программе;
•иногда логи обрываются на самом интересном месте.
При этом Serilog умеет в качестве хранилища использовать NLog, что полностью нивелирует его недостатки. В этом случае потребность писать в один файл из нескольких процессов легко разрешить путем перенаправления событий в NLog.
Выбор метода журналирования – только Serilog на базе MongoDB или своего хранилища, или же Seroilog в связке с NLog – остается за системным администратором/прикладным разработчиком.