Logging in .NET Core without DI?
It seems that Microsoft are really trying to shove DI down your throat with .NET Core, and I'm not sure why, but frankly my console app is small and simple and I just don't want to build a whole DI container just to do some simple logging. How can I do logging in .NET Core without using DI? Everything I've read assumed you're going to use .NET Core's built-in logging architecture which obviously requires DI, but there must be a way to just do it without DI using a static variable on the class?
c# logging asp.net-core
add a comment |
It seems that Microsoft are really trying to shove DI down your throat with .NET Core, and I'm not sure why, but frankly my console app is small and simple and I just don't want to build a whole DI container just to do some simple logging. How can I do logging in .NET Core without using DI? Everything I've read assumed you're going to use .NET Core's built-in logging architecture which obviously requires DI, but there must be a way to just do it without DI using a static variable on the class?
c# logging asp.net-core
I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52
add a comment |
It seems that Microsoft are really trying to shove DI down your throat with .NET Core, and I'm not sure why, but frankly my console app is small and simple and I just don't want to build a whole DI container just to do some simple logging. How can I do logging in .NET Core without using DI? Everything I've read assumed you're going to use .NET Core's built-in logging architecture which obviously requires DI, but there must be a way to just do it without DI using a static variable on the class?
c# logging asp.net-core
It seems that Microsoft are really trying to shove DI down your throat with .NET Core, and I'm not sure why, but frankly my console app is small and simple and I just don't want to build a whole DI container just to do some simple logging. How can I do logging in .NET Core without using DI? Everything I've read assumed you're going to use .NET Core's built-in logging architecture which obviously requires DI, but there must be a way to just do it without DI using a static variable on the class?
c# logging asp.net-core
c# logging asp.net-core
asked Nov 10 at 2:16
Jez
11.4k1879146
11.4k1879146
I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52
add a comment |
I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52
I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52
I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52
add a comment |
2 Answers
2
active
oldest
votes
If you want to do it yourself you will need to instantiate a LoggerFactory instance somewhere and configure what providers you want. Then you just need to call CreateLogger to create a instance or use new Logger<T>(ILoggerFactory)
to create a logger.
using Microsoft.Extensions.Logging;
static class MyLogger {
public static ILoggerFactory LoggerFactory {get;}
static MyLogger() {
LoggerFactory = new LoggerFactory();
LoggerFactory.AddConsole();
}
}
public MyClass {
private readonly ILogger _logger = new Logger<MyClass>(MyLogger.LoggerFactory);
}
add a comment |
What I ended up doing was using NLog but rather than using their .NET Core DI extensions, I just included the main NLog NuGet package, manually creating my own NLog.config
file, and followed the tutorial to GetCurrentClassLogger()
, creating that as a static member of my class, then directly used that for logging. This is quite a simple setup and has no need for DI. NLog should probably document it better.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53235472%2flogging-in-net-core-without-di%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you want to do it yourself you will need to instantiate a LoggerFactory instance somewhere and configure what providers you want. Then you just need to call CreateLogger to create a instance or use new Logger<T>(ILoggerFactory)
to create a logger.
using Microsoft.Extensions.Logging;
static class MyLogger {
public static ILoggerFactory LoggerFactory {get;}
static MyLogger() {
LoggerFactory = new LoggerFactory();
LoggerFactory.AddConsole();
}
}
public MyClass {
private readonly ILogger _logger = new Logger<MyClass>(MyLogger.LoggerFactory);
}
add a comment |
If you want to do it yourself you will need to instantiate a LoggerFactory instance somewhere and configure what providers you want. Then you just need to call CreateLogger to create a instance or use new Logger<T>(ILoggerFactory)
to create a logger.
using Microsoft.Extensions.Logging;
static class MyLogger {
public static ILoggerFactory LoggerFactory {get;}
static MyLogger() {
LoggerFactory = new LoggerFactory();
LoggerFactory.AddConsole();
}
}
public MyClass {
private readonly ILogger _logger = new Logger<MyClass>(MyLogger.LoggerFactory);
}
add a comment |
If you want to do it yourself you will need to instantiate a LoggerFactory instance somewhere and configure what providers you want. Then you just need to call CreateLogger to create a instance or use new Logger<T>(ILoggerFactory)
to create a logger.
using Microsoft.Extensions.Logging;
static class MyLogger {
public static ILoggerFactory LoggerFactory {get;}
static MyLogger() {
LoggerFactory = new LoggerFactory();
LoggerFactory.AddConsole();
}
}
public MyClass {
private readonly ILogger _logger = new Logger<MyClass>(MyLogger.LoggerFactory);
}
If you want to do it yourself you will need to instantiate a LoggerFactory instance somewhere and configure what providers you want. Then you just need to call CreateLogger to create a instance or use new Logger<T>(ILoggerFactory)
to create a logger.
using Microsoft.Extensions.Logging;
static class MyLogger {
public static ILoggerFactory LoggerFactory {get;}
static MyLogger() {
LoggerFactory = new LoggerFactory();
LoggerFactory.AddConsole();
}
}
public MyClass {
private readonly ILogger _logger = new Logger<MyClass>(MyLogger.LoggerFactory);
}
edited Nov 10 at 4:10
answered Nov 10 at 2:45
Scott Chamberlain
97.7k24179317
97.7k24179317
add a comment |
add a comment |
What I ended up doing was using NLog but rather than using their .NET Core DI extensions, I just included the main NLog NuGet package, manually creating my own NLog.config
file, and followed the tutorial to GetCurrentClassLogger()
, creating that as a static member of my class, then directly used that for logging. This is quite a simple setup and has no need for DI. NLog should probably document it better.
add a comment |
What I ended up doing was using NLog but rather than using their .NET Core DI extensions, I just included the main NLog NuGet package, manually creating my own NLog.config
file, and followed the tutorial to GetCurrentClassLogger()
, creating that as a static member of my class, then directly used that for logging. This is quite a simple setup and has no need for DI. NLog should probably document it better.
add a comment |
What I ended up doing was using NLog but rather than using their .NET Core DI extensions, I just included the main NLog NuGet package, manually creating my own NLog.config
file, and followed the tutorial to GetCurrentClassLogger()
, creating that as a static member of my class, then directly used that for logging. This is quite a simple setup and has no need for DI. NLog should probably document it better.
What I ended up doing was using NLog but rather than using their .NET Core DI extensions, I just included the main NLog NuGet package, manually creating my own NLog.config
file, and followed the tutorial to GetCurrentClassLogger()
, creating that as a static member of my class, then directly used that for logging. This is quite a simple setup and has no need for DI. NLog should probably document it better.
answered Nov 10 at 17:08
Jez
11.4k1879146
11.4k1879146
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53235472%2flogging-in-net-core-without-di%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52