public PerformanceMonitor(PerformanceMonitorConfiguration configuration, ISession session, ILog log = null, bool?forceEnabledState = null)
        {
            _configuration  = configuration;
            ContinueOnError = true;

            _monitorLog = log ?? _configuration.GetLogger();
            _genericLog = LogManager.GetLogger(_typeOfThis);

            if (_configuration != null && forceEnabledState.HasValue)
            {
                _configuration.Enabled = forceEnabledState.Value;
            }

            try
            {
                if (_configuration?.Enabled == true)
                {
                    if (configuration.ControllerAction.Enabled)
                    {
                        ControllerActionMonitor = new ActionMonitor(_configuration.ControllerAction, session);
                    }

                    if (configuration.DataConfiguration.Enabled)
                    {
                        if (configuration.DataConfiguration.ClientData.Enabled)
                        {
                            RequestMonitor = new DataMonitor("Request Data", configuration.DataConfiguration.ClientData, session);
                        }

                        if (configuration.DataConfiguration.Model2DTO.Enabled)
                        {
                            ResponseMonitorPreAction  = new DataMonitor("Response Data Pre Action", _configuration.DataConfiguration.Model2DTO, session);
                            ResponseMonitorPostAction = new DataMonitor("Response Data Post Action", _configuration.DataConfiguration.Model2DTO, session);
                        }

                        if (configuration.DataConfiguration.DTO2ViewModel.Enabled)
                        {
                            ConversionMonitor = new DataMonitor("DTO to ViewModel Conversion", _configuration.DataConfiguration.DTO2ViewModel, session);
                        }
                    }

                    if (configuration.DBFlush.Enabled)
                    {
                        DatabaseFlushMonitor = new DataMonitor("Database Flush Monitor", configuration.DBFlush, session);
                    }
                }
            }
            catch (Exception e)
            {
                _genericLog.Error($"{_nameOfThis} - Failed to initialize {_nameOfThis}: {e.Message}");
                _genericLog.Debug($"{_nameOfThis} - Failed to initialize {_nameOfThis}: {e.StackTrace}");
                if (!ContinueOnError)
                {
                    throw;
                }
            }
        }
Esempio n. 2
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            base.OnActionExecuting(context);

            var action     = (string)context.RouteData.Values["Action"];
            var controller = (string)context.RouteData.Values["Controller"];

            context.HttpContext.SetApiRequestConfig(LogEnabled, AllowPartialResponse, controller, action);

            // var manager = ServiceLocator.Current.GetInstance<IMiniSessionService>();
            var manager = context.HttpContext.RequestServices.GetRequiredService <IMiniSessionService>();


            if (ReadOnly)
            {
                manager.OpenSession();
            }
            else
            {
                manager.OpenSessionWithTransaction();
            }
            ExposedAPIMonitor = new ActionMonitor(ExposedAPIMonitorConfiguration, manager.Session, null);
            ExposedAPIMonitor?.Start();
        }