LogModule 1.0.23
LogModule
LogModule, Roboliza sisteminde çeşitli logları yönetmek ve izlemek için kullanılan bir loglama modülüdür. Farklı log türleri için belirlenen metodlarla, hatalar, kullanıcı hareketleri ve robot logları takip edilip uygun sistemlere iletilir. Modül, RabbitMQ ve API tabanlı loglama mekanizmalarını kullanarak logları kaydeder. LogModule içinde yer alan GlobalExceptionFilter attribute'u sayesinde, sistemde oluşan tüm istisnalar otomatik olarak yakalanır ve bu hatalar, ilgili servis loglarına kaydedilir. UserActivityAttribute bir kullanıcının sisteme gerçekleştirdiği işlemleri ve aktiviteleri izlemek için kullanılan bir özelliktir. Bu attribute, kullanıcının belirli bir eylemi gerçekleştirdiği anda, bu eylemi kaydeder ve loglar. Böylece kullanıcıların sisteme yaptığı girişler, veri güncellemeleri, sayfa görüntülemeleri ya da herhangi bir işlem gibi aktiviteleri takip edilebilir.
Log Türleri
1. SendServiceLog
SendServiceLog, Roboliza servislerinde oluşan hataları RabbitMQ aracılığıyla loglar.
- Kullanım: Servisler arası hata iletilerini merkezi bir loglama sistemine yönlendirir.
- Yapı: Instance tabanlı sınıf, DI (Dependency Injection) kullanır.
2. SendUserActionLog
SendUserActionLog, Roboliza platformunda kullanıcı etkileşimlerini izler ve bu bilgileri RabbitMQ ile loglar.
- Kullanım: Kullanıcı hareketlerini izler ve bu bilgiyi loglamak için RabbitMQ'yu kullanır.
- Yapı: Instance tabanlı sınıf, DI (Dependency Injection) kullanır.
3. SendRobotLog
SendRobotLog, robotlarla ilgili logları API üzerinden kaydeder. Robotun çalışma durumu, hata mesajları ve işlem bilgileri API'ye gönderilir.
- Kullanım: Robotlar ile ilgili logların dış bir servise API üzerinden gönderilmesini sağlar.
- Yapı: Instance tabanlı sınıf, DI (Dependency Injection) kullanır.
Projeye Ekleme
Windows : %appdata%\NuGet\NuGet.Config Lİnux Veya Mac : ~/.nuget/NuGet/NuGet.Config
...
<packageSources>
...
<add key="localnuget.roboliza.com" value="http://172.16.33.42:5011/v3/index.json" protocolVersion="3" allowInsecureConnections="true" />
<add key="nuget.roboliza.com" value="https://nuget.roboliza.com/v3/index.json" protocolVersion="3" allowInsecureConnections="true" />
</packageSources>
Dockerfile Dosyasına Ekleme
RUN dotnet nuget add source http://172.16.33.42:5011/v3/index.json
RUN dotnet nuget add source https://nuget.roboliza.com/v3/index.json
Log Modülünü Dahil Etme
Program.cs
public void ConfigureServices(IServiceCollection services)
{
var serviceName = "ServiceName";
services.AddLogModule(serviceName);
}
GlobalException ve Kullanıcı Logları Dahil Etme
Program.cs
public void ConfigureServices(IServiceCollection services)
{
// Kullanıcının belirli bir eylemi gerçekleştirdiği anda, bu eylemi kaydedetmek ve loglamak isterseniz aşağıdaki yapılandırmayı ekleyebilirsiniz.
services.AddControllers(opt =>
{
opt.Filters.Add<UserActivityAttribute>();
});
// Sistemde oluşan olası hataları veya exception'ları yakalayıp loglamak isterseniz aşağıdaki yapılandırmayı ekleyebilirsiniz.
services.AddControllers(opt =>
{
opt.Filters.Add<GlobalExeptionFilter>();
});
}
Kullanım RabbitMq
- Gereklilikler: Notification modulünü projenize doğru bir şekilde dahil edebilmek için, öncelikle
RabbitMqModulemodülünü projenize uygun şekilde dahil etmeniz gerekmektedir.RabbitMqModuleaşağıdaki link üzerinden erişebilirsiniz: http://172.16.33.42:5011/packages/rabbitmqmodule.
// Dependency Injection ile enjekte edilen SendServiceLog ve SendUserActionLog
private readonly SendServiceLog sendServiceLog;
private readonly SendUserActionLog sendUserActionLog;
// Servis logu gönderme
sendServiceLog.{Info,Warning,Error}("Mesaj burada");
// Kullanıcı hareketleri logu gönderme
UserActionLog userActionLog = new();
sendUserActionLog.{Info,Warning,Error}(userActionLog);
Kullanım API
// Dependency Injection ile enjekte edilen SendRobotLog
private readonly SendRobotLog sendRobotLog;
// Log gönderme
var response = await sendRobotLog.AddRobotLog(BaseUrl,Token,robotLog);
IgnoreLogAttribute Kullanımı
IgnoreLogAttribute, belirli bir action metodunun kullanıcı hareketleri loglama işlemini devre dışı bırakmak için kullanılan bir attribute'dur. Bu attribute'u, loglama işleminin yapılmaması gereken bir action üzerinde kullanarak, o action'a ait loglama işlevini geçersiz kılabilirsiniz.
Aşağıdaki örnekte olduğu gibi, IgnoreLogAttribute attribute'u bir action metoduna uygulanarak, o metoda ait loglama işlevi devre dışı bırakılabilir:
[IgnoreLogAttribute]
public IActionResult Action()
{
return Ok();
}
No packages depend on LogModule.
.NET 6.0
- AuthModule (>= 1.0.5)
- Microsoft.Extensions.DependencyInjection (>= 6.0.2)
- Newtonsoft.Json (>= 13.0.3)