نحوه ثبت لاگ های فعالیت کاربران در Asp.net Core
با سلام
من یه پنل با دات نت کور 2 پیاده سازی کردم میخوام فعالیت ادمین های پنل رو لاگ گیری کنم مثل زمان ورود و خروج تغییراتی که انجام میدن و ... رو تو دیتا بیس ثبت کنم. ممنون میشم راهنماییم کنین
پاسخ هوش مصنوعی
برای ثبت لاگ های فعالیت کاربران در 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
ثبت شده است. اطلاعات لاگ به دیتا بیس یا هر مکانی که شما مشخص کرده اید، ارسال خواهد شد.
لاگ های ذخیره شده شما می توانند شامل تاریخ و زمان، نام کاربر، و جزییات فعالیت باشند که می توانید بر اساس نیاز خود آنها را سفارشی کنید.
یک راه ساده این هست که یک جدول درست کنید با فیلدهای زیر
Logid
EnterDateTime
EndDatetime
Userid
خب حالا هر کاربری وارد سیستم میشه EnterDateTime و Userid رو مقداردهی کنید.
و هر موقع خارج شد از سیستم مقدار EndDateTime رو با ساعت و تاریخی که خارج شد از سیستم آپدیت کنید.
در مورد فعالیتهایی که کاربرانانجام میدن این موضوع هم باید در تمامی جداولتون با فیلد UserId ثبت بشه. یعنی مثلا اگر کاربر رکوردی رو توی دیتابیس ذخیره کرد همون جا UserId اون کاربر هم ذخیره بشه که مشخص باشه این فیلد توسط کدوم UserId ثبت شده.
سلام شما میتونین از کتابخونه serilog استفاده کنین که با توجه به مستنداتش میتونین تیبل اون رو روی دیتا بیس خود یا یه دیتا بیس جدا ایجاد کنین و کلیه فعالیت های کاربر را با دستورات بسیار ساده لاگ بزنین در جدول ذخیره کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2