代码之家  ›  专栏  ›  技术社区  ›  LP13

在不同服务器之间共享记录器。NET框架

  •  8
  • LP13  · 技术社区  · 6 年前

    我正在创建一个可以共享的应用程序框架。Net Core 1.2。Net Core 2.0和。NET Framework 4.6+。因此,我选择项目的目标框架为。净标准。在我的框架项目中,我有一个用于发送文本消息或电子邮件的factory类。在应用程序启动时,每个应用程序都会使用受支持的服务将工厂配置为具有DI框架的单例实例。

    public class MyFactory : IMyFactory
    {
          private ILogger _logger;
          private IDictionary<string,IMyService> _container = new Dictionary<string,IMyService>();
    
        // this method is called on application startup to configure supported services
        public void Configure(string[] keys, ILogger logger)
        {  
            foreach(var key in keys)
            {
                 if(key == "text")
                 {
                     container.Add(key,new TextMessageService());
                 }   
    
                 if(key == "email")
                 {
                     container.Add(key,new EmailService());
                 }
            }
        }
    
        //application call this method to send message
        public bool SendMessage(string key, string message)
        {
             // we don't want application to stop when publish fail, so we add try-catch and log the message
             var flag = false;
    
             try
             {
                 var service= container[key];
                 service.Publish(message);
                 flag = true;
             }
             class(Exception ex)
             {
                _logger.Error(ex);
             }
    
             return flag;
        }
    }
    

    问题 :发布方法可能因任何原因失败。在这种情况下,我不希望应用程序停止,相反,框架应该记录错误消息。我的问题是,框架可以在不同的用户之间共享。NET框架,我不知道 ILooger 我应该使用可以共享的。净核心和。净满。

    我试图避免创建自己的 ILogger 界面目前所有应用程序都在使用 Serilog 但在未来,这种情况可能会改变。

    可以 Microsoft.Extensions.Logging 在这里使用?

    1 回复  |  直到 6 年前