#48- Asp.NET Core 6 + Angular İle Mini E-Ticaret | Serilog İle Loglama ve Seq İle Görselleştirme

Поделиться
HTML-код
  • Опубликовано: 12 ноя 2024

Комментарии • 44

  • @Necromonas
    @Necromonas 8 месяцев назад +5

    23:20 hataların hocayla birlikte çözülmesi bence çok iyi oluyor, muhtemelen başka bir eğitimde bu kısımlar kesilir. Öyle olunca da Cem Yılmaz'ın dediği gibi "Burada yapılmışı var" tadında bir eğitim oluyor. Bu haliyle eğitimler hem daha samimi oluyor, hem de hatalara nasıl yaklaşılacağını görüyoruz.

  • @murad-dov
    @murad-dov 11 месяцев назад +3

    Hocam Allah razı olsun sizden, ellerinize sağlık

  • @korayozyurt2341
    @korayozyurt2341 2 года назад +3

    Elinize sağlık hocam kapsamlı bir içerik olmuş.
    Sektörde loglama zaman zaman kısa vadede zaman bakımından maliyet olarak gözükse de uzun vadede iyi kurgulanmayan loglama çok daha maliyetli olmakta.

  • @berk1854
    @berk1854 2 года назад +25

    Hocam her zamanki gibi çok güzel bir anlatım yapmışsınız teşekkür ederim.
    MsSql kullanan arkadaşlar
    Program.cs
    SqlColumn sqlColumn = new SqlColumn();
    sqlColumn.ColumnName = "UserName";
    sqlColumn.DataType = System.Data.SqlDbType.NVarChar;
    sqlColumn.PropertyName = "UserName";
    sqlColumn.DataLength = 50;
    sqlColumn.AllowNull = true;
    ColumnOptions columnOpt = new ColumnOptions();
    columnOpt.Store.Remove(StandardColumn.Properties);
    columnOpt.Store.Add(StandardColumn.LogEvent);
    columnOpt.AdditionalColumns = new Collection { sqlColumn};
    Logger log = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("logs/log.txt")
    .WriteTo.MSSqlServer(
    connectionString: builder.Configuration.GetConnectionString("SqlCon"),
    sinkOptions: new MSSqlServerSinkOptions
    {
    AutoCreateSqlTable = true,
    TableName = "logs",
    },
    appConfiguration: null,
    columnOptions: columnOpt
    )
    .Enrich.FromLogContext()
    .Enrich.With()
    .MinimumLevel.Information()
    .CreateLogger();
    builder.Host.UseSerilog(log);
    public class CustomUserNameColumn : ILogEventEnricher
    {
    public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
    {
    var (username, value) = logEvent.Properties.FirstOrDefault(x => x.Key == "UserName");
    if (value != null)
    {
    var getValue= propertyFactory.CreateProperty(username,value);
    logEvent.AddPropertyIfAbsent(getValue);
    }
    }
    }
    kolonu ekleyebilir ve tablodaki sütuna username değerini aktarabilirsiniz.

    • @berkeyalcner3482
      @berkeyalcner3482 Год назад +1

      Çok teşekkürler

    • @jrosso3214
      @jrosso3214 Год назад

      eline sağlık.

    • @shery965
      @shery965 Год назад

      2 günümü aldı. Sonunda yorumlara bakmaya karar verdim ve çalıştı. Teşekkür ederim eline sağlık.

    • @mr.kuzoluk68
      @mr.kuzoluk68 3 месяца назад

      MySql olan versiyonu var mı :((

    • @ay_SsS397
      @ay_SsS397 3 месяца назад

      @@mr.kuzoluk68 bulabildiniz mi acaba

  • @Fds704
    @Fds704 2 года назад +3

    Ellerinize sağlık hocam, çok teşekkürler

  • @aciltedarikdeposu4326
    @aciltedarikdeposu4326 2 года назад +8

    Giyim mağazasında mağaza müdürü 1.5 yıl boyunca her akşam 2 -3 satışı silip parayı cebe atıyormuş 300 küsür bin tl parayı hiç etmiş. Biz programda kullanıcı hareketlerini tutuyorduk. Yeni müdür geldikten 15 gün sonra farketmiş mevzu büyüdü gitti.. bilmem video ile alakalı mı ama Log çok değerli 😎

    • @korayozyurt2341
      @korayozyurt2341 2 года назад +3

      henüz videoyu izlemedim ancak yıllar önce bir ticaret firmasında da benzer bir iş için analiz yapmıştık. Log analizi ile çıkardığımız rapor sonucunda 90 bin sterlin açık çıkmıştı.

  • @bcanylmz
    @bcanylmz Год назад +1

    Güncellenen Entity ve propertylerini kaydetmek istenildiğinde otomatik json olarak kaydettiğinden dolayı json loop oluyor navigation property'ler sonsuz döngüye girerek tekrarlı data oluşturuyor. JsonIgnore yapılsada devam ediyor..

  • @cenkozturk5396
    @cenkozturk5396 2 года назад +3

    hocam bu arada havanın birden kararması ile sizin ekrana cıkmanıza cok gulduk affedin.... 1:17:33

    • @fatihdeniz3702
      @fatihdeniz3702 2 года назад

      Bence hoca o gün oruc tutmus olabilir. Iftardan sonra cekime devam 🤣

  • @feyzakaymakc7385
    @feyzakaymakc7385 Год назад +1

    Teşekkürler hocam

  • @Fds704
    @Fds704 2 года назад +2

    Teşekkürler.

  • @bekirsancak8042
    @bekirsancak8042 2 года назад +3

    Hocam projede rabbitmq'ye de yer verecek misiniz ?

  • @wallpapers_hd
    @wallpapers_hd 8 месяцев назад +1

    Elinize sağlık hocam🌾 zor bir dersti .d

  • @onur6253
    @onur6253 7 месяцев назад

    Aynılarını bir bir yaptım, githubdan da izledim, connectionStringi de zibilyon kere kontrol edip yazdım fakat dbde table oluşturamıyorum. Sorunu yaşayan var mı?
    Sıkıntı isimlendirmeymiş, user_name yerine user-name yazdım diye öyle olmuş. İsterseniz ahmet verebilirsiniz demiştiniz. Dbyi oluşturmamasının sebebi -(özel karakter) mi yoksa farklı isim vermiş olmam mı?

  • @taner-saydam
    @taner-saydam 2 года назад +2

    Bu logu site içerisinde işleyip bizim göstermemiz lazım. Seq çok güzel bir araç ama bana tam istediğimi vermiyor gibi.

    •  2 года назад +3

      Bi monitoring ayağıda site içerisinde olursa tadından yenmez tabi.

    • @taner-saydam
      @taner-saydam 2 года назад +2

      @ Yazım size değildi hocam. Siz teknolojiyi, aracı ve kullanımını göstermişsiniz. Benim maksadım benim gibi bununla uygulama geliştirecek arkadaşlara not olsun manasındaydı. 🙏

    •  2 года назад +3

      @@taner-saydam olsun katıldım bende işte 🙃

  • @mr.kuzoluk68
    @mr.kuzoluk68 3 месяца назад +1

    MySQL olanını nasıl yapıcaz bilen var mı :((

  • @cenkozturk5396
    @cenkozturk5396 2 года назад +4

    Hocam size kısa bir soru daha sormak istiyorum daha 4 gun once yaptıklarımı suan unuttum ne icin yaptıgımı bu normal mi yani o an ciddi anlamda anlamıstım ama simdi koda bakınca neden acab diye sorguluyorum bu olagan bir sey mi yoksa olan mıdır hocam siz ne dusunuyorsunuz ?

    •  2 года назад +4

      Olağan tabi. Onca mimari, onca design pattern öğreniyoruz, uyguluyoruz, yazıyoruz, anlatıyoruz lakin 3 hafta sonra dökümanlara bakmaksızın çoğu şeyi hatırlamıyorum :)

  • @enesozmus
    @enesozmus 2 года назад +2

    - Hocam merhaba, UserName'i yakalayıp veri tabanına yazabilmesi için giriş yapmış olmak ve herhangi bir action methodu çağırmak yetmiyor.
    - Hem giriş yapmış olmak hem de çağırılan action method'un [Authorize(AuthenticationSchemes = "Admin")] ile işaretlenmiş olması gerekiyor. Aksi halde veri tabanında log ile ilgili tabloda UserName null olarak devam ediyor.
    Doğru mu böyle mi çalışması gerekiyor yoksa bende bir eksik mi var?

    •  2 года назад +1

      Doğru, çünkü doğrulamayı Admin şemasıyla gerçekleştiriyoruz.

    • @enesdoner6641
      @enesdoner6641 Год назад

      @ Hocam benim entegrasyonumda [Authorize(AuthenticationSchemes = "Admin")] bunu kullanmıyorum daha farklı bir token üretme kodum var userName sürekli null geliyor breakpoint koydum middleware üzerine iki kere giriyor ilkinde username null ikincisinde gözüküyor veritabanı null oluyor sorun ne olabilir (Mssql kullanıyorum CustomUserNameColumn içeriside null geliyor)

    • @enesdoner6641
      @enesdoner6641 Год назад

      edit hata cözdüm aynı sorunu yaşayanlar için public class CustomUserNameColumn : ILogEventEnricher
      {
      public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
      {
      // HttpContextAccessor örneği üzerinden JWT'yi al
      var httpContextAccessor = new HttpContextAccessor();
      var username = httpContextAccessor.HttpContext?.User?.Identity?.Name;
      if (!string.IsNullOrEmpty(username))
      {
      var getValue = propertyFactory.CreateProperty("UserName", username);
      logEvent.AddPropertyIfAbsent(getValue);
      }
      }
      } bu kod usernameyi getiriyor

  • @jackdaniel4936
    @jackdaniel4936 2 года назад

    Hocam biz konsola yazıyoruz logları daha sonra bir tool yardımıyla konsoldan logları toplayıp Kibanaya yazıyoruz. Tertemiz mis gibi oluyor. Tabi sizin yöntem de gayet güzel.
    Edit: Hocam biz logları db ye yazarsak sürekli bu db şişmez mi ya aklıma takıldı dersin ortasında

  • @cenkozturk5396
    @cenkozturk5396 2 года назад +2

    hocam nolursunuz rabbitMQ anlatın lütfennnnnnnnnnnnnnnn rabbitmq ve worker service veya hanfire bir de lütfennnnnnn redissssssssssssssss lütfen hocam

    • @osmanarslan685
      @osmanarslan685 2 года назад +1

      Hocam Redis ve RabbitMQ özellikle iş ilanlarında çok karşımıza çıkıyor ve çok değerli konular. Sizin anlatımız ile birçok öğrenciniz istifade etmiş olacak. Çok hayır duası alırsınız:)

  • @sonne001
    @sonne001 2 года назад

    Logger log = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("logs/logs.txt")
    .WriteTo.MSSqlServer(builder.Configuration.GetConnectionString("ConnectionString"), "logs", autoCreateSqlTable: true)
    .CreateLogger();
    builder.Host.UseSerilog(log);
    hocam selam mssql için ekledim fakat otomatik olarak oluşturmadı db de logs tablosunu sizce neden ?

    • @yavuzeroglu7994
      @yavuzeroglu7994 Год назад

      burada ki sorunu halledebildin mi bende de aynı problem var ?

    • @korayer35
      @korayer35 Год назад +4

      Logger log = new LoggerConfiguration()
      .WriteTo.Console()
      .WriteTo.File("logs/log.txt")
      .WriteTo.MSSqlServer(builder.Configuration.GetConnectionString("MSSQL"), sinkOptions: new MSSqlServerSinkOptions { TableName = "Log" , AutoCreateSqlTable=true }
      , null, null, LogEventLevel.Warning, null,null, null, null)
      .CreateLogger();
      builder.Host.UseSerilog(log);
      Bunu kullanabilirsiniz.Ayrıca, Serilog.Sinks.MSSqlServer Paketi 6.0.0 yerine 5.8.0 kurarsanız sql bağlantı hatası vermıyor.

    • @murad-ce6sp
      @murad-ce6sp Год назад

      selam.ColumnOptions nasil yazdiniz mssql de ?

    • @tugrul7639
      @tugrul7639 Год назад

      @@korayer35 Teşekkürler işe yaradı