دسته بندی ها
10:32 1399/05/03

نحوه ثبت لاگ های فعالیت کاربران در Asp.net Core

مشخصات سوال کننده :
کاربر : vahideh     امتیاز کاربر : ‎−1     رتبه کاربر : 7100
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 4499
هوش مصنوعی

پاسخ هوش مصنوعی

برای ثبت لاگ های فعالیت کاربران در ASP.NET Core، می توانید از سیستم لاگ گیری داخلی این فریمورک استفاده کنید یا یک کتابخانه مخصوص لاگ گیری مانند Serilog یا NLog را به پروژه خود اضافه کنید. در ادامه، یک روش ساده با استفاده از Serilog برای ثبت لاگ ها را بررسی می کنیم.

ابتدا، شما باید پکیج Serilog را به پروژه خود اضافه کنید. برای این کار، از دستور زیر در Package Manager Console استفاده کنید:

Install-Package Serilog.AspNetCore
Install-Package Serilog.Sinks.SqlServer

سپس، برای پیکربندی Serilog در فایل Program.cs، کد زیر را اضافه کنید:

using Serilog;

public class Program
{
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .WriteTo.SqlServer("connection_string", "Logs")
            .CreateLogger();

        try
        {
            Log.Information("Starting up the application.");
            CreateHostBuilder(args).Build().Run();
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Application start-up failed.");
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseSerilog() // استفاده از Serilog
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup();
            });
}

حالا می توانید در کنترلرهای خود فعالیت های کاربر را ثبت کنید. به عنوان مثال:

public class AdminController : Controller
{
    private readonly ILogger _logger;

    public AdminController(ILogger logger)
    {
        _logger = logger;
    }

    public IActionResult Login(string username)
    {
        _logger.LogInformation("Admin {Username} logged in at {Time}", username, DateTime.UtcNow);
        // ثبت لاگ و سایر منطق ورود
        return View();
    }

    public IActionResult Logout()
    {
        _logger.LogInformation("Admin logged out at {Time}", DateTime.UtcNow);
        // ثبت لاگ و سایر منطق خروج
        return View();
    }

    public IActionResult UpdateSettings(string settingDetails)
    {
        _logger.LogInformation("Admin updated settings: {Details} at {Time}", settingDetails, DateTime.UtcNow);
        // ثبت لاگ و سایر منطق تغییرات
        return View();
    }
}

در کد بالا، در هر متد، فعالیت های مختلف کاربر (ورود، خروج و تغییرات) با استفاده از ILogger ثبت شده است. اطلاعات لاگ به دیتا بیس یا هر مکانی که شما مشخص کرده اید، ارسال خواهد شد.

لاگ های ذخیره شده شما می توانند شامل تاریخ و زمان، نام کاربر، و جزییات فعالیت باشند که می توانید بر اساس نیاز خود آنها را سفارشی کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 12:30 1399/05/03

یک راه ساده این هست که یک جدول درست کنید با فیلدهای زیر

 

Logid

EnterDateTime

EndDatetime

Userid

خب حالا هر کاربری وارد سیستم میشه EnterDateTime و Userid رو مقداردهی کنید.

و هر موقع خارج شد از سیستم مقدار EndDateTime رو با ساعت و تاریخی که خارج شد از سیستم آپدیت کنید.

 

در مورد فعالیتهایی که کاربران‌انجام میدن این موضوع هم باید در تمامی جداولتون با فیلد UserId ثبت بشه. یعنی مثلا اگر کاربر رکوردی رو توی دیتابیس ذخیره کرد همون جا UserId اون کاربر هم ذخیره بشه که مشخص باشه این فیلد توسط کدوم UserId ثبت شده.

به این پاسخ امتیاز بدهید    1
امتیاز: 518 رتبه: 4
پاسخ دهنده : Mostapha 14:24 1399/05/03

سلام شما میتونین از کتابخونه serilog استفاده کنین که با توجه به مستنداتش میتونین تیبل اون رو‌ روی دیتا بیس خود یا یه دیتا بیس جدا ایجاد کنین ‌و کلیه فعالیت های کاربر را با دستورات بسیار ساده لاگ‌ بزنین ‌‌در جدول ذخیره کنید. 

به این پاسخ امتیاز بدهید    1
امتیاز: 5 رتبه: 110
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود