I would recommend you use a static logger so that you get a per-class logger. This stops the overhead of creating a logger for each instance (the logger is thread safe):
class MyClass
{
static readonly Logger logger = LogManager.GetCurrentClassLogger();
}
GetCurrentClassLogger will save you from having to name the logger explicitly, but the drawback is additional overhead as it has to figure the name of the logger out for you from the stack trace at runtime.
This is likely not a big deal in most cases, but otherwise, it's a bit faster to do this:
class MyClass
{
static readonly Logger logger = LogManager.GetLogger("MyClass");
}
I would stick with GetCurrentClassLogger until / unless the slight overhead turns out to be an issue in your solution.
The impression I'm getting is that you're trying to cut down on typing, and/or you're addressing the (good) natural aversion to copying and pasting duplicate code.
However, this pattern of having a logger per class with a static initializer is well accepted and works best in most cases. You might be best served sticking with that, and perhaps setting up a code snippet to save you some typing.
If you're still not happy with that, Dependency Injection (either through constructor or property injection) or even Aspect Oriented logging management could be other things for you to investigate.