2017-01-04 11 views
1

Давайте начнем с контекста!Хороший способ разработки Logger DLL для приложения для веб-приложений и окон

На моей работе меня попросили добавить некоторые функции журнала в мой проект, веб-приложение в ASP.NET.

Что я думал, это хорошо, я мог бы сделать это только для моего проекта, но это не очень полезно! Поэтому я хочу создать DLL, которая может использоваться в других проектах (приложениях webapps или windows).

Так я планировал эти функциональные возможности:

  • XML-файла для конфигурации: LogLevel файла, расположение файла, время хранения его, максимальный размер перед записью в новый файл журнала. Например, у меня может быть файл журнала, в котором будут записываться только журналы ERROR и CRITICAL и другой файл, в котором будут записаны INFO и WARNING LOGS.

    • Возможность войти в веб-приложение, или для победы приложение

Но вот проблемы, я имею в виду разного вещей, которые могут пойти не так, и я хотел быть уверен, от того, что я делаю до его разработки.

Прежде всего, мне нужно будет определить, является ли это веб-приложение или приложение для Windows. Я нашел некоторые вещи, которые могут быть полезны, например, this one

Тогда я думаю о том, как будут записываться журналы, каждый раз, когда я буду писать строку журнала, мне придется открыть и закрыть файл. Я чувствую, что это очень жадно в спектаклях. Я ошибаюсь ? Есть ли другой способ сделать это?

Следует также указать, что может возникнуть проблема при регистрации как из веб-приложений, так и из многопоточных приложений Windows. Другая проблема заключается в том, что метод журнала может вызываться дважды (2 раза) одновременно, что создает проблему одновременного доступа к файлу журнала. Каков наилучший способ решения этих проблем?

Наконец-то, интересно, видите ли вы какие-либо другие вещи, которые могут быть проблемой для такого типа dll?

Благодарим за помощь! :)

+7

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

+1

Посмотрите на 'log4net' или' nlog' или что-то еще. Они уже решили большинство ваших проблем.Почему вам нужно различать приложения для Web и Desktop? –

+0

Возможно, вы ищете https://msdn.microsoft.com/en-us/library/ff648951.aspx – r1verside

ответ

0

Его не стоит изобретать велосипед. Вы можете посмотреть библиотеку log4net. Log4net поддерживает запись журналов в TXT, XML, SQL, MSMQ и т. Д. Я бы предположил, что запись нескольких журналов будет блокировать выполнение вашего приложения в определенной степени. Поэтому вместо того, чтобы выполнять ведение журнала TXT или SQL, я бы пошел на регистрацию MSMQ (его огонь и забыть, который не блокирует ваш код приложения). У вас есть служба Windows для чтения очереди сообщений и записи журналов в отдельной базе данных SQL.

+0

Возможно, я пытаюсь изобрести колесо, да. Возможно, я, наконец, сделаю это с существующим решением «да», и я уверен, что все предлагаемое решение очень хорошее. Но в любом случае, переписывание, которое может быть хорошим упражнением для меня. Я все еще ученик на своей работе, я должен учиться. Я знал, что есть инструменты, которые могли бы сделать это легко. Но в любом случае я хочу попробовать, даже просто научиться справляться с этими проблемами. Знания не могут быть бесполезными, я думаю ... –

+0

Это разумно дать ему шанс, но эффективно использовать библиотеку протоколов промышленной силы - это то, что нужно учиться, и тот, который будет весьма полезен в долгосрочной перспективе:) –

+1

Я полностью согласен, и я принял к сведению все ваши предложения и, вероятно, скоро их посмотрю. Но я все равно попытаюсь найти этот ответ даже для меня. –

0

Вы могли бы дать попробовать на Elmah https://elmah.github.io/ или к Serilog: https://serilog.net/ Оба, как и log4net (может быть меньше, чем log4net), являются "классикой". Как говорится в предыдущем ответе, нет никакой выгоды, кроме, быть может, своего рода кодирования, чтобы изобретать колесо.