title: Is it a good practice to have logger as a singleton?
body: <p>I had a habit to pass logger to constructor, like:</p>
  
  <pre><code>public class OrderService : IOrderService {
       public OrderService(ILogger logger) {
       }
  }
  </code></pre>
  
  <p>But that is quite annoying, so I've used it a property this for some time:</p>
  
  <pre><code>private ILogger logger = NullLogger.Instance;
  public ILogger Logger
  {
      get { return logger; }
      set { logger = value; }
  }
  </code></pre>
  
  <p>This is getting annoying too - it is not dry, I need to repeat this in every class. I could use base class, but then again - I'm using Form class, so would need FormBase, etc.
  So I think, what would be downside of having singleton with ILogger exposed, so veryone would know where to get logger:</p>
  
  <pre><code>    Infrastructure.Logger.Info("blabla");
  </code></pre>
  
  <p>UPDATE: As Merlyn correctly noticed, I've should mention, that in first and second examples I am using DI.</p>