public LoadFromFile ( string path, IActivityMonitor monitor ) : bool | ||
path | string | Path to the configuration xml file. |
monitor | IActivityMonitor | Monitor that will be used. |
return | bool |
/// <summary> /// Ensures that the <see cref="Default"/> GrandOutput is created (see <see cref="EnsureActiveDefault"/>) and configured with default settings: /// only one one channel with its minimal filter sets to Debug with one text file handler that writes .txt files in "<see cref="SystemActivityMonitor.RootLogPath"/>\GrandOutputDefault" directory. /// The <see cref="SystemActivityMonitor.RootLogPath"/> must be valid and if a GrandOutput.config file exists inside, it is loaded as the configuration. /// If it exists, it must be valid (otherwise an exception is thrown). /// Once loaded, the file is monitored and any change that occurs to it dynamically triggers a <see cref="SetConfiguration"/> with the new file. /// </summary> /// <param name="monitor">An optional monitor.</param> static public GrandOutput EnsureActiveDefaultWithDefaultSettings(IActivityMonitor monitor = null) { lock ( _defaultLock ) { if (_default == null) { if (monitor == null) { monitor = new SystemActivityMonitor(true, "GrandOutput") { MinimalFilter = GrandOutputMinimalFilter } } ; using (monitor.OpenGroup(LogLevel.Info, "Attempting Default GrandOutput configuration.", null)) { try { SystemActivityMonitor.AssertRootLogPathIsSet(); _configPath = SystemActivityMonitor.RootLogPath + "GrandOutput.config"; GrandOutputConfiguration def = CreateDefaultConfig(); if (!File.Exists(_configPath)) { File.WriteAllText(_configPath, _defaultConfig); } if (!def.LoadFromFile(_configPath, monitor)) { throw new CKException("Unable to load Configuration file: '{0}'.", _configPath); } GrandOutput output = new GrandOutput(); if (!output.SetConfiguration(def, monitor)) { throw new CKException("Failed to set Configuration."); } StartMonitoring(monitor); _default = output; ActivityMonitor.AutoConfiguration += m => _default.Register(m); } catch (Exception ex) { monitor.SendLine(LogLevel.Fatal, null, ex); throw; } } } } return(_default); } const string _defaultConfig = @"<GrandOutputConfiguration> <Channel MinimalFilter=""Debug""> <Add Type=""TextFile"" Name=""All"" Path=""GrandOutputDefault"" MaxCountPerFile=""20000"" /> </Channel> </GrandOutputConfiguration>";