public bool Load( XElement e, IActivityMonitor monitor )
{
if( e == null ) throw new ArgumentNullException( "e" );
if( monitor == null ) throw new ArgumentNullException( "monitor" );
try
{
if( e.Name != "GrandOutputConfiguration" ) throw new XmlException( "Element name must be <GrandOutputConfiguration>." + e.GetLineColumnString() );
// AppDomainDefaultFilter was the name before.
LogFilter? globalDefaultFilter = e.GetAttributeLogFilter( "GlobalDefaultFilter", false )
?? e.GetAttributeLogFilter( "AppDomainDefaultFilter", false );
SourceFilterApplyMode applyMode;
Dictionary<string, LogFilter> sourceFilter = ReadSourceOverrideFilter( e, out applyMode, monitor );
if( sourceFilter == null ) return false;
RouteConfiguration routeConfig;
using( monitor.OpenGroup( LogLevel.Trace, "Reading root Channel.", null ) )
{
XElement channelElement = e.Element( "Channel" );
if( channelElement == null )
{
monitor.SendLine( LogLevel.Error, "Missing <Channel /> element." + e.GetLineColumnString(), null );
return false;
}
routeConfig = FillRoute( monitor, channelElement, new RouteConfiguration() );
}
// No error: set the new values.
_routeConfig = routeConfig;
_sourceFilter = sourceFilter;
_sourceFilterApplyMode = applyMode;
_globalDefaultFilter = globalDefaultFilter;
return true;
}
catch( Exception ex )
{
monitor.SendLine( LogLevel.Error, null, ex );
}
return false;
}