.नेट कोर 3.1
दुर्भाग्य से, ASP.NET Core 3.0 के लिए, स्थिति फिर से थोड़ी अलग है। डिफ़ॉल्ट टेम्प्लेट HostBuilder
(इसके बजाय WebHostBuilder
) का उपयोग करते हैं जो एक नया जेनेरिक होस्ट सेट करता है जो वेब अनुप्रयोगों तक सीमित नहीं, कई अलग-अलग अनुप्रयोगों की मेजबानी कर सकता है। इस नए होस्ट का एक हिस्सा दूसरे निर्भरता इंजेक्शन कंटेनर का निष्कासन भी है जो पहले वेब होस्ट के लिए मौजूद था। अंततः इसका मतलब है कि आप किसी भी निर्भरता को वर्ग IConfiguration
में शामिल करने में सक्षम नहीं होंगे Startup
। इसलिए आप ConfigureServices
विधि के दौरान लॉग इन नहीं कर पाएंगे । हालाँकि, आप लॉगर को Configure
विधि में इंजेक्ट कर सकते हैं और वहाँ लॉग इन कर सकते हैं:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
यदि आपको पूरी तरह से भीतर प्रवेश करने की आवश्यकता है ConfigureServices
, तो आप उस का उपयोग करना जारी रख सकते हैं WebHostBuilder
जो उस विरासत का निर्माण करेगा जो WebHost
लकड़हारे को Startup
कक्षा में इंजेक्ट कर सकता है । ध्यान दें कि यह संभावना है कि भविष्य में किसी बिंदु पर वेब होस्ट हटा दिया जाएगा। तो आपको एक समाधान खोजने की कोशिश करनी चाहिए जो आपके लिए बिना लॉग इन किए काम करता है ConfigureServices
।
.NET कोर 2.x
यह ASP.NET कोर 2.0 की रिलीज के साथ काफी बदल गया है। ASP.NET Core 2.x में, होस्ट बिल्डर में लॉगिंग बनाई जाती है। इसका मतलब यह है कि लॉगिंग डिफ़ॉल्ट रूप से DI के माध्यम से उपलब्ध है और इसे Startup
कक्षा में इंजेक्ट किया जा सकता है :
public class Startup
{
private readonly ILogger<Startup> _logger;
public IConfiguration Configuration { get; }
public Startup(ILogger<Startup> logger, IConfiguration configuration)
{
_logger = logger;
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
_logger.LogInformation("ConfigureServices called");
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
_logger.LogInformation("Configure called");
}
}