c# - मैं एक एएसपी.नेट कोर ऐप के प्रारंभ/स्टॉप/एरर इवेंट में लॉग इन कैसे कर सकता हूं?




asp.net asp.net-core (2)

पुराने asp.net में, Global.asax.cs क्लास में, मैं लॉग इन करता हूँ जब ऐप शुरू होता है, रोकता है और अप्रतिबंधित अपवाद फेंकता है:

  • Application_Start()
  • Application_End()
  • Application_Error()

मैं एएसपी.नेट कोर में ऐसा कैसे करूं? इसमें Startup क्लास है, लेकिन यह कॉन्फ़िगरेशन के लिए है।

ऐप के प्रारंभ / स्टॉप / एरर इवेंट में मैं कहाँ हुकूंगा?


आपको माइक्रोसॉफ्ट का प्रयोग करना होगा। एस्पनेट कॉयर। होस्टिंग। आईपैक्चर लाइफटाइम

    /// <summary>
    /// Triggered when the application host has fully started and is about to wait
    /// for a graceful shutdown.
    /// </summary>
    CancellationToken ApplicationStarted { get; }

    /// <summary>
    /// Triggered when the application host is performing a graceful shutdown.
    /// Requests may still be in flight. Shutdown will block until this event completes.
    /// </summary>
    CancellationToken ApplicationStopping { get; }

    /// <summary>
    /// Triggered when the application host is performing a graceful shutdown.
    /// All requests should be complete at this point. Shutdown will block
    /// until this event completes.
    /// </summary>
    CancellationToken ApplicationStopped { get; }

IApplication का उदाहरण लाइफटाइम Configure विधि में प्राप्त किया जा सकता है। इसके अलावा यहां इलोगजरफैक्टर जोड़ें:

public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime, ILoggerFactory loggerFactory)
{
    // use applicationLifetime
}

ILoggerFactory होने के बाद, आप ILogger उदाहरण बना सकते हैं :

var logger = loggerFactory.CreateLogger("StartupLogger"); 

इसलिए आपको सिर्फ ILoggerFactory (या ILoggerFactory के उदाहरण को जारी रखने के लिए स्टार्टअप क्लास में एक संपत्ति बनाने की ज़रूरत है, अगर आप अलग-अलग ईवेंट्स के लिए अलग-अलग लिगर इंस्टेंस बनाना चाहते हैं) संक्षेप में:

public class Startup 
{
    private ILogger _logger;

    public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime, ILoggerFactory loggerFactory) 
    {
        applicationLifetime.ApplicationStopping.Register(OnShutdown);
        ... 
        // add logger providers
        // loggerFactory.AddConsole()
        ...
        _logger = loggerFactory.CreateLogger("StartupLogger");
    }

    private void OnShutdown()
    {
         // use _logger here;
    }
}

कृपया CaptureStartupErrors और विधि देखें। .CaptureStartupErrors(true) जो आपको समस्या ढूंढने में सहायता करेगा।

यह विशेष रूप से आसान है जब कुछ स्थानीय होस्ट पर सही चलता है लेकिन एज़्यूर में विफल रहता है

यहां नेटकोर वेब ऐप के लिए मेरी सामान्य विन्यास है:

public static IWebHost BuildWebHost(string[] args) => WebHost
            .CreateDefaultBuilder(args)
            .CaptureStartupErrors(true)
            .UseKestrel()
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseAzureAppServices()
            .Build();

Azure App सेवा में आप बाद में लॉग स्ट्रीम में लॉग को https://<appname>.scm.azurewebsites.net/api/logstream उपकरण में देख सकते हैं https://<appname>.scm.azurewebsites.net/api/logstream





asp.net-core