Log Request and Response Details of your Actions in ASP.NET Core.
- Execution date time (TimeStamp)
 - Execution duration (Elapsed)
 - Action Arguments (like your ViewModels)
 - ModelState (IsValid and Errors)
 - Request Path (Host and QueryString and RouteValues)
 - Request Method
 - Request Cookies
 - Request Headers
 - User.Identity (UserName and IsAuthenticated and Claims)
 - Response Cookies
 - Response Headers
 - Response StatusCode
 - IpAddress
 - UrlReferrer
 - Exception if thrown
 
You can add your desired details like UserAgent info (such as browser, os, ... details) in
LogRequestAttribute.OnActionExecuting
Just put [LogRequest] attribute on your actions or register it globally
public class HomeController : Controller
    {
        public HomeController()
        {
        }
        [LogRequest]
        public IActionResult Index(MyViewModel myViewModel)
        {
            return View();
        }
        [LogRequest]
        public IActionResult Privacy()
        {
            throw new Exception("test");
            return View();
        }
    }Check out Program.cs and Startup.cs to see how to Configuration.
This uses Serilog and Serilog.AspNetCore for logging and MSSqlServer sink but you can use any other Sinks.
