2016-10-21 8 views
2

Я уже собирался использовать существующий приемник Serialog SQL Server, но я понял, что последние предварительные версии и стабильные версии не поддерживают ASP.NET Core.Есть ли какой-либо приемник SQL Server Serilog для поддержки .Net Core

Есть ли альтернатива этой раковине? Что я должен сделать? Должен ли я написать новую раковину?

ответ

2

Serilog sink for SQL Server зависит от некоторых типов еще в .NET Core. Работа началась реорганизовать мойку и удалить зависимости, но с тех пор, типы которых идет речь, были добавлены в следующей версии .NET Core:

https://github.com/dotnet/corefx/pull/12426

В связи с этим, приемник Serilog SQL Server будет наиболее скорее всего, останется .NET Framework - только до следующей версии .NET Core/.NET Standard, после чего поддержка будет быстро добавлена.

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

+0

Вы говорите о .Net Core 1.0.2, который будет содержать ожидаемые типы? – Arash

+1

Я не думаю, что ему еще присвоен официальный номер версии, просто «vNext» - неуверенный, что именно будет отправлено. –

+0

[Эта вилка] (https://github.com/Ketrex/Serilog-Sinks-MSSqlServer) может оказать помощь тем временем – WolfyUK

0

Я предполагаю, что вопрос на самом деле не технический, а скорее философский, то я не предлагаю ответ, но рассмотрение:

По моему скромному мнению, Microsoft с его Silverlight убийства, UWP ориентации и «побег к облакам ", признал поражение всей своей концепции разработки проприетарного программного обеспечения, поэтому освобождение платформы dotnet является не чем иным, как прощальным подарком для разработчиков, обманутым их надеждами.

Сам по себе экосистема dotnet очень перспективна, но ее будущее имеет мало общего с продуктами Microsoft, как это было раньше. По крайней мере, я надеюсь, что разработчик, который работает с продуктами Microsoft более двадцати лет. Таким образом, общие библиотеки инфраструктуры, ориентированные на конкретные продукты Microsoft (я имею в виду MS SQL Server в этом текущем случае), теперь умирают.

Таким образом, вывод заключается в следующем: если у вас уже есть долгосрочный проект, тесно связанный с SQLServer, возможно, лучше приложить некоторые усилия для адаптации вашего текущего решения по протоколированию, в противном случае лучше искать какое-то решение для регистрации, не зависит от MSSQL. Вероятно, он должен поддерживать различные хранилища через адаптеры или что-то в этом роде.

Попробуйте взглянуть на this, они объявят поддержку Core в следующей версии, по крайней мере, это живой проект.

2

Я не могу сказать, что вы предположительно do, но я могу описать пару вариантов. Поставщик Sql Server Serilog на GitHub будет лучшим местом, чтобы задать вопрос о том, что они намереваются сделать.

Serilog действительно находится на чипе .Net Core, так как многие, многие другие основные проекты .Net. Вы правы, что на сегодняшний день приемник SQL-сервера - только .Net 4.5. Вы можете:

  • Продолжить разработку проекта ASP.N Co, цель .Net 4.5 в вашем проекте JSON, создавать и развертывать только ОС Windows, но продолжить использовать мойку SQL сервера.

    Многие компании переходят на .Net Core, но нацеливаются на .Net 4.x.x, чтобы сохранить совместимость с существующими пакетами на 100%, в то время как изломы в системе сглажены. Это было жизнеспособное решение для моих масштабных проектов.

  • Целевое ядро ​​.Net Core и создайте собственный уровень репозитория для ведения журнала для управления настраиваемым кодом регистрации SQL и базы данных.

    Если вы в основном, это проще, чем кажется, но требует опыта работы с Хранилищами данных и IoC. Любой код, который должен сбрасывать журналы в базу данных, должен иметь какой-то «ILoggingRepository». Тем не менее, он дублирует вызовы методов ведения журнала в дополнение к отклонениям от интерфейсов ILoggerProvider в Microsoft.Logging.Abstractions - отказываясь от гибкости уровней журналов и т. Д., Если вы не решили перестроить свои собственные. Это рабочее решение; Я никогда не говорил, что это изящный.

  • Напишите свою собственную раковину Serilog.

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

Могут быть другие раковины, доступные для .Net Core, но если вы ищете специфический SQL-сервер, то, скорее всего, вы работаете с ограничениями, которые предотвращают использование приемников MongoDB и поставщиков файлов и т. Д.