gpt4 book ai didi

ninject - Serilog 仅记录构建后第一次调用的情况

转载 作者:行者123 更新时间:2023-12-02 10:43:41 30 4
gpt4 key购买 nike

我有一个 ASP NET MVC 项目,它使用 Ninject 进行 IoC。添加了 Serilog 记录器

  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);
}
}

并将其注入(inject)到 Controller 中。

当我执行使用它来记录的代码时,它将记录一次,然后在我重新启动网络应用程序之前不再记录。

我在 Windows 服务中使用相同的配置代码(没有 ninject),效果很好。

安装的版本是

<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)
<小时/>

更新2:

事实证明,这是我们项目中实现 IDependencyResolver 的方式中的一个错误。 IDependencyResolver 实现了 IDisposable,我们的实现在内核上称为 dispose。 (嗯?)幸运的是,这之前从未引起过问题。

我已标记Caio's答案是答案,因为他向我指出了SelfLog,给了我一个工具来缓解正在发生的事情。感谢所有的帮助!

最佳答案

您是否尝试过检查 Serilog 自身日志的输出,看看内部是否发生任何错误?

例如

Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

https://github.com/serilog/serilog/wiki/Debugging-and-Diagnostics

关于ninject - Serilog 仅记录构建后第一次调用的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40743922/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com