У меня есть проект ASP NET MVC, который использует Ninject для IoC. Заполнили регистратор SerilogSerilog только регистрируется при первом вызове после сборки
public class LoggingModule : BaseModule
{
public override void Load()
{
var fileName = "c:\path\file.log";
var loggerConfiguration = new LoggerConfiguration()
.WriteTo.RollingFile(fileName, LogEventLevel.Debug)
.MinimumLevel.Verbose();
var logger = loggerConfiguration.CreateLogger();
Log.Logger = logger;
Bind<ILogger>().ToConstant(logger);
}
}
И вводите это в контроллер.
Когда я использую код, который использует его для регистрации, он будет регистрироваться один раз, а затем никогда больше, пока я не перезапущу веб-приложение.
Я использую тот же код конфигурации (без ninject) в службе windows, которая работает нормально.
Версии смонтированные
<package id="Serilog" version="2.3.0" targetFramework="net45" />
<package id="Serilog.Sinks.File" version="3.1.0" targetFramework="net45" />
<package id="Serilog.Sinks.RollingFile" version="3.2.0" targetFramework="net45" />
<package id="Ninject" version="3.2.2.0" targetFramework="net45" />
<package id="Ninject.MVC3" version="3.2.1.0" targetFramework="net45" />
<package id="Ninject.Web.Common" version="3.2.3.0" targetFramework="net45" />
<package id="Ninject.Web.Common.WebHost" version="3.2.3.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />
Обновление:
Исходя из Caio's ответа. Я добавил в SelfLog и посмотреть ...
2016-11-22T14:29:25.6317957Z Caught exception while emitting to sink Serilog.Core.Sinks.RestrictedSink: System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'The rolling log file has been disposed.'.
at Serilog.Sinks.RollingFile.RollingFileSink.Emit(LogEvent logEvent)
at Serilog.Core.Sinks.SafeAggregateSink.Emit(LogEvent logEvent)
Update 2:
Это оказалось быть ошибка в том, что IDependencyResolver были реализованы в нашем проекте. IDependencyResolver реализует IDisposable, и наша реализация называется dispose на ядре. (Un?) К счастью, это никогда не вызывало проблемы раньше.
Я отметил, что Caio's ответил как Ответ, потому что он указывал мне на SelfLog, дал мне инструмент, чтобы расслабиться, что происходит. Спасибо всем, что помогло!
Этот вопрос и ответ - http://stackoverflow.com/questions/7395071/is-binding-toconstant-and-calling-insingletonscope-redundant - веди меня задаться вопросом если, возможно, 'InSingletonScope()' необходим вместе с 'ToConstant()' в версии Ninject, которую вы используете. Стоит попробовать? –