public ShaolinqErrorLog(IDictionary config) { var dataAccessModelTypeName = config.Find("dataAccessModelType", string.Empty); if (string.IsNullOrEmpty(dataAccessModelTypeName)) { throw new ApplicationException("DataAccessModelType not specified"); } var modelType = Type.GetType(dataAccessModelTypeName); if (modelType == null) { throw new ApplicationException($"Could not find type {dataAccessModelTypeName}"); } if (!modelType.GetInterfaces().Contains(typeof(IElmahDataAccessModel))) { throw new ApplicationException("DataAccessModelType must implement IElmahDataAccessModel"); } var dataAccessModelConfigSection = config.Find("dataAccessModelConfigSection", modelType.Name); var dataAccessModelConfiguration = ConfigurationBlock<DataAccessModelConfiguration>.Load(dataAccessModelConfigSection); this.dataModel = (IElmahDataAccessModel)DataAccessModel.BuildDataAccessModel( Type.GetType(dataAccessModelTypeName), dataAccessModelConfiguration); // Set the application name as this implementation provides per-application isolation over a single store. // Use application name of "*" to disable per-application isolation. var appName = config.Find("applicationName", string.Empty); if (appName.Length > MaxAppNameLength) { throw new ApplicationException($"Application name is too long. Maximum length allowed is {MaxAppNameLength.ToString("N0")} characters."); } ApplicationName = appName; }
public ShaolinqErrorLog(IDictionary config) { var dataAccessModelTypeName = config.Find("dataAccessModelType", string.Empty); if (string.IsNullOrEmpty(dataAccessModelTypeName)) { throw new ApplicationException("DataAccessModelType not specified"); } var modelType = Type.GetType(dataAccessModelTypeName); if (modelType == null) { throw new ApplicationException($"Could not find type {dataAccessModelTypeName}"); } if (!modelType.GetInterfaces().Contains(typeof(IElmahDataAccessModel))) { throw new ApplicationException("DataAccessModelType must implement IElmahDataAccessModel"); } var dataAccessModelConfigSection = config.Find("dataAccessModelConfigSection", modelType.Name); var dataAccessModelConfiguration = ConfigurationBlock <DataAccessModelConfiguration> .Load(dataAccessModelConfigSection); this.dataModel = (IElmahDataAccessModel)DataAccessModel.BuildDataAccessModel( Type.GetType(dataAccessModelTypeName), dataAccessModelConfiguration); // Set the application name as this implementation provides per-application isolation over a single store. // Use application name of "*" to disable per-application isolation. var appName = config.Find("applicationName", string.Empty); if (appName.Length > MaxAppNameLength) { throw new ApplicationException($"Application name is too long. Maximum length allowed is {MaxAppNameLength.ToString("N0")} characters."); } ApplicationName = appName; }