2015-04-15 16 views
9

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

Şu anda "beklenmeyen bir hata oluştu" diyerek genel bir hata sayfası alıyorum.

Genel hata,bazı uygulamayla ilgili sorunları gidermek için görüntülenen ErrorPageFilterAttribute tarafından döndürüldüğünü anlayabildim.

Ben bir şekilde yapılandırılması gerekir ILog bazı somut uygulama şüpheli.

cevap

4

veya basitçe belgelerini okuyun. Benim startup.cs anlamıyla bu içerir:, sadece bu işe yapmadan önce ben saç bir demet parçaladı biliyoruz neden

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

hiçbir fikrim yok.

+0

İyi bulmak. Teşekkürler! – Biscuits

+21

Lib'un yazarı 'İyi Bul' dediğinizde komik. :) –

8

Ben bir uzman değilim ama IdentityServer hakkında bir şey bu yüzden yardım edebilir biliyorum. IdentityServer v3, birkaç günlük sağlayıcıyı destekler, örneğin NLog, Log4Net veya Serilog. Hangisini kullanmak ve yapılandırmak istediğinizi seçmelisiniz.

github gelen örnekleri ile şu projeyi IdentityServer3.Samples indirmek için önermek bunu nasıl bir örnek görmek için. Orada, diğerleri arasında, NLog kullanan WebHost (minimal) projesini bulacaksınız. WebHost (en az) IIS ile IdentityServer v3 bir bazik (en az) konfigürasyonuna gösteren bir örnektir.

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

DÜZENLEME:

Thinktecture.IdentityServer.Core.Logging ad ILogProvider birkaç uygulamaları vardır. İşte bunlardan birkaçı.

Log4NetLogProvider, o log4net kullanır.

NLogLogProvider, o NLog kullanır.

DiagnosticsTraceLogProvider, o System.Diagnostics.Trace kullanır.

TraceSourceLogProvider, o System.Diagnostics.TraceSource kullanır.

önce gerekli paketini yüklerken veya istediğiniz Günlüğü Sağlayıcı için gerekli kütüphane referans yanı sıra, ayrıca bu gibi başlatma sırasında akım Günlüğü Sağlayıcısı olmaya ayarlamanız gerekir.

LogProvider.SetCurrentLogProvider(new DiagnosticsTraceLogProvider()); 

Eğer mevcut günlüğü sağlayıcı kullanan altta yatan paket veya kütüphane yapılandırmak için gerekli olan tüm adımları takip etmeye devam edin. Örneğin, aşağıdaki yapılandırma DiagnosticsTraceLogProvider ile kullanılabilir:

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add name="TextWriter" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="Trace.log" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

DÜZENLEME 2 Ben bazı ayrıntılar değiştirilmiştir benim cevap yazdıktan sonra

. Şimdi IdentityServer LibLog kitaplığı kullanır ve orada ILogProvider farklı uygulamalarını bulabilirsiniz.

proje Custom Grants (more customization) LibLog nasıl kullanılacağını gösterir.

https://identityserver.github.io/Documentation/docsv2/configuration/logging.html

+0

Teşekkürler Michal. Cevabını biraz daha geliştirdim. – Biscuits

+1

'LogProvider nereden? 'LogProvider' ve 'dot' yazdığımda 'CreateLogProvider'ı görüyorum. 'SetCurrentLogProvider' değil. 'LibLog' yükledim –

+0

@Mohan Cevabım, 1 yıldan önce gelen IdentityServer v3 için özeldir. Başka bir versiyon kullanıyor olabilirsiniz. –

0

nedense yeni bir günlük dosyasına yazmaz bir log4net nokta vardır:

6

Son yayın HERE belgelerini takiben Startup.cs ürününüzde Log.Logger ayarını yapabilirsiniz. Serilog kullanarak Örneğin

fazla seçenek için Startup sınıfa

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

arasında Configuration yönteminde bu kod satırı ekleyerek sadece Günlüğü bir dosyaya ayarlayabilirsiniz (Serilog arayarak Nuget aracılığıyla yüklemek) Yukarıdaki belge bağlantısına bakın.

+1

Bu eski cevap hakkında yorum yapmak için üzgünüz. 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 kurucusuna ekledim. 2) Başlangıç ​​sınıfındaki Configure yöntemine "ILoggerFactory logFactory" parametresi eklendi. 3) Yapılandırma yöntemi içinde bu satırı 'logFactory.AddSerilog();' – Thangadurai

+0

hoş ek ekledi, teşekkürler :) – Naigel