@Bodden

Как лучше сохранять результаты логирования приложения NET?

Подскажите пожалуйста, как лучше всего сохранять журнал логирования C# в линукс? Я смотрю в сторону связки Nlog + SQLite, но не уверен правильно ли это?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 3
vabka
@vabka Куратор тега C#
Токсичный шарпист
Nlog

Кмк, он немного переусложнён.
Я бы посмотрел в сторону стандартного Microsoft.Extensions.Logging или Serilog (но из кода всё равно обращаться к M.E.L.Abstractions)

SQLite

Зачем? Какую проблему ты хочешь решить применяя для логов полноценную субд, с которой к тому же не будут нормально интегрироваться другие инструменты для просмотра логов?

На линуксе уже есть встроенная служба для логов - syslog, ей и пользуйся.

Хотя опять же зависит от того, что за приложение и что за логи.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Serilog для .net - это как log4j для java.
Если очень хочется универсальноентерпайзности - можно посмотреть в сторону log4net

Собственно любой из помянутых логгеров умеет и в .txt и в .xml и в .json, а так же гадить в udp (syslog/graylog) и в другие известные коллекторы типа эластика/прометеуса/etc

p.s. да и по-большому счёту логика и идеология работы у них сходна
Ответ написан
Комментировать
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Добавлю, что есть еще такая замечательная штука, как "сборщик логов" - то, что надо, если хочется собирать логи с нескольких разных источников. Например FluentD, Graylog, Nagios Log Server, NXlog, Elastic Stack: Elasticsearch, Kibana, Beats & Logstash, LOGalyze.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
1. Про NLog давно не слышал - больше про Serilog (стильно, модно, молодежно)
2. Если это системное какое-нибудь приложение, то лучше используй системный журнал, либо пиши в файл отдельный
3. Если есть внешний сервер логов (ELK стек, Graylog и т.д.), то отправляй туда (посмотри в сторону агрегаторов логов, )
4. Если это контейнерное (докер, например) приложение, то логируй в stdout/stderr, а потом собирай логи у самого контейнера. Также, докер можно настроить на формат хранения логов и место хранения (можно локально хранить, а можно и отправлять по сети)

P.S. фреймворк по большей части не важен, но рекомендую связку Microsoft.Extensions.Logging + Serilog:
- Первый - предоставляет интерфейс для логирования
- Второй - бэкэнд логирования
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы