ASP.Net MVC ile Post Datasını Loglama
02 Kasım 2018
1 dk okuma süresi
289 okunma
Bazen controller'da post işlemlerini loglamak isteyebilirsiniz. Bunun için her controller'a gidip bir log dosyası oluşturmanıza gerek yok. Kendinize Controller sınıfından türeyen bir baseclass veya ActionFilterAttribute'ünden türeyen bir filter class'ı yazabilirsiniz. Ben örneği filter class üzerinden yapıyorum, her controller'a uygulamak istemeyeceğinizi düşünüyorum. Bu nedenle attribute kullanmak en mantıklısı. Ben loglama için Nlog kullanıyorum, gerçi o kısım çok önemli değil, siz kendinize göre konfigüre edebilirsiniz.
using System.Linq; using System.Web.Mvc; using Newtonsoft.Json; public class PostLogFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { // sadece post methodunda bu işlemi yaptırıyoruz if (filterContext.HttpContext.Request.IsPost()) { var logger = new LoggerRepository(NLog.LogManager.GetCurrentClassLogger()); var form = filterContext.HttpContext.Request.Form; var dictionary = form.AllKeys.ToDictionary(k => k, k => form[k]); var jsonPostedData = JsonConvert.SerializeObject(dictionary); logger.Info(jsonPostedData); } base.OnActionExecuting(filterContext); } }
Kullanımı ise şu şekilde;
Controller veya direk action üzerine aşağıdaki gibi [PostLogFilter] yazarak aktif edebilirsiniz.
[PostLogFilter] public partial class MyController : Controller { // ... }
Yazılarıma abone olmak ister misiniz?
İlginizi çekebilecek diğer yazılar.
Webapi "Get exception Method not found: 'System.Collections.ObjectModel.Collection`1