Logging in .NET Core without DI?










2














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?










share|improve this question





















  • I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
    – Ryan Pierce Williams
    Nov 10 at 2:52















2














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?










share|improve this question





















  • I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
    – Ryan Pierce Williams
    Nov 10 at 2:52













2












2








2







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?










share|improve this question













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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 10 at 2:16









Jez

11.4k1879149




11.4k1879149











  • 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




I like their Event Tracing for Windows (ETW) library myself, which doesn't require DI.
– Ryan Pierce Williams
Nov 10 at 2:52












2 Answers
2






active

oldest

votes


















2














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);






share|improve this answer






























    0














    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.






    share|improve this answer




















      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
      );



      );













      draft saved

      draft discarded


















      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









      2














      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);






      share|improve this answer



























        2














        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);






        share|improve this answer

























          2












          2








          2






          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);






          share|improve this answer














          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);







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 10 at 4:10

























          answered Nov 10 at 2:45









          Scott Chamberlain

          97.7k24179318




          97.7k24179318























              0














              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.






              share|improve this answer

























                0














                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.






                share|improve this answer























                  0












                  0








                  0






                  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.






                  share|improve this answer












                  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.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 10 at 17:08









                  Jez

                  11.4k1879149




                  11.4k1879149



























                      draft saved

                      draft discarded
















































                      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.




                      draft saved


                      draft discarded














                      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





















































                      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







                      Popular posts from this blog

                      𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                      Edmonton

                      Crossroads (UK TV series)