Thinktecture IdentityServer v3'te günlüğe kaydetmeyi nasıl etkinleştiririm?

Thinktecture IdentityServer v3'te günlüğe kaydetmeyi nasıl etkinleştiririm?

Şu anda "Beklenmeyen bir hata oluştu" yazan genel bir hata sayfası alıyorum.

Genel hatanın, peşimde olduğum ayrıntıları kaydetmek için bazı ILog uygulamasını çözdüğü görünen ErrorPageFilterAttribute tarafından döndürüldüğünü çözebildim.

Bir şekilde yapılandırılması gereken ILog 'un somut bir uygulaması olduğunu düşünüyorum.

10

8 cevap

Uzman değilim ama IdentityServer hakkında bir şeyler biliyorum, bu yüzden yardımcı olabilirim. IdentityServer v3, örneğin NLog, Log4Net veya Serilog gibi birkaç günlük sağlayıcıyı destekler. Hangisini kullanmak istediğinizi seçmeniz ve yapılandırmanız gerekir.

Nasıl yapılacağını görmek için aşağıdaki projeyi indirmenizi öneririm IdentityServer3.Samples ile örnekleri Github'dan. Orada, diğerlerinin yanı sıra WebHost (en az (en)) ) NLog kullanan proje. WebHost (minimal) , IdentityServer v3'ün IIS ile temel (en az) yapılandırmasını gösteren bir örnektir.

Başka bir proje SelfHost (Serog ile az ) , Serilog'un IdentityServer bir konsol uygulaması tarafından (IIS olmadan) barındırıldığı senaryoda oturum açmak için nasıl kullanılacağını gösterir.

DÜZENLEME:

Thinktecture.IdentityServer.Core.Logging ad alanının, ILogProvider 'in birkaç uygulaması vardır. İşte bunlardan birkaçı.

Log4NetLogProvider, that uses log4net.

NLogLogProvider, that uses NLog.

DiagnosticsTraceLogProvider, that uses System.Diagnostics.Trace.

TraceSourceLogProvider, that uses System.Diagnostics.TraceSource.

Öncelikle gerekli paketi kurmanın ya da istediğiniz Günlük Sağlayıcı için gerekli kütüphaneyi referans almanın yanı sıra, başlangıçta bunun gibi mevcut Günlük Sağlayıcı olacak şekilde ayarlamanız gerekir.

LogProvider.SetCurrentLogProvider(new DiagnosticsTraceLogProvider());

Geçerli Günlük Sağlayıcınızın kullandığı temel paketi veya kitaplığı yapılandırmak için gereken adımları izlemeye devam ettiğinizden emin olun. Örneğin, aşağıdaki yapılandırma DiagnosticsTraceLogProvider ile kullanılabilir:


  
    <trace autoflush="true">
      
        
      
    
  

EDIT 2

Cevabımı yazdığımdan bu yana bazı detaylar değiştirildi. Şimdi IdentityServer LibLog kütüphanesini kullanıyor ve orada ILogProvider uygulamasının farklı uygulamalarını bulabilirsiniz.

Özel Hibeler (daha fazla özelleştirme) projesi ) , LibLog'un nasıl kullanılacağını gösterir.

9
katma
Aynı şeyi alıyorum - kayıt ad alanında sadece bir noop sağlayıcı var ve görebildiklerimle ilgili hiçbir paket yok.
katma yazar iwayneo, kaynak
alkış @ MichałKomorowski :)
katma yazar iwayneo, kaynak
Sağol Michal. Cevabını biraz daha açıkladım.
katma yazar Biscuits, kaynak
@Mohan Benim cevabım 1 yıldan önce gelen IdentityServer v3 için özeldir. Başka bir sürüm kullanıyor olabilirsiniz.
katma yazar Michał Komorowski, kaynak
@iwayneo Ayrıntılar için son düzenlememe bakın.
katma yazar Michał Komorowski, kaynak
'LogProvider nereden? 'LogProvider' ve 'dot' yazarken 'CreateLogProvider' ifadesini görüyorum. 'SetCurrentLogProvider' değil. 'LibLog'u kurdum
katma yazar Mohan Radhakrishnan, kaynak
IdentityServer v3'tür.
katma yazar Mohan Radhakrishnan, kaynak

Son sürüm BURAYA belgelerinin ardından .Logger , Startup.cs öğenizde.

Örneğin, Serilog (Serilog'u arayarak Nuget aracılığıyla kurun) kullanarak bu satırı ekleyerek bir dosyaya günlük ayarlayabilirsiniz Startup sınıfının Configuration yöntemindeki kodun

Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()//change with your desired log level
            .WriteTo.File(@"C:\myPath.txt")//remember to assign proper writing privileges on the file
            .CreateLogger();

Daha fazla seçenek için yukarıdaki belgelere bakın.

6
katma
hoş bir ek, teşekkürler :)
katma yazar Naigel, kaynak
Bu eski cevaba yorum yaptığın için üzgünüm. ASP.NET Core 2.0 projesinde çalışmasını sağlamak için aşağıdakileri yaptım 1) Yukarıdaki kodu Startup sınıfının yapıcısına ekledi. 2) Başlangıç ​​sınıfındaki Configure yöntemine ek ILoggerFactory logFactory parametresi eklendi. 3) Yapılandır yöntemi içinde bu satır eklendi logFactory.AddSerilog ();
katma yazar Thangadurai, kaynak

Son sürüm BURAYA belgelerinin ardından .Logger , Startup.cs öğenizde.

Örneğin, Serilog (Serilog'u arayarak Nuget aracılığıyla kurun) kullanarak bu satırı ekleyerek bir dosyaya günlük ayarlayabilirsiniz Startup sınıfının Configuration yöntemindeki kodun

Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()//change with your desired log level
            .WriteTo.File(@"C:\myPath.txt")//remember to assign proper writing privileges on the file
            .CreateLogger();

Daha fazla seçenek için yukarıdaki belgelere bakın.

6
katma
hoş bir ek, teşekkürler :)
katma yazar Naigel, kaynak
Bu eski cevaba yorum yaptığın için üzgünüm. ASP.NET Core 2.0 projesinde çalışmasını sağlamak için aşağıdakileri yaptım 1) Yukarıdaki kodu Startup sınıfının yapıcısına ekledi. 2) Başlangıç ​​sınıfındaki Configure yöntemine ek ILoggerFactory logFactory parametresi eklendi. 3) Yapılandır yöntemi içinde bu satır eklendi logFactory.AddSerilog ();
katma yazar Thangadurai, kaynak

Son sürüm BURAYA belgelerinin ardından .Logger , Startup.cs öğenizde.

Örneğin, Serilog (Serilog'u arayarak Nuget aracılığıyla kurun) kullanarak bu satırı ekleyerek bir dosyaya günlük ayarlayabilirsiniz Startup sınıfının Configuration yöntemindeki kodun

Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()//change with your desired log level
            .WriteTo.File(@"C:\myPath.txt")//remember to assign proper writing privileges on the file
            .CreateLogger();

Daha fazla seçenek için yukarıdaki belgelere bakın.

6
katma
hoş bir ek, teşekkürler :)
katma yazar Naigel, kaynak
Bu eski cevaba yorum yaptığın için üzgünüm. ASP.NET Core 2.0 projesinde çalışmasını sağlamak için aşağıdakileri yaptım 1) Yukarıdaki kodu Startup sınıfının yapıcısına ekledi. 2) Başlangıç ​​sınıfındaki Configure yöntemine ek ILoggerFactory logFactory parametresi eklendi. 3) Yapılandır yöntemi içinde bu satır eklendi logFactory.AddSerilog ();
katma yazar Thangadurai, kaynak
4
katma
İyi bulmak. Teşekkürler!
katma yazar Biscuits, kaynak
Lib'in yazarına “İyi bul” derken çok komik. :)
katma yazar Quinton Smith, kaynak

Bir nedenle yeni bir günlük dosyasına yazmadığı bir log4net gotcha var. Startup.cs'im tam anlamıyla şunu içeriyor:

Log.Debug("starting log.  do not remove this line.");
LogProvider.GetLogger(typeof(Startup)).Log(LogLevel.Debug,() => "starting up");

Neden olduğunu bilmiyorum, bu işe yaramadan önce bir avuç saç çıkardığımı biliyorum.

0
katma

Bir nedenle yeni bir günlük dosyasına yazmadığı bir log4net gotcha var. Startup.cs'im tam anlamıyla şunu içeriyor:

Log.Debug("starting log.  do not remove this line.");
LogProvider.GetLogger(typeof(Startup)).Log(LogLevel.Debug,() => "starting up");

Neden olduğunu bilmiyorum, bu işe yaramadan önce bir avuç saç çıkardığımı biliyorum.

0
katma

Bir nedenle yeni bir günlük dosyasına yazmadığı bir log4net gotcha var. Startup.cs'im tam anlamıyla şunu içeriyor:

Log.Debug("starting log.  do not remove this line.");
LogProvider.GetLogger(typeof(Startup)).Log(LogLevel.Debug,() => "starting up");

Neden olduğunu bilmiyorum, bu işe yaramadan önce bir avuç saç çıkardığımı biliyorum.

0
katma