I had a habit to pass logger to constructor, like:
public class OrderService : IOrderService {
public OrderService(ILogger logger) {
}
}
Good question. I believe in most projects logger is a singleton.
Some ideas just come to my mind:
Object type so each class would be able to call logger's methods like LogInfo(), LogDebug(), LogError()