Mercurial > repos > IBDev-IBBoard.WarFoundry.API
changeset 0:520818033bb6
Initial commit of WarFoundry code
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AssemblyInfo.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,58 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly: AssemblyTitle("WarFoundry API")] +[assembly: AssemblyDescription("The API for the WarFoundry army builder")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WarFoundry.API")] +[assembly: AssemblyCopyright("IBBoard, 2007")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.0.*")] + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project output directory which is +// %Project Directory%\obj\<configuration>. For example, if your KeyFile is +// located in the project directory, you would specify the AssemblyKeyFile +// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IBBoard.WarFoundry.API.csproj Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,212 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectType>Local</ProjectType> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{59EC117B-F955-44D5-8461-8F44F3A7481A}</ProjectGuid> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ApplicationIcon> + </ApplicationIcon> + <AssemblyKeyContainerName> + </AssemblyKeyContainerName> + <AssemblyName>IBBoard.WarFoundry.API</AssemblyName> + <AssemblyOriginatorKeyFile> + </AssemblyOriginatorKeyFile> + <DefaultClientScript>JScript</DefaultClientScript> + <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> + <DefaultTargetSchema>IE50</DefaultTargetSchema> + <DelaySign>false</DelaySign> + <OutputType>Library</OutputType> + <RootNamespace>IBBoard.WarFoundry</RootNamespace> + <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> + <StartupObject> + </StartupObject> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <OutputPath>bin\Debug\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DocumentationFile> + </DocumentationFile> + <DebugSymbols>true</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <NoStdLib>false</NoStdLib> + <NoWarn> + </NoWarn> + <Optimize>false</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>full</DebugType> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <OutputPath>bin\Release\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE</DefineConstants> + <DocumentationFile> + </DocumentationFile> + <DebugSymbols>false</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <NoStdLib>false</NoStdLib> + <NoWarn> + </NoWarn> + <Optimize>true</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>none</DebugType> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <ItemGroup> + <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" /> + <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" /> + <Reference Include="System"> + <Name>System</Name> + </Reference> + <Reference Include="System.Data"> + <Name>System.Data</Name> + </Reference> + <Reference Include="System.Windows.Forms"> + <Name>System.Windows.Forms</Name> + </Reference> + <Reference Include="System.Xml"> + <Name>System.XML</Name> + </Reference> + <ProjectReference Include="..\..\IBBoard\IBBoard.csproj"> + <Name>IBBoard</Name> + <Project>{5DFD64F6-FC2B-4B4F-B92E-483BAC468105}</Project> + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <Compile Include="API\Ability.cs" /> + <Compile Include="API\ArmourType.cs" /> + <Compile Include="API\Army.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\ArmyCategory.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Category.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Commands\CreateAndAddUnitCommand.cs" /> + <Compile Include="API\Commands\RemoveUnitCommand.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Commands\ReplaceUnitEquipmentCommand.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Commands\SetNameCommand.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Commands\SetUnitEquipmentAmountCommand.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Commands\SetUnitSizeCommand.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Delegates.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\EquipmentItem.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\GameSystem.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Race.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Requirements\AbstractArmyRequirement.cs" /> + <Compile Include="API\Requirements\AbstractFailedRequirement.cs" /> + <Compile Include="API\Requirements\AbstractRequirement.cs" /> + <Compile Include="API\Requirements\AbstractUnitRequirement.cs" /> + <Compile Include="API\Requirements\Delegates.cs" /> + <Compile Include="API\Requirements\FailedRequirement.cs" /> + <Compile Include="API\Requirements\FailedUnitRequirement.cs" /> + <Compile Include="API\Requirements\RequirementAND.cs" /> + <Compile Include="API\Requirements\RequirementOR.cs" /> + <Compile Include="API\Requirements\UnitExcludesRequirement.cs" /> + <Compile Include="API\Requirements\UnitExclusion.cs" /> + <Compile Include="API\Requirements\UnitMaxNumberReached.cs" /> + <Compile Include="API\Requirements\UnitMinNumberReached.cs" /> + <Compile Include="API\Requirements\UnitRequirement.cs" /> + <Compile Include="API\Requirements\UnitRequirementItem.cs" /> + <Compile Include="API\Requirements\UnitRequirementMaxNumber.cs" /> + <Compile Include="API\Requirements\UnitRequirementMinNumber.cs" /> + <Compile Include="API\Requirements\UnitRequiresAtLeastRequirement.cs" /> + <Compile Include="API\Stat.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\Stats.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\StatSlot.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\SystemStats.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\SystemStatsSet.cs" /> + <Compile Include="API\Unit.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\UnitEquipmentItem.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\UnitEquipmentItemObj.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\UnitType.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\WarFoundryCore.cs" /> + <Compile Include="API\WarFoundryFactory.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\WarFoundryFactoryFactory.cs" /> + <Compile Include="API\WarFoundryObject.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="API\WarFoundrySaver.cs" /> + <Compile Include="API\WarFoundryStagedLoadObject.cs" /> + <Compile Include="API\WarFoundryXmlElementName.cs" /> + <Compile Include="API\WarFoundryXmlFactory.cs" /> + <Compile Include="AssemblyInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="tests\WarFoundryFactoryFactoryTest.cs" /> + <Compile Include="tests\WarFoundryFactoryTest.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="libs\log4net.dll" /> + <Content Include="libs\log4net.xml" /> + </ItemGroup> + <ItemGroup> + <Folder Include="testdata\" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <PropertyGroup> + <PreBuildEvent> + </PreBuildEvent> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IBBoard.WarFoundry.API.csproj.user Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,58 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <LastOpenVersion>7.10.3077</LastOpenVersion> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ReferencePath> + </ReferencePath> + <CopyProjectDestinationFolder> + </CopyProjectDestinationFolder> + <CopyProjectUncPath> + </CopyProjectUncPath> + <CopyProjectOption>0</CopyProjectOption> + <ProjectView>ShowAllFiles</ProjectView> + <ProjectTrust>0</ProjectTrust> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <EnableASPDebugging>false</EnableASPDebugging> + <EnableASPXDebugging>false</EnableASPXDebugging> + <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging> + <EnableSQLServerDebugging>false</EnableSQLServerDebugging> + <RemoteDebugEnabled>false</RemoteDebugEnabled> + <RemoteDebugMachine> + </RemoteDebugMachine> + <StartAction>Project</StartAction> + <StartArguments> + </StartArguments> + <StartPage> + </StartPage> + <StartProgram> + </StartProgram> + <StartURL> + </StartURL> + <StartWorkingDirectory> + </StartWorkingDirectory> + <StartWithIE>true</StartWithIE> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <EnableASPDebugging>false</EnableASPDebugging> + <EnableASPXDebugging>false</EnableASPXDebugging> + <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging> + <EnableSQLServerDebugging>false</EnableSQLServerDebugging> + <RemoteDebugEnabled>false</RemoteDebugEnabled> + <RemoteDebugMachine> + </RemoteDebugMachine> + <StartAction>Project</StartAction> + <StartArguments> + </StartArguments> + <StartPage> + </StartPage> + <StartProgram> + </StartProgram> + <StartURL> + </StartURL> + <StartWorkingDirectory> + </StartWorkingDirectory> + <StartWithIE>true</StartWithIE> + </PropertyGroup> +</Project> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IBBoard.WarFoundry.API.mdp Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,98 @@ +<Project name="IBBoard.WarFoundry.API" fileversion="2.0" DefaultNamespace="IBBoard.WarFoundry" language="C#" clr-version="Net_2_0" ctype="DotNetProject"> + <Configurations active="Debug"> + <Configuration name="Debug" ctype="DotNetProjectConfiguration"> + <Output directory="bin/Debug/" assemblyKeyFile="." assembly="IBBoard.WarFoundry.API" /> + <Build debugmode="True" target="Library" /> + <Execution runwithwarnings="False" consolepause="True" runtime="MsNet" clr-version="Net_2_0" /> + <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" /> + </Configuration> + <Configuration name="Release" ctype="DotNetProjectConfiguration"> + <Output directory="bin/Release/" assembly="IBBoard.WarFoundry.API" /> + <Build debugmode="False" target="Library" /> + <Execution runwithwarnings="False" consolepause="True" runtime="MsNet" clr-version="Net_2_0" /> + <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="True" ctype="CSharpCompilerParameters" /> + </Configuration> + </Configurations> + <Contents> + <File name="AssemblyInfo.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Delegates.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Commands/CreateAndAddUnitCommand.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Commands/RemoveUnitCommand.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Commands/ReplaceUnitEquipmentCommand.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Commands/SetNameCommand.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Commands/SetUnitEquipmentAmountCommand.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Commands/SetUnitSizeCommand.cs" subtype="Code" buildaction="Compile" /> + <File name="libs/log4net.dll" subtype="Code" buildaction="Nothing" /> + <File name="libs/log4net.xml" subtype="Code" buildaction="Nothing" /> + <File name="api/Requirements" subtype="Directory" buildaction="Compile" /> + <File name="api/Requirements/UnitExcludesRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitRequirementItem.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/RequirementAND.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/RequirementOR.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitRequiresAtLeastRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitMinNumberReached.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitMaxNumberReached.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/FailedUnitRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitExclusion.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/AbstractArmyRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/FailedRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitRequirementMaxNumber.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/UnitRequirementMinNumber.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/AbstractFailedRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/Delegates.cs" subtype="Code" buildaction="Compile" /> + <File name="api/WarFoundryCore.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/AbstractRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Requirements/AbstractUnitRequirement.cs" subtype="Code" buildaction="Compile" /> + <File name="libs/ICSharpCode.SharpZipLib.dll" subtype="Code" buildaction="Nothing" /> + <File name="api/WarFoundryLoader.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories" subtype="Directory" buildaction="Compile" /> + <File name="api/Factories/AbstractNativeWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/WarFoundryFactoryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects" subtype="Directory" buildaction="Compile" /> + <File name="api/Objects/Ability.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/ArmourType.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/Army.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/ArmyCategory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/Category.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/EquipmentItem.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/GameSystem.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/StagedLoadingRace.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/Stat.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/Stats.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/StatSlot.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/SystemStats.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/SystemStatsSet.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/Unit.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/UnitEquipmentItem.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/UnitEquipmentItemObj.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/UnitType.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/IWarFoundryStagedLoadObject.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/WarFoundryObject.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/Xml" subtype="Directory" buildaction="Compile" /> + <File name="api/Factories/Xml/WarFoundryXmlSaver.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/Xml/WarFoundryXmlFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/Xml/WarFoundryXmlElementName.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/AbstractNonNativeWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/IWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/AbstractWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/AbstractNonNativeFileExtensionWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Savers" subtype="Directory" buildaction="Compile" /> + <File name="api/Savers/IWarFoundryFileSaver.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Savers/WarFoundrySaver.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/INonNativeWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Factories/INativeWarFoundryFactory.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/Race.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/IWarFoundryNativeSourceObject.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/IWarFoundryObject.cs" subtype="Code" buildaction="Compile" /> + <File name="api/Objects/StagedLoadingGameSystem.cs" subtype="Code" buildaction="Compile" /> + </Contents> + <References> + <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <ProjectReference type="Gac" localcopy="True" refto="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <ProjectReference type="Gac" localcopy="True" refto="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <ProjectReference type="Project" localcopy="True" refto="IBBoard" /> + <ProjectReference type="Gac" localcopy="True" refto="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <ProjectReference type="Assembly" localcopy="True" refto="libs/ICSharpCode.SharpZipLib.dll" /> + </References> +</Project> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Commands/CreateAndAddUnitCommand.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,67 @@ +using System; +using IBBoard.Commands; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Commands +{ + /// <summary> + /// Summary description for AddUnitCommand. + /// </summary> + public class CreateAndAddUnitCommand : Command + { + private UnitType addedUnitType; + private Army army; + private ArmyCategory cat; + private Unit addedUnit; + + public CreateAndAddUnitCommand(UnitType toAdd, ArmyCategory catTo, Army armyTo) + { + addedUnitType = toAdd; + cat = catTo; + army = armyTo; + } + + public CreateAndAddUnitCommand(UnitType toAdd, Category catTo, Army armyTo) : this (toAdd, armyTo.GetCategory(catTo), armyTo) + { + } + + public override bool CanExecute() + { + return (addedUnitType!=null && army!=null); + } + + public override string Description + { + get { return "Add unit of "+StringManipulation.CutToLength(addedUnitType.Name, 20)+" to the army"; } + } + + public override string UndoDescription + { + get { return "Remove unit of "+StringManipulation.CutToLength(addedUnitType.Name, 20)+" from army"; } + } + + public override bool Execute() + { + addedUnit = new Unit(addedUnitType, army); + this.Redo(); + return true; + } + + public override void Redo() + { + cat.AddUnit(addedUnit); + } + + public override void Undo() + { + cat.RemoveUnit(addedUnit); + } + + + public override string Name + { + get { return "Add new unit"; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Commands/RemoveUnitCommand.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,57 @@ +using System; +using IBBoard.Commands; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Commands +{ + /// <summary> + /// Summary description for RemoveUnitCommand. + /// </summary> + public class RemoveUnitCommand : Command + { + private Unit unit; + private ArmyCategory cat; + + public RemoveUnitCommand(Unit toRemove) + { + unit = toRemove; + cat = unit.Category; + } + + public override bool CanExecute() + { + return (unit!=null); + } + + public override string Description + { + get { return "Remove an existing unit from the army"; } + } + + public override string UndoDescription + { + get { return "Replace a removed unit"; } + } + + public override bool Execute() + { + this.Redo(); + return true; + } + + public override void Redo() + { + cat.RemoveUnit(unit); + } + + public override void Undo() + { + cat.AddUnit(unit); + } + + public override string Name + { + get { return "Remove unit"; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Commands/ReplaceUnitEquipmentCommand.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,63 @@ +using System; +using IBBoard.Commands; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Commands +{ + /// <summary> + /// Summary description for ReplaceUnitEquipmentCommand. + /// </summary> + public class ReplaceUnitEquipmentCommand : Command + { + private SetUnitEquipmentAmountCommand removeOldCommand, addNewCommand; + //private Unit unit; + //private EquipmentItem oldEquip, newEquip; + //private float newAmount, oldAmount; + + public ReplaceUnitEquipmentCommand(Unit unit, EquipmentItem oldItem, EquipmentItem newItem, float amount) + { + removeOldCommand = new SetUnitEquipmentAmountCommand(unit, oldItem, 0); + addNewCommand = new SetUnitEquipmentAmountCommand(unit, newItem, amount); + } + + public override bool CanExecute() + { + return removeOldCommand.CanExecute() && addNewCommand.CanExecute(); + } + + public override string Description + { + get { return "Replace "+StringManipulation.CutToLength(removeOldCommand.EquipItem.Name, 20)+" with "+StringManipulation.CutToLength(addNewCommand.EquipItem.Name, 20)+ " for "+StringManipulation.CutToLength(removeOldCommand.Unit.Name, 20); } + } + + public override string UndoDescription + { + get { return "Replace "+StringManipulation.CutToLength(addNewCommand.EquipItem.Name, 20)+" with "+StringManipulation.CutToLength(removeOldCommand.EquipItem.Name, 20)+ " for "+StringManipulation.CutToLength(removeOldCommand.Unit.Name, 20); } + } + + public override bool Execute() + { + this.Redo(); + return true; + } + + public override void Redo() + { + removeOldCommand.Redo(); + addNewCommand.Redo(); + } + + public override void Undo() + { + addNewCommand.Undo(); + removeOldCommand.Undo(); + } + + + public override string Name + { + get { return "Replace required equipment"; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Commands/SetNameCommand.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,58 @@ +using System; +using IBBoard.Commands; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Commands +{ + /// <summary> + /// Summary description for SetNameCommand. + /// </summary> + public class SetNameCommand : Command + { + private WarFoundryObject obj; + private string newName, oldName; + + public SetNameCommand(WarFoundryObject toRename, string name) + { + obj = toRename; + newName = name; + oldName = obj.Name; + } + + public override bool CanExecute() + { + return (obj!=null && newName!=null && newName!=""); + } + + public override string Description + { + get { return "Rename "+oldName; } + } + + public override string UndoDescription + { + get { return "Revert name of "+newName; } + } + + public override bool Execute() + { + this.Redo(); + return true; + } + + public override void Redo() + { + obj.Name = newName; + } + + public override void Undo() + { + obj.Name = oldName; + } + + public override string Name + { + get { return "Rename item"; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Commands/SetUnitEquipmentAmountCommand.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,71 @@ +using System; +using IBBoard.Commands; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Commands +{ + /// <summary> + /// Summary description for SetUnitEquipmentAmountCommand. + /// </summary> + public class SetUnitEquipmentAmountCommand : Command + { + private Unit unit; + private EquipmentItem equip; + private float newAmount, oldAmount; + + public SetUnitEquipmentAmountCommand(Unit unit, EquipmentItem item, float amount) + { + this.unit = unit; + equip = item; + newAmount = amount; + oldAmount = unit.GetEquipmentAmount(equip.ID); + } + + public override bool CanExecute() + { + return (unit!=null && equip!=null); + } + + public override string Description + { + get { return "Set "+StringManipulation.CutToLength(equip.Name, 20)+" amount for "+StringManipulation.CutToLength(unit.Name, 20)+" to "+UnitEquipmentItemObj.FormatEquipmentAmount(equip, newAmount); } + } + + public override string UndoDescription + { + get { return "Set "+StringManipulation.CutToLength(equip.Name, 20)+" amount for "+StringManipulation.CutToLength(unit.Name, 20)+" to "+UnitEquipmentItemObj.FormatEquipmentAmount(equip, oldAmount); } + } + + public override bool Execute() + { + this.Redo(); + return true; + } + + public override void Redo() + { + unit.SetEquipmentAmount(equip.ID, newAmount); + } + + public override void Undo() + { + unit.SetEquipmentAmount(equip.ID, oldAmount); + } + + public override string Name + { + get { return "Set equipment amount"; } + } + + public EquipmentItem EquipItem + { + get { return equip; } + } + + public Unit Unit + { + get { return unit; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Commands/SetUnitSizeCommand.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,58 @@ +using System; +using IBBoard.Commands; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Commands +{ + /// <summary> + /// Summary description for SetNameCommand. + /// </summary> + public class SetUnitSizeCommand : Command + { + private Unit unit; + private int newSize, oldSize; + + public SetUnitSizeCommand(Unit toResize, int size) + { + unit = toResize; + newSize = size; + oldSize = unit.Size; + } + + public override bool CanExecute() + { + return (unit!=null && newSize >0 && oldSize > 0); + } + + public override string Description + { + get { return "Change size of "+unit.Name; } + } + + public override string UndoDescription + { + get { return "Revert size of "+unit.Name; } + } + + public override bool Execute() + { + this.Redo(); + return true; + } + + public override void Redo() + { + unit.Size = newSize; + } + + public override void Undo() + { + unit.Size = oldSize; + } + + public override string Name + { + get { return "Change unit size"; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Delegates.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API +{ + public delegate void ObjectChangedDelegate(WarFoundryObject oldValue, WarFoundryObject newValue); + public delegate void ArmyChangedDelegate(Army oldValue, Army newValue); + public delegate void GameSystemChangedDelegate(GameSystem oldValue, GameSystem newValue); + public delegate void ObjectAddDelegate(WarFoundryObject val); + public delegate void ObjectRemoveDelegate(WarFoundryObject val); + public delegate void UnitAddDelegate(Unit val); + public delegate void UnitRemoveDelegate(Unit val); + public delegate void ObjectUpdatedDelegate(WarFoundryObject val, string updatedValName); + public delegate void DoubleValChangedDelegate(WarFoundryObject obj, double oldValue, double newValue); + public delegate void FloatValChangedDelegate(WarFoundryObject obj, float oldValue, float newValue); + public delegate void StringValChangedDelegate(WarFoundryObject obj, string oldValue, string newValue); + public delegate void IntValChangedDelegate(WarFoundryObject obj, int oldValue, int newValue); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/AbstractNativeWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,282 @@ +// WarFoundryXmlFactory.cs +// +// Copyright (C) 2007 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.IO; +using System.Xml; +using System.Xml.Schema; +using System.Collections.Generic; +using System.Text; +using IBBoard; +using IBBoard.IO; +using IBBoard.Lang; +using IBBoard.Logging; +using IBBoard.Xml; +using IBBoard.WarFoundry.API.Objects; +using ICSharpCode.SharpZipLib.Zip; + +namespace IBBoard.WarFoundry.API.Factories +{ + /// <summary> + /// Base abstract class for all factories that load native WarFoundry data. + /// </summary> + public abstract class AbstractNativeWarFoundryFactory : AbstractWarFoundryFactory<ZipFile>, INativeWarFoundryFactory + { + protected static readonly string SYSTEM_ZIP_IDENTIFIER = "WarFoundry_System"; + protected static readonly string RACE_ZIP_IDENTIFIER = "WarFoundry_Race"; + protected static readonly string ARMY_ZIP_IDENTIFIER = "WarFoundry_Army"; + + protected AbstractNativeWarFoundryFactory() + { + //Do nothing - just make the constructor non-public + } + + public abstract void CompleteLoading(IWarFoundryStagedLoadObject obj); + + protected override ZipFile GetFileAsSupportedType (FileInfo file) + { + ZipFile zip = null; + + try + { + zip = new ZipFile(file.FullName); + } + catch(ZipException ex) + { + //Silently dispose - we don't support the file and our other methods should handle that + } + + return zip; + } + + protected override bool CheckCanHandleFileFormat (ZipFile file) + { + bool canHandle = false; + + if (file!=null) + { + canHandle = CheckCanHandleAsSystem(file) || CheckCanHandleAsRace(file) || CheckCanHandleAsArmy(file); + } + + return canHandle; + } + + protected bool CheckCanHandleAsSystem(ZipFile file) + { + return file.ZipFileComment.StartsWith(SYSTEM_ZIP_IDENTIFIER) && CheckCanFindSystemFileContent(file); + } + + protected abstract bool CheckCanFindSystemFileContent(ZipFile file); + + protected bool CheckCanHandleAsRace(ZipFile file) + { + return file.ZipFileComment.StartsWith(RACE_ZIP_IDENTIFIER) && CheckCanFindRaceFileContent(file); + } + + protected abstract bool CheckCanFindRaceFileContent(ZipFile file); + + protected bool CheckCanHandleAsArmy(ZipFile file) + { + return file.ZipFileComment.StartsWith(ARMY_ZIP_IDENTIFIER) && CheckCanFindArmyFileContent(file); + } + + protected abstract bool CheckCanFindArmyFileContent(ZipFile file); + + protected override ICollection<IWarFoundryObject> DoCreateObjectsFromFile (ZipFile file) + { + ICollection<IWarFoundryObject> objects = null; + string comment = file.ZipFileComment; + IWarFoundryObject obj = null; + + if (comment.StartsWith(SYSTEM_ZIP_IDENTIFIER)) + { + obj = CreateGameSystemFromFile(file); + } + else if (comment.StartsWith(RACE_ZIP_IDENTIFIER)) + { + obj = CreateRaceFromFile(file); + } + else if (comment.StartsWith(ARMY_ZIP_IDENTIFIER)) + { + obj = CreateArmyFromFile(file); + } + + if (obj!=null) + { + objects = new List<IWarFoundryObject>(); + objects.Add(obj); + } + + return objects; + } + + +/* + public override bool CanHandleArmyFileFormat(FileInfo file) + { + bool canHandle = false; + + try + { + ZipFile zip = new ZipFile(file.FullName); + canHandle = zip.ZipFileComment.StartsWith(ARMY_ZIP_IDENTIFIER) && CanHandleArmyFileFormat(zip); + } + catch (ZipException) + { + //Not a valid zip file so we can't handle it + } + + return canHandle; + } + + public override bool CanHandleRaceFileFormat(FileInfo file) + { + bool canHandle = false; + + try + { + ZipFile zip = new ZipFile(file.FullName); + canHandle = zip.ZipFileComment.StartsWith(RACE_ZIP_IDENTIFIER) && CanHandleRaceFileFormat(zip); + } + catch (ZipException) + { + //Not a valid zip file so we can't handle it + } + + return canHandle; + } + + public override bool CanHandleSystemFileFormat(FileInfo file) + { + bool canHandle = false; + + try + { + ZipFile zip = new ZipFile(file.FullName); + canHandle = zip.ZipFileComment.StartsWith(SYSTEM_ZIP_IDENTIFIER) && CanHandleSystemFileFormat(zip); + } + catch (ZipException) + { + //Not a valid zip file so we can't handle it + } + + return canHandle; + } + + public abstract bool CanHandleArmyFileFormat(ZipFile file); + public abstract bool CanHandleRaceFileFormat(ZipFile file); + public abstract bool CanHandleSystemFileFormat(ZipFile file); + + public override Army CreateArmyFromFile (FileInfo file) + { + try + { + ZipFile zip = new ZipFile(file.FullName); + return CreateArmyFromFile(zip); + } + catch(ZipException ex) + { + throw new InvalidFileException(Translation.GetTranslation("InvalidArmyFileException", "Cannot get Army for file {0} as it was not a recognised Army file", file.Name), ex); + } + } + + public override Race CreateRaceFromFile (FileInfo file) + { + try + { + ZipFile zip = new ZipFile(file.FullName); + return CreateRaceFromFile(zip); + } + catch(ZipException ex) + { + throw new InvalidFileException(Translation.GetTranslation("InvalidRaceFileException", "Cannot get Race for file {0} as it was not a recognised Race file", file.Name), ex); + } + } + + public override GameSystem CreateGameSystemFromFile (FileInfo file) + { + try + { + ZipFile zip = new ZipFile(file.FullName); + return CreateGameSystemFromFile(zip); + } + catch(ZipException ex) + { + throw new InvalidFileException(Translation.GetTranslation("InvalidGameSystemFileException", "Cannot get Game System for file {0} as it was not a recognised Race file", file.Name), ex); + } + }*/ + + protected Army CreateArmyFromFile(ZipFile file) + { + Army army = CreateArmyFromStream(file, GetArmyDataStream(file)); + //throw new InvalidFileException(Translation.GetTranslation("InvalidArmyFileException", "Cannot get Army for file {0} as it was not an Army file", file.Name)); + return army; + } + + protected abstract Stream GetArmyDataStream(ZipFile file); + protected abstract Army CreateArmyFromStream(ZipFile file, Stream dataStream); + + protected Race CreateRaceFromFile(ZipFile file) + { + try + { + Race race = CreateRaceFromStream(file, GetRaceDataStream(file)); + //throw new InvalidFileException(Translation.GetTranslation("InvalidRaceFileException", "Cannot get Race for file {0} as it was not a Race file", file.Name)); + return race; + } + catch (InvalidFileException ex) + { + throw new InvalidFileException("Data file "+file.Name+" was not a valid race file", ex); + } + } + + protected abstract Stream GetRaceDataStream(ZipFile file); + protected abstract Race CreateRaceFromStream(ZipFile file, Stream dataStream); + + protected GameSystem CreateGameSystemFromFile(ZipFile file) + { + GameSystem system = CreateGameSystemFromStream(file, GetGameSystemDataStream(file)); + //throw new InvalidFileException(Translation.GetTranslation("InvalidGameSystemFileException", "Cannot get Game System for file {0} as it was not a Game System file", file.Name)); + return system; + } + + protected abstract Stream GetGameSystemDataStream(ZipFile file); + protected abstract GameSystem CreateGameSystemFromStream(ZipFile file, Stream dataStream); + + public override bool Equals (object o) + { + if (o == this) + { + return true; + } + else if (o == null || !(this.GetType().Equals(o.GetType()))) + { + return false; + } + + return true; + } + + public override int GetHashCode () + { + return GetType().FullName.GetHashCode(); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/AbstractNonNativeFileExtensionWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,64 @@ +// AbstractNonNativeFileExtensionWarFoundryFactory.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using System.IO; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Factories +{ + public abstract class AbstractNonNativeFileExtensionWarFoundryFactory : AbstractNonNativeWarFoundryFactory<FileInfo> + { + protected abstract string ArmyFileExtension { get; } + protected abstract string RaceFileExtension { get; } + protected abstract string GameSystemFileExtension { get; } + + protected override bool CheckCanHandleFileFormat (FileInfo file) + { + return IsArmyFile(file) || IsRaceFile(file) || IsSystemFile(file); + } + + protected bool IsArmyFile(FileInfo file) + { + return ArmyFileExtension!=null && file.Name.ToLower().EndsWith(ArmyFileExtension); + } + + protected bool IsRaceFile(FileInfo file) + { + return RaceFileExtension!=null && file.Name.ToLower().EndsWith(RaceFileExtension); + } + + protected bool IsSystemFile(FileInfo file) + { + return GameSystemFileExtension!=null && file.Name.ToLower().EndsWith(GameSystemFileExtension); + } + + protected override FileInfo GetFileAsSupportedType (FileInfo file) + { + return file; + } + + + protected abstract Army CreateArmyFromFile(FileInfo file); + protected abstract Race CreateRaceFromFile(FileInfo file); + protected abstract GameSystem CreateGameSystemFromFile(FileInfo file); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/AbstractNonNativeWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,31 @@ +// AbstractNonNativeWarFoundryFactory.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.IO; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Factories +{ + public abstract class AbstractNonNativeWarFoundryFactory<FILE_TYPE> : AbstractWarFoundryFactory<FILE_TYPE>, INonNativeWarFoundryFactory + { + public abstract string NonNativeDataType { get; } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/AbstractWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,73 @@ +// AbstractWarFoundryFactory.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.IO; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Factories +{ + public abstract class AbstractWarFoundryFactory<FILE_TYPE> : IWarFoundryFactory + { + public bool CanHandleFileFormat (FileInfo file) + { + return CheckCanHandleFileFormat(GetFileAsSupportedType(file)); + } + + /// <summary> + /// Converts the <see cref="FileInfo"/> object in to the appropriate type for this class so that it can perform its checks. If no conversion is required (the test can be performed on a <see cref="FileInfo"/> object) the object should be returned with no modification. + /// </summary> + /// <param name="file"> + /// A <see cref="FileInfo"/> to get the supported source object from. + /// </param> + /// <returns> + /// An object of type <see cref="FILE_TYPE"/> that has been converted from the input <see cref="FileInfo"/> object, or <code>null</code> if the conversion cannot be made. + /// </returns> + protected abstract FILE_TYPE GetFileAsSupportedType(FileInfo file); + + /// <summary> + /// Checks whether the factory thinks it can load data from the file in its paramaterised type. + /// </summary> + /// <param name="file"> + /// An object of the converted <see cref="FILE_TYPE"/> to check support for + /// </param> + /// <returns> + /// <code>true</code> if the factory thinks it can support the file, else <code>false</code> + /// </returns> + protected abstract bool CheckCanHandleFileFormat(FILE_TYPE file); + + public ICollection<IWarFoundryObject> CreateObjectsFromFile(FileInfo file) + { + return DoCreateObjectsFromFile(GetFileAsSupportedType(file)); + } + + /// <summary> + /// Reads the data from the supplied converted <see cref="FILE_TYPE"/> object and returns it as a collection of loadable objects. + /// </summary> + /// <param name="file"> + /// An object of the converted <see cref="FILE_TYPE"/> for the file to load data from + /// </param> + /// <returns> + /// A <see cref="ICollection`1"/> of <see cref="IWarFoundryObject"/>s that were loaded from the file object + /// </returns> + protected abstract ICollection<IWarFoundryObject> DoCreateObjectsFromFile(FILE_TYPE file); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/INativeWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,29 @@ +// INativeFactory.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry.API.Factories +{ + public interface INativeWarFoundryFactory : IWarFoundryFactory + { + //Marker interface + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/INonNativeWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,29 @@ +// INonNativeFactory.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry.API.Factories +{ + public interface INonNativeWarFoundryFactory : IWarFoundryFactory + { + string NonNativeDataType { get; } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/IWarFoundryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,52 @@ +// IWarFoundryFactory.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.IO; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Factories +{ + public interface IWarFoundryFactory + { + /// <summary> + /// Checks if the factory thinks it can handle the supplied file. Checks can be performed on file extension or some basic check of file content, or some other method. + /// </summary> + /// <param name="file"> + /// A <see cref="FileInfo"/> for the file to check support for. + /// </param> + /// <returns> + /// <code>true</code> if the file appears to be supported for loading by this factory, else returns <code>false</code> + /// </returns> + bool CanHandleFileFormat(FileInfo file); + + /// <summary> + /// Reads the data from the supplied file and returns it as a collection of loadable objects. + /// </summary> + /// <param name="file"> + /// A <see cref="FileInfo"/> for the file to load data from + /// </param> + /// <returns> + /// A <see cref="ICollection`1"/> of <see cref="IWarFoundryObject"/>s that were loaded from the file + /// </returns> + ICollection<IWarFoundryObject> CreateObjectsFromFile(FileInfo file); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/WarFoundryFactoryFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,117 @@ +// AbstractNativeWarFoundryFactory.cs +// +// Copyright (C) 2007 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using System.Reflection; +using IBBoard; +using IBBoard.Logging; + +namespace IBBoard.WarFoundry.API.Factories +{ + public class WarFoundryFactoryFactory + { + private Dictionary<Type, IWarFoundryFactory> factories = new Dictionary<Type, IWarFoundryFactory>(); + private Type defaultType; + private static WarFoundryFactoryFactory factoryFactory; + + private WarFoundryFactoryFactory() + { + } + + public static WarFoundryFactoryFactory GetFactoryFactory() + { + if (factoryFactory == null) + { + factoryFactory = new WarFoundryFactoryFactory(); + } + + return factoryFactory; + } + + public IWarFoundryFactory GetFactory() + { + return GetFactory(DefaultType); + } + + public IWarFoundryFactory GetFactory(Type cls) + { + cls = CheckType(cls); + + IWarFoundryFactory factory = null; + factories.TryGetValue(cls, out factory); + + if (factory == null) + { + factory = null; + MethodInfo method = cls.GetMethod("CreateFactory"); + + if (method!=null) + { + LogNotifier.Debug(GetType(), "Found CreateFactory method on " + cls.Name); + object temp = method.Invoke(null, new object[]{}); + + if (temp is IWarFoundryFactory) + { + factory = (IWarFoundryFactory)temp; + factories.Add(cls, factory); + } + } + + if (factory == null) + { + throw new ArgumentException("Could not create factory for class "+cls.FullName); + } + } + + return factory; + } + + public Type DefaultType + { + get { return defaultType; } + set { + value = CheckType(value); + defaultType = value; + } + } + + private Type CheckType(Type cls) + { + if (cls == null) + { + if (DefaultType!=null) + { + return DefaultType; + } + else + { + throw new InvalidOperationException("Class cannot be null when no default class is set"); + } + } + else if (!typeof(IWarFoundryFactory).IsAssignableFrom(cls)) + { + throw new ArgumentException("Class "+cls.FullName+" was not a subtype of "+typeof(IWarFoundryFactory).FullName); + } + + return cls; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/Xml/WarFoundryXmlElementName.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,82 @@ +// WarFoundryXmlElementNames.cs +// +// Copyright (C) 2007 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using IBBoard.Xml; + +namespace IBBoard.WarFoundry.API.Factories.Xml +{ + /// <summary> + /// An enumeration class for valid WarFoundry XML elements, designed to imitate Java's extensible complex object enumerations. + /// </summary> + public class WarFoundryXmlElementName : IXmlElementName, IExtendedEnum<string> + { + public static WarFoundryXmlElementName SYSTEM_ELEMENT = new WarFoundryXmlElementName("SYSTEM_ELEMENT", "system"); + public static WarFoundryXmlElementName ARMY_ELEMENT = new WarFoundryXmlElementName("ARMY_ELEMENT", "army"); + public static WarFoundryXmlElementName RACE_ELEMENT = new WarFoundryXmlElementName("RACE_ELEMENT", "race"); + public static WarFoundryXmlElementName CATEGORIES_ELEMENT = new WarFoundryXmlElementName("CATEGORIES_ELEMENT", "categories"); + public static WarFoundryXmlElementName CATEGORY_ELEMENT = new WarFoundryXmlElementName("CATEGORY_ELEMENT", "cat"); + public static WarFoundryXmlElementName UNITTYPES_ELEMENT = new WarFoundryXmlElementName("UNITTYPES_ELEMENT", "units"); + public static WarFoundryXmlElementName UNITTYPE_ELEMENT = new WarFoundryXmlElementName("UNITTYPE_ELEMENT", "unit"); + public static WarFoundryXmlElementName RACE_EQUIPMENT_ITEMS_ELEMENT = new WarFoundryXmlElementName("RACE_EQUIPMENT_ITEMS_ELEMENT", "equipment"); + public static WarFoundryXmlElementName RACE_EQUIPMENT_ITEM_ELEMENT = new WarFoundryXmlElementName("RACE_EQUIPMENT_ITEMS_ELEMENT", "equipmentItem"); + + private static ICollection<WarFoundryXmlElementName> enumValues; + private string name; + private string val; + + private WarFoundryXmlElementName(string elemName, string elemVal) + { + name = elemName; + val = elemVal; + } + + public string Name + { + get { + return name; + } + } + + public string Value + { + get { + return val; + } + } + + /// <summary> + /// Gets an ICollection of the values so that they can be looped over like a standard enumeration. + /// </summary> + /// <returns> + /// A <see cref="ICollection`1"/> of all of the static 'enumeration' values of the class. + /// </returns> + public static ICollection<WarFoundryXmlElementName> GetEnumValues() + { + if (enumValues == null) + { + enumValues = new WarFoundryXmlElementName[]{SYSTEM_ELEMENT, ARMY_ELEMENT, RACE_ELEMENT, CATEGORIES_ELEMENT, CATEGORY_ELEMENT, UNITTYPES_ELEMENT, UNITTYPE_ELEMENT}; + } + + return enumValues; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/Xml/WarFoundryXmlFactory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,696 @@ +// WarFoundryXmlFactory.cs +// +// Copyright (C) 2007 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.IO; +using System.Xml; +using System.Xml.Schema; +using System.Collections.Generic; +using System.Text; +using IBBoard; +using IBBoard.IO; +using IBBoard.Lang; +using IBBoard.Logging; +using IBBoard.Xml; +using IBBoard.WarFoundry.API.Requirements; +using IBBoard.WarFoundry.API.Objects; +using ICSharpCode.SharpZipLib.Zip; + +namespace IBBoard.WarFoundry.API.Factories.Xml +{ + /// <summary> + /// Summary description for WarFoundryXmlFactory. + /// </summary> + public class WarFoundryXmlFactory : AbstractNativeWarFoundryFactory + { + private Dictionary<IWarFoundryObject, XmlDocument> extraData = new Dictionary<IWarFoundryObject, XmlDocument>(); + private XmlResolver xmlResolver; + + public static AbstractNativeWarFoundryFactory CreateFactory() + { + return new WarFoundryXmlFactory(); + } + + protected WarFoundryXmlFactory() : base() + { + xmlResolver = new IBBXmlResolver(Constants.ExecutablePath); + } + + protected override bool CheckCanFindArmyFileContent(ZipFile file) + { + return file.FindEntry("data.armyx", true) > -1; + } + + protected override bool CheckCanFindSystemFileContent(ZipFile file) + { + return file.FindEntry("data.systemx", true) > -1; + } + + protected override bool CheckCanFindRaceFileContent(ZipFile file) + { + return file.FindEntry("data.racex", true) > -1; + } + + protected XmlElement GetRootElementFromStream(Stream stream, WarFoundryXmlElementName elementName) + { + XmlDocument doc = CreateXmlDocumentFromStream(stream); + XmlElement elem = (XmlElement)doc.LastChild; + + if (!elem.Name.Equals(elementName.Value)) + { + throw new InvalidFileException(String.Format("Root element of XML was not valid. Expected {0} but got {1}", elementName.Value, elem.Name)); + } + + return elem; + } + + protected override Stream GetArmyDataStream(ZipFile file) + { + return file.GetInputStream(file.FindEntry("data.armyx", true)); + } + + protected override Army CreateArmyFromStream (ZipFile file, Stream dataStream) + { + XmlElement elem = GetRootElementFromStream(dataStream, WarFoundryXmlElementName.ARMY_ELEMENT); + return CreateArmyFromElement(file, elem); + } + + private Army CreateArmyFromElement(ZipFile file, XmlElement elem) + { + string name = elem.GetAttribute("name"); + string systemID = elem.GetAttribute("gameSystem"); + GameSystem system = WarFoundryLoader.GetDefault().GetGameSystem(systemID); + string raceID = elem.GetAttribute("race"); + Race race = WarFoundryLoader.GetDefault().GetRace(system, raceID); + string pointsString = elem.GetAttribute("maxPoints"); + int points = 0; + + try + { + points = int.Parse(pointsString); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maxPoints' of army '"+name+"' was not a valid number"); + } + + Army army = new Army(race, name, points, file);//, this); + extraData[army] = elem.OwnerDocument; + return army; + } + + protected override Stream GetGameSystemDataStream (ZipFile file) + { + return file.GetInputStream(file.FindEntry("data.systemx", true)); + } + + protected override GameSystem CreateGameSystemFromStream (ZipFile file, Stream dataStream) + { + XmlElement elem = GetRootElementFromStream(dataStream, WarFoundryXmlElementName.SYSTEM_ELEMENT); + LogNotifier.Debug(GetType(), "Create GameSystem"); + return CreateSystemFromElement(file, elem); + } + + private GameSystem CreateSystemFromElement(ZipFile file, XmlElement elem) + { + string id = elem.GetAttribute("id"); + string name = elem.GetAttribute("name"); + GameSystem system = new StagedLoadingGameSystem(id, name, this); + //system.SourceZipFile = file.; + extraData[system] = elem.OwnerDocument; + return system; + } + + protected override Stream GetRaceDataStream (ZipFile file) + { + return file.GetInputStream(file.FindEntry("data.racex", true)); + } + + protected override Race CreateRaceFromStream (ZipFile file, Stream dataStream) + { + XmlElement elem = GetRootElementFromStream(dataStream, WarFoundryXmlElementName.RACE_ELEMENT); + LogNotifier.Debug(GetType(), "Create Race"); + return CreateRaceFromElement(file, elem); + } + + private Race CreateRaceFromElement(ZipFile file, XmlElement elem) + { + string id = elem.GetAttribute("id"); + string subid = elem.GetAttribute("subid"); + string systemID = elem.GetAttribute("system"); + string name = elem.GetAttribute("name"); + Race race = new StagedLoadingRace(id, subid, name, systemID, this); + //race.SourceZipFile = file; //TODO reference source file + extraData[race] = elem.OwnerDocument; + return race; + } + + /*public WarFoundryObject CreateObjectFromStream(ZipFile file, Stream stream) + { + try + { + WarFoundryObject obj = LoadFileObjectFromElement(file, elem); + + if (obj != null) + { + extraData[obj] = doc; + return obj; + } + else + { + throw new InvalidFileException(String.Format(Translation.GetTranslation("ErrorInvalidXmlFile", "XML file '{0}' was not a loadable XML file. Please ensure it is a valid and supported WarFoundry XML file."), file.Name)); + } + } + catch (XmlSchemaException ex) + { + throw new InvalidFileException(String.Format(Translation.GetTranslation("ErrorInvalidXmlFile", "Failed to parse invalid XML data file in {0}. Error at line {1} position {2}: {3}"), file.Name, ex.LineNumber, ex.LinePosition, ex.Message.Substring(0, ex.Message.IndexOf(".")+1)), ex); + } + catch (InvalidFileException ex) + { + throw new InvalidFileException(String.Format(Translation.GetTranslation("ErrorInvalidNamedXmlFile", "XML data file in '{0}' was not a valid XML file. It should contain three child nodes - XML definition, DocType and root node."), file.Name), ex); + } + } + + private WarFoundryObject LoadFileObjectFromElement(ZipFile file, XmlElement elem) + { + WarFoundryObject obj = null; + + if (elem.Name.Equals(WarFoundryXmlElementName.SYSTEM_ELEMENT.Value)) + { + logger.Debug("Create GameSystem"); + obj = CreateSystemFromElement(file, elem); + } + else if (elem.Name.Equals(WarFoundryXmlElementName.RACE_ELEMENT.Value)) + { + logger.Debug("Create Race"); + obj = CreateRaceFromElement(file, elem); + } + + return obj; + }*/ + + public override void CompleteLoading(IWarFoundryStagedLoadObject obj) + { + LogNotifier.DebugFormat(GetType(), "Complete loading of {0} with ID {1}", obj.GetType().Name, obj.ID); + + if (!obj.IsFullyLoaded) + { + XmlDocument extra = extraData[obj]; + + if (obj is GameSystem) + { + GameSystem system = (GameSystem)obj; + XmlNode elem = extra.LastChild; + + XmlNode catsElem = elem.FirstChild; + Category[] cats; + List<Category> catList = new List<Category>(); + WarFoundryObject tempObj; + + foreach (XmlElement cat in catsElem.ChildNodes) + { + tempObj = CreateObjectFromElement(cat); + + if (tempObj is Category) + { + catList.Add((Category)tempObj); + } + else + { + LogNotifier.WarnFormat(GetType(), "Object for string {0} was not of type Category", cat.OuterXml); + } + } + + cats = catList.ToArray(); + LogNotifier.DebugFormat(GetType(), "Found {0} categories", cats.Length); + + XmlElement statsElem = (XmlElement)catsElem.NextSibling; + Dictionary<string, SystemStats> sysStats = CreateSystemStatsSetFromElement(statsElem); + string defaultStatsID = statsElem.GetAttribute("defaultStats"); + + LogNotifier.DebugFormat(GetType(), "Complete loading of {0}", system.Name); + system.Categories = cats; + system.SystemStats = new SystemStatsSet(sysStats); + system.StandardSystemStatsID = defaultStatsID; + } + else if (obj is Race) + { + Race race = (Race)obj; + XmlNode elem = extra.LastChild; + XmlNode colNode = elem.FirstChild; + + Dictionary<string, UnitType> unitTypes = new Dictionary<string, UnitType>(); + + foreach (XmlElement node in colNode.ChildNodes) + { + UnitType type = CreateUnitTypeFromElement(node, race, race.GameSystem); + unitTypes.Add(type.ID, type); + } + + colNode = colNode.NextSibling; + List<Category> catOverrides = new List<Category>(); + + if (colNode!=null && colNode.Name == WarFoundryXmlElementName.CATEGORIES_ELEMENT.Value) + { + foreach (XmlElement node in colNode.ChildNodes) + { + catOverrides.Add(CreateCategoryFromElement(node)); + } + + colNode = colNode.NextSibling; + } + + Dictionary<string, EquipmentItem> raceEquipment = new Dictionary<string, EquipmentItem>(); + + if (colNode!=null && colNode.Name == WarFoundryXmlElementName.RACE_EQUIPMENT_ITEMS_ELEMENT.Value) + { + foreach (XmlElement node in colNode.ChildNodes) + { + EquipmentItem item = CreateEquipmentItemFromElement(node, race); + raceEquipment.Add(item.ID, item); + } + } + + Dictionary<string, Ability> raceAbilities = new Dictionary<string, Ability>(); + //TODO: Load abilities + + LogNotifier.DebugFormat(GetType(), "Complete loading of {0}", race.Name); + race.Categories = catOverrides.ToArray(); + race.SetUnitTypes(unitTypes); + race.SetEquipmentItems(raceEquipment); + race.SetAbilities(raceAbilities); + } + } + else + { + LogNotifier.Debug(GetType(), "Object is already fully loaded"); + } + } + + protected XmlDocument CreateXmlDocumentFromStream(Stream stream) + { + XmlDocument doc = new XmlDocument(); + XmlReaderSettings settings = new XmlReaderSettings(); + settings.XmlResolver = xmlResolver; + settings.ValidationType = ValidationType.DTD; + settings.ProhibitDtd = false; + settings.ValidationEventHandler+= new ValidationEventHandler(ValidationEventMethod); + XmlReader reader = XmlReader.Create(stream, settings); + + try + { + doc.Load(reader); + } + //Don't catch XMLSchemaExceptions - let them get thrown out + finally + { + reader.Close(); + } + + if (doc.ChildNodes.Count!=3) + { + throw new InvalidFileException(Translation.GetTranslation("ErrorInvalidXmlFile", "XML file was not a valid XML file. It should contain three child nodes - XML definition, DocType and root node.")); + } + + return doc; + } + + protected XmlDocument CreateXmlDocumentFromString(string xmlString) + { + XmlReaderSettings settings = new XmlReaderSettings(); + settings.XmlResolver = xmlResolver; + settings.ValidationType = ValidationType.DTD; + settings.ProhibitDtd = false; + settings.ValidationEventHandler+= new ValidationEventHandler(ValidationEventMethod); + XmlReader reader = XmlReader.Create(new MemoryStream(Encoding.UTF8.GetBytes(xmlString)), settings); + XmlDocument doc = new XmlDocument(); + + try + { + doc.Load(reader); + } + catch(XmlSchemaException ex) + { + throw new InvalidFileException(Translation.GetTranslation("ErrorInvalidXmlString", "Failed to parse invalid XML string"), ex); + } + finally + { + //We might not need to make sure the memory stream is closed, but do it just in case + reader.Close(); + } + + if (doc.ChildNodes.Count!=3) + { + throw new InvalidFileException(String.Format(Translation.GetTranslation("ErrorInvalidXmlFile", "XML string was not a valid XML file. It should contain three child nodes - XML definition, DocType and root node."))); + } + + return doc; + } + + private WarFoundryObject CreateObjectFromElement(XmlElement elem) + { + WarFoundryObject obj = null; + LogNotifier.DebugFormat(GetType(), "Create object for <{0}>", elem.Name); + + if (elem.Name.Equals(WarFoundryXmlElementName.CATEGORY_ELEMENT.Value)) + { + LogNotifier.Debug(GetType(), "Create Category"); + obj = CreateCategoryFromElement(elem); + } + else + { + LogNotifier.Debug(GetType(), "No match"); + } + + return obj; + } + + private Category CreateCategoryFromElement(XmlElement elem) + { + string id = elem.GetAttribute("id"); + string name = elem.GetAttribute("name"); + int minPc, maxPc, minPts, maxPts, minChoices, maxChoices, baseValue, incValue, incAmount; + + try + { + minPc = int.Parse(elem.GetAttribute("minPercentage")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'minPercentage' of category "+id+" was not a valid number"); + } + + try + { + maxPc = int.Parse(elem.GetAttribute("maxPercentage")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maxPercentage' of category "+id+" was not a valid number"); + } + + try + { + minPts = int.Parse(elem.GetAttribute("minPoints")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'minPoints' of category "+id+" was not a valid number"); + } + + try + { + maxPts = int.Parse(elem.GetAttribute("maxPoints")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maxPoints' of category "+id+" was not a valid number"); + } + + try + { + minChoices = int.Parse(elem.GetAttribute("minChoices")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'minChoices' of category "+id+" was not a valid number"); + } + + try + { + maxChoices = int.Parse(elem.GetAttribute("maxChoices")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maxChoices' of category "+id+" was not a valid number"); + } + + try + { + baseValue = int.Parse(elem.GetAttribute("baseValue")); + + } + catch(FormatException) + { + throw new FormatException("Attribute 'baseValue' of category "+id+" was not a valid number"); + } + + try + { + incValue = int.Parse(elem.GetAttribute("incValue")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'incValue' of category "+id+" was not a valid number"); + } + + try + { + incAmount = int.Parse(elem.GetAttribute("incAmount")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'incAmount' of category "+id+" was not a valid number"); + } + + return new Category(id, name, minPts, maxPts, minPc, maxPc, minChoices, maxChoices, baseValue, incValue, incAmount); + } + + private UnitType CreateUnitTypeFromElement(XmlElement elem, Race parentRace, GameSystem system) + { + string id = elem.GetAttribute("id"); + string name = elem.GetAttribute("typeName"); + string mainCatID = elem.GetAttribute("cat"); + int minNum, maxNum, minSize, maxSize, baseSize;//TODO: Add base size + float points, unitPoints; + Stats stats; + List<UnitRequirement> unitRequirements = new List<UnitRequirement>(); + bool found = false; + List<string> catIDs = new List<string>(); + string catID; + + try + { + minNum = int.Parse(elem.GetAttribute("minNum")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'minNum' of unit "+id+" was not a valid number"); + } + + try + { + maxNum = int.Parse(elem.GetAttribute("maxNum")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maxNum' of unit "+id+" was not a valid number"); + } + + try + { + minSize = int.Parse(elem.GetAttribute("minSize")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'minSize' of unit "+id+" was not a valid number"); + } + + try + { + maxSize = int.Parse(elem.GetAttribute("maxSize")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maxSize' of unit "+id+" was not a valid number"); + } + + if (minSize > maxSize && maxSize!=-1) + { + minSize = maxSize; + } + + try + { + points = int.Parse(elem.GetAttribute("points")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'points' of unit "+id+" was not a valid number"); + } + + try + { + unitPoints = int.Parse(elem.GetAttribute("unitPoints")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'trooperPoints' of unit "+id+" was not a valid number"); + } + + XmlNode node = elem.FirstChild; + + foreach(XmlElement cat in node.ChildNodes) + { + catID = cat.GetAttribute("catID"); + catIDs.Add(catID); + + if (catID == mainCatID) + { + found = true; + } + } + + if (!found) + { + throw new InvalidFileException("The main cat "+mainCatID+" was not found in the list of categories for unit "+id); + } + + node = node.NextSibling; + stats = ParseUnitStats((XmlElement)node, system); + //TODO: Add unit requirements + UnitType type = new UnitType(id, name, mainCatID, catIDs.ToArray(), minNum, maxNum, minSize, maxSize, unitPoints, points, stats, unitRequirements.ToArray(), parentRace); + + return type; + } + + private Stats ParseUnitStats(XmlElement elem, GameSystem system) + { + List<Stat> statsList = new List<Stat>(); + String statsID = elem.GetAttribute("statSet"); + SystemStats statsSet; + + if (statsID == "") + { + statsSet = system.StandardSystemStats; + } + else + { + statsSet = system.SystemStats[statsID]; + } + + Stats stats = new Stats(statsSet); + + foreach (XmlElement stat in elem.ChildNodes) + { + String statID = stat.GetAttribute("name"); + StatSlot slot = statsSet[statID]; + + if (slot!=null) + { + statsList.Add(new Stat(slot, stat.InnerText)); + } + else + { + throw new InvalidFileException("The stat "+statID+" was not found in stats set "+statsID); + } + } + + stats.SetStats(statsList); + + return stats; + } + + private Dictionary<string, SystemStats> CreateSystemStatsSetFromElement(XmlElement elem) + { + Dictionary<string, SystemStats> dict = new Dictionary<string,SystemStats>(); + + foreach (XmlElement stats in elem.ChildNodes) + { + SystemStats sysStats = CreateSystemStatsFromElement(stats); + dict.Add(sysStats.ID, sysStats); + } + + return dict; + } + + private SystemStats CreateSystemStatsFromElement(XmlElement elem) + { + List<StatSlot> slots = new List<StatSlot>(); + string id = elem.GetAttribute("id"); + + foreach (XmlElement slot in elem.ChildNodes) + { + StatSlot statSlot = new StatSlot(slot.GetAttribute("name")); + slots.Add(statSlot); + } + + return new SystemStats(id, slots.ToArray()); + } + + private EquipmentItem CreateEquipmentItemFromElement(XmlElement elem, Race race) + { + string id = elem.GetAttribute("id"); + string name = elem.GetAttribute("name"); + float cost = 0, min = 0, max = 0; + ArmourType armourType; + + try + { + cost = float.Parse(elem.GetAttribute("cost")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'cost' of equipment item "+id+" was not a valid number"); + } + + try + { + min = float.Parse(elem.GetAttribute("min")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'min' of equipment item "+id+" was not a valid number"); + } + + try + { + max = float.Parse(elem.GetAttribute("max")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'max' of equipment item "+id+" was not a valid number"); + } + + try + { + armourType = (ArmourType)Enum.Parse(typeof(ArmourType), elem.GetAttribute("armourType")); + } + catch(FormatException) + { + throw new InvalidFileException("Attribute 'armourType' of equipment "+id+" was not a valid value from the enumeration"); + } + + if (elem.ChildNodes.Count>0) + { + //It has stats! + //TODO: Parse equipment stats + } + + return new EquipmentItem(id, name, cost, min, max, armourType, race); + } + + private void ValidationEventMethod(object sender, ValidationEventArgs e) + { + //TODO: Fire a validation failure event + LogNotifier.WarnFormat(GetType(), "Validation Error: {0}", e.Message); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Factories/Xml/WarFoundryXmlSaver.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.IO; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Factories.Xml +{ + public class WarFoundryXmlSaver + { + //FIXME: Rework to saving files in Zips + private static WarFoundryXmlSaver saver; + private static List<Type> saveAsTypes; + private Dictionary<WarFoundryObject, string> savePaths = new Dictionary<WarFoundryObject,string>(); + + public static WarFoundryXmlSaver GetSaver() + { + if (saver == null) + { + saveAsTypes = new List<Type>(); + saveAsTypes.Add(typeof(Army)); + saver = new WarFoundryXmlSaver(); + } + + return saver; + } + + public bool SaveAs(WarFoundryObject toSave, string saveAsPath) + { + if (CanSaveType(toSave)) + { + FileStream fs = null; + bool success = false; + + try + { + fs = new FileStream(saveAsPath, FileMode.Create, FileAccess.Write); + byte[] bytes = StringManipulation.StringToBytes(CreateXmlString(toSave)); + fs.Write(bytes, 0, bytes.Length); + fs.Flush(); + savePaths.Add(toSave, saveAsPath); + success = true; + } + finally + { + if (fs!=null && fs.CanWrite) + { + fs.Close(); + } + } + + return success; + } + else + { + throw new ArgumentException("Cannot directly save objects of type "+toSave.GetType()); + } + } + + public bool Save(WarFoundryObject toSave) + { + if (CanSave(toSave)) + { + return SaveAs(toSave, savePaths[toSave]); + } + else + { + throw new InvalidOperationException("Cannot save an object that has not previously been saved using SaveAs"); + } + } + + private string CreateXmlString(WarFoundryObject toSave) + { + return ""; //TODO: Create XML string as appropriate + } + + public bool CanSaveAs(WarFoundryObject obj) + { + return CanSaveType(obj); + } + + public bool CanSave(WarFoundryObject obj) + { + return savePaths.ContainsKey(obj); + } + + public bool CanSaveType(WarFoundryObject obj) + { + return saveAsTypes.Contains(obj.GetType()); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Ability.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,12 @@ + +using System; + +namespace IBBoard.WarFoundry.API.Objects +{ + public class Ability : WarFoundryObject + { + public Ability() + { + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/ArmourType.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,29 @@ +// ArmourType.cs +// +// Copyright (C) 2007 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry.API.Objects +{ + public enum ArmourType + { + None = 0, Shield = 1, LightArmour = 2, LightArmourShield = 3, HeavyArmour = 4, HeavyArmourShield = 5, Barding = 8, BardingShield = 9, BardingLightArmour = 10, BardingLightArmourShield = 11, BardingHeavyArmour = 12, BardingHeavyArmourShield = 13 + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Army.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,261 @@ +using System; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using System.Xml; +using IBBoard.WarFoundry.API; +using IBBoard.WarFoundry.API.Factories; +using IBBoard.WarFoundry.API.Requirements; +using ICSharpCode.SharpZipLib.Zip; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for Army. + /// </summary> + public class Army : WarFoundryObject + { + //private GameSystem system; + private Race armyRace; + private int maxPoints; + private double pointsTotal; + private ArmyCategory[] categories; + + public event ObjectAddDelegate UnitAdded; + public event ObjectRemoveDelegate UnitRemoved; + public event FailedUnitRequirementDelegate FailedRequirement; + public event DoubleValChangedDelegate PointsValueChanged; + private DoubleValChangedDelegate PointsValueChangedMethod; + + public Army(Race race, string armyName, int maxArmyPoints/*, AbstractNativeWarFoundryFactory factory*/) : this(race, armyName, maxArmyPoints, null/*, factory*/) + { + } + + public Army(Race race, string armyName, int maxArmyPoints, ZipFile file/*, AbstractNativeWarFoundryFactory factory*/) : base(armyName/*, factory*/) + { + armyRace = race; + Name = armyName; + maxPoints = maxArmyPoints; + PointsValueChangedMethod = new DoubleValChangedDelegate(PointsValueChangedHandler); + } + + public ArmyCategory GetCategory(Category cat) + { + foreach (ArmyCategory armyCat in Categories) + { + if (armyCat.Category.Equals(cat)) + { + return armyCat; + } + } + + return null; + } + + public ArmyCategory[] Categories + { + get + { + if (categories==null) + { + Category[] raceCats = Race.Categories; + ArmyCategory cat; + int raceCatCount = raceCats.Length; + categories = new ArmyCategory[raceCatCount]; + + for (int i = 0; i < raceCatCount; i++) + { + cat = new ArmyCategory(this, raceCats[i]); + categories[i] = cat; + cat.PointsValueChanged+= PointsValueChangedMethod; + cat.UnitAdded+=new ObjectAddDelegate(Army_UnitAdded); + cat.UnitRemoved+=new ObjectRemoveDelegate(Army_UnitRemoved); + cat.RequirementsFailed+=new FailedUnitRequirementDelegate(Army_FailedRequirement); + } + } + + return categories; + } + } + + public Race Race + { + get { return armyRace; } + } + + public GameSystem GameSystem + { + get { return (armyRace!=null ? armyRace.GameSystem : null); } + } + + protected void OnUnitAdded(Unit unit) + { + OnUnitAdded(unit, null); + } + + protected void OnUnitAdded(Unit unit, List<FailedUnitRequirement> failedReqs) + { + if (UnitAdded!=null) + { + UnitAdded(unit); + } + + if (FailedRequirement!=null && failedReqs!=null && failedReqs.Count > 0) + { + FailedRequirement(failedReqs); + } + } + + protected void OnUnitRemoved(Unit unit) + { + OnUnitRemoved(unit, null); + } + + protected void OnUnitRemoved(Unit unit, List<FailedUnitRequirement> failedReqs) + { + if (UnitRemoved!=null) + { + UnitRemoved(unit); + } + + if (FailedRequirement!=null && failedReqs!=null && failedReqs.Count > 0) + { + FailedRequirement(failedReqs); + } + } + + private void OnPointsValueChanged(double oldValue, double newValue) + { + if (PointsValueChanged!=null) + { + PointsValueChanged(this, oldValue, newValue); + } + } + + private double TotalPoints + { + get { return pointsTotal; } + set + { + double oldPoints = pointsTotal; + pointsTotal = value; + + if (oldPoints!=pointsTotal) + { + OnPointsValueChanged(oldPoints, pointsTotal); + } + } + } + + public double PointsTotal + { + get { return TotalPoints; } + } + + public Unit[] GetUnits(Category cat) + { + return GetUnits(this.GetCategory(cat)); + } + + public Unit[] GetUnits(ArmyCategory cat) + { + return cat.GetUnits(); + } + + public Unit[] GetUnits() + { + ArrayList fullList = new ArrayList(); + + foreach(ArmyCategory cat in Categories) + { + foreach(Unit unit in cat.GetUnits()) + { + if (!fullList.Contains(unit)) + { + fullList.Add(unit); + } + } + } + + return (Unit[])fullList.ToArray(typeof(Unit)); + } + + public int MaxPoints + { + get { return maxPoints; } + set + { + if (value > 0) + { + maxPoints = value; + } + } + } + + private void PointsValueChangedHandler(WarFoundryObject obj, double oldVal, double newVal) + { + if (obj is ArmyCategory) + { + double points = 0; + + foreach (ArmyCategory cat in Categories) + { + points+= cat.PointsTotal; + } + + TotalPoints = points; + } + } + + public List<FailedUnitRequirement> CanAddUnit(Unit unit) + { + return CanAddUnitType(unit.UnitType); + } + + public List<FailedUnitRequirement> CanAddUnitType(UnitType unitType) + { + return unitType.CanAddToArmy(this); + } + + public List<FailedUnitRequirement> CanRemoveUnit(Unit unit) + { + return CanRemoveUnitType(unit.UnitType); + } + + public List<FailedUnitRequirement> CanRemoveUnitType(UnitType unitType) + { + return unitType.CanRemoveFromArmy(this); + } + + public int GetUnitTypeCount(UnitType unitType) + { + int count = 0; + + foreach (ArmyCategory cat in Categories) + { + count+= cat.GetUnitTypeCount(unitType); + } + + return count; + } + + private void Army_UnitAdded(object val) + { + OnUnitAdded((Unit)val); + } + + private void Army_UnitRemoved(object val) + { + OnUnitRemoved((Unit)val); + } + + private void Army_FailedRequirement(List<FailedUnitRequirement> failedRequirements) + { + if (FailedRequirement!=null) + { + FailedRequirement(failedRequirements); + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/ArmyCategory.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,173 @@ +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Requirements; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for ArmyCategory. + /// </summary> + public class ArmyCategory : WarFoundryObject + { + private Category category; + private Army parentArmy; + private double pointsTotal; + private List<Unit> units; + private Dictionary<string, int> unitTypes; + private DoubleValChangedDelegate PointsValueChangedMethod; + public event DoubleValChangedDelegate PointsValueChanged; + public event ObjectAddDelegate UnitAdded; + public event ObjectRemoveDelegate UnitRemoved; + public event FailedUnitRequirementDelegate RequirementsFailed; + + public ArmyCategory(Army army, Category cat) : base() + { + parentArmy = army; + category = cat; + cat.NameChanged+=new StringValChangedDelegate(cat_NameChanged); + PointsValueChangedMethod = new DoubleValChangedDelegate(PointsValueChangedHandler); + units = new List<Unit>(); + unitTypes = new Dictionary<string,int>(); + } + + public Category Category + { + get { return category; } + } + + public Army ParentArmy + { + get { return parentArmy; } + } + + public override string ID + { + get + { + return Category.ID; + } + set + { + Category.ID = value; + } + } + + public override string Name + { + get { return category.Name; } + set + { + category.Name = value; + } + } + + public void AddUnit(Unit unit) + { + List<FailedUnitRequirement> failedReqs = ParentArmy.CanAddUnit(unit); + + units.Add(unit); + unit.Army = ParentArmy; + unit.Category = this; + unit.PointsValueChanged+= PointsValueChangedMethod; + int unitTypeCount; + unitTypes.TryGetValue(unit.UnitType.ID, out unitTypeCount); + unitTypes[unit.UnitType.ID] = (int)unitTypeCount + 1; + TotalPoints+= unit.PointsValue; + OnUnitAdded(unit, failedReqs); + } + + public void RemoveUnit(Unit unit) + { + List<FailedUnitRequirement> failedReqs = ParentArmy.CanRemoveUnit(unit); + units.Remove(unit); + unit.Army = null; + unitTypes[unit.UnitType.ID] = ((int)unitTypes[unit.UnitType.ID])-1; + TotalPoints-= unit.PointsValue; + unit.PointsValueChanged-= PointsValueChangedMethod; + OnUnitRemoved(unit, failedReqs); + } + + public int GetUnitTypeCount(UnitType unitType) + { + return unitTypes.ContainsKey(unitType.ID) ? (int)unitTypes[unitType.ID] : 0; + } + + public Unit[] GetUnits() + { + return units.ToArray(); + } + + private double TotalPoints + { + get { return pointsTotal; } + set + { + double oldVal = pointsTotal; + pointsTotal = value; + + if (oldVal!=pointsTotal) + { + OnPointsValueChanged(oldVal, pointsTotal); + } + } + } + + public double PointsTotal + { + get { return TotalPoints; } + } + + private void PointsValueChangedHandler(WarFoundryObject obj, double oldVal, double newVal) + { + if (obj is Unit) + { + double diff = newVal - oldVal; + TotalPoints+= diff; + } + } + + private void OnUnitAdded(Unit unit, List<FailedUnitRequirement> failedReqs) + { + if (UnitAdded!=null) + { + UnitAdded(unit); + } + + if (RequirementsFailed!=null && failedReqs!=null && failedReqs.Count > 0) + { + RequirementsFailed(failedReqs); + } + } + + private void OnUnitRemoved(Unit unit, List<FailedUnitRequirement> failedReqs) + { + if (UnitRemoved!=null) + { + UnitRemoved(unit); + } + + if (RequirementsFailed!=null && failedReqs!=null && failedReqs.Count>0) + { + RequirementsFailed(failedReqs); + } + } + + protected virtual void OnPointsValueChanged(double oldValue, double newValue) + { + if (PointsValueChanged!=null) + { + PointsValueChanged(this, oldValue, newValue); + } + } + + protected void cat_NameChanged(WarFoundryObject obj, string oldValue, string newValue) + { + OnNameChanged(oldValue, newValue); + } + + public int GetPointsPercentage() + { + return (int)Math.Round((PointsTotal / ParentArmy.MaxPoints) * 100, 0); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Category.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,158 @@ +using System; +using System.Xml; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for Category. + /// </summary> + public class Category : WarFoundryObject + { + private int minPts, maxPts, minPc, maxPc, minChoice, maxChoice, baseVal, incVal, incAmount; + /*private GameSystem system;*/ + + public Category(string id, string name, int minPoints, int maxPoints, int minPercent, int maxPercent, int minChoices, int maxChoices, int baseValue, int incrementValue, int incrementAmount) : base(id, name) + { + minPts = minPoints; + maxPts = maxPoints; + minPc = minPercent; + maxPc = maxPercent; + baseVal = baseValue; + incVal = incrementValue; + incAmount = incrementAmount; + } + + /*public Category(XmlElement node, GameSystem gameSystem, AbstractNativeWarFoundryFactory factory) : base(factory) + { + //system = gameSystem; + ID = node.GetAttribute("id"); + Name = node.GetAttribute("name"); + + try + { + min = int.Parse(node.GetAttribute("minimum")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'minimum' of category "+id+" was not a valid number"); + } + + try + { + max = int.Parse(node.GetAttribute("maximum")); + } + catch(FormatException) + { + throw new FormatException("Attribute 'maximum' of category "+id+" was not a valid number"); + } + + string val = ""; + val = node.GetAttribute("baseValue"); + + if (val!="") + { + try + { + baseValue = int.Parse(val); + + } + catch(FormatException) + { + throw new FormatException("Attribute 'baseValue' of category "+id+" was not a valid number"); + } + } + + val = node.GetAttribute("incValue"); + + if (val!="") + { + try + { + incValue = int.Parse(val); + } + catch(FormatException) + { + throw new FormatException("Attribute 'incValue' of category "+id+" was not a valid number"); + } + } + + val = node.GetAttribute("incAmount"); + + if (val!="") + { + try + { + incAmount = int.Parse(val); + } + catch(FormatException) + { + throw new FormatException("Attribute 'incAmount' of category "+id+" was not a valid number"); + } + } + }*/ + + protected override string DefaultName() + { + return ""; + } + + /*public GameSystem GameSystem + { + get { return system; } + }*/ + + public int MinimumPoints + { + get { return minPts; } + set { minPts = value; } + } + + public int MaximumPoints + { + get { return maxPts; } + set { maxPts = value; } + } + + public int MinimumPercentage + { + get { return minPc; } + set { minPc = value; } + } + + public int MaximumPercentage + { + get { return maxPc; } + set { maxPc = value; } + } + + public int MinimumChoices + { + get { return minChoice; } + set { minChoice = value; } + } + + public int MaximumChoices + { + get { return maxChoice; } + set { maxChoice = value; } + } + + public int BaseValue + { + get { return baseVal; } + set { baseVal = value; } + } + + public int IncrementValue + { + get { return incVal; } + set { incVal = value; } + } + + public int IncrementAmount + { + get { return incAmount; } + set { incAmount = value; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/EquipmentItem.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,84 @@ +using System; +using System.Xml; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for EquipmentItem. + /// </summary> + public class EquipmentItem : WarFoundryObject + { + private float cost, min, max; + private ArmourType armourType; + private Race equipForRace; + + public EquipmentItem(string id, string name, float itemCost, float minimum, float maximum, ArmourType itemArmourType, Race race) : base(id, name) + { + cost = itemCost; + min = minimum; + max = maximum; + armourType = itemArmourType; + equipForRace = race; + } + + public bool IsRatioLimit + { + get { return ((MaxNumber < 1 && MaxNumber > 0) || (MaxNumber == 1 && MinNumber > 0)); } + } + + public float MinNumber + { + get { return min; } + set + { + min = (value >= 0 || value == -1) ? value : 0; + + if (MaxNumber != -1 && min > MaxNumber) + { + MaxNumber = min; + } + } + } + + public float MaxNumber + { + get { return max; } + set + { + max = (value > 0 || value == -1) ? value : -1; + + if (max != -1 && MinNumber > max) + { + MinNumber = max; + } + } + } + + public ArmourType ItemArmourType + { + get { return armourType; } + set { armourType = value; } + } + + public float Cost + { + get { return cost; } + set { cost = value; } + } + + public Race EquipmentForRace + { + get { return equipForRace; } + } + + public bool CanBeUsedWithItem(EquipmentItem item) + { + return CanBeUsedWithArmourType(item.ItemArmourType); + } + + public bool CanBeUsedWithArmourType(ArmourType otherItemType) + { + return (this.ItemArmourType & otherItemType) == 0; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/GameSystem.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,274 @@ +using System; +using System.Collections.Generic; +using System.Xml; +using System.IO; +using IBBoard.Logging; +using IBBoard.WarFoundry.API.Factories; +using ICSharpCode.SharpZipLib.Zip; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for GameSystem. + /// </summary> + public class GameSystem : WarFoundryObject // WarFoundryStagedLoadSourceObject + { + private bool warnOnError; + private Category[] categories; + private SystemStatsSet stats; + private string defaultStats; + private FileInfo sourceFile; + + public GameSystem(string systemID, string systemName) : base(systemID, systemName) + { + } + + /*public void CompleteLoading(Category[] cats, Dictionary<string, SystemStats> sysStats, string defaultStatsID) + { + categories = cats; + stats = new SystemStatsSet(sysStats); + defaultStats = defaultStatsID; + base.CompleteLoading(); + }*/ + + public FileInfo SourceFile + { + get { return sourceFile; } + set { sourceFile = value; } + } + + public int GetCategoryCount() + { + return categories.Length; + } + + public Category GetCategory(int index) + { + return categories[index]; + } + + public Category GetCategory(string id) + { + for (int i = 0; i<categories.Length; i++) + { + if (categories[i].ID == id) + { + return categories[i]; + } + } + + return null; + } + + public Category[] Categories + { + get + { + return SystemCategories; + } + set + { + SystemCategories = value; + } + } + + protected virtual Category[] SystemCategories + { + get + { + return RawSystemCategories; + } + set + { + RawSystemCategories = value; + } + } + + protected Category[] RawSystemCategories + { + get + { + return categories; + } + set + { + if (value!=null) + { + categories = value; + } + } + } + + public bool WarnOnError + { + get + { + return warnOnError; + } + set { warnOnError = value; } + } + + public SystemStats StandardSystemStats + { + get + { + return SystemStats[defaultStats]; + } + } + + public string StandardSystemStatsID + { + get + { + return defaultStats; + } + + set + { + if (value != null && value.Trim().Length > 0) + { + defaultStats = value; + } + } + } + + public SystemStatsSet SystemStats + { + get + { + return stats; + } + set + { + stats = value; + } + } + + public Race SystemDefaultRace + { + get { return WarFoundryLoader.GetDefault().GetRace(this, Race.SYSTEM_DEFAULT_RACE_ID); } + } + + public bool Matches(GameSystem otherSystem) + { + if (otherSystem==null) + { + return false; + } + + return this.ID == otherSystem.ID; + } + + public override bool Equals(object obj) + { + if (obj == null) + { + return false; + } + + if (obj.GetType().Equals(this.GetType())) + { + GameSystem otherSystem = (GameSystem)obj; + + return this.ID == otherSystem.ID && this.Name == otherSystem.Name && ((this.RawSystemCategories == null && otherSystem.RawSystemCategories == null) || this.RawSystemCategories.Equals(otherSystem.RawSystemCategories)); + } + else + { + return false; + } + } + + public override int GetHashCode() + { + return ID.GetHashCode() + Name.GetHashCode() + (RawSystemCategories!=null ? RawSystemCategories.GetHashCode() : 0) + warnOnError.GetHashCode(); + } + + public bool UnitTypeMaxed(UnitType unitType, Army army) + { + return unitType.MaxNumber!=-1 && army.GetUnitTypeCount(unitType) >= unitType.MaxNumber; + } + + public bool UnitTypeMinned(UnitType unitType, Army army) + { + return army.GetUnitTypeCount(unitType) <= unitType.MinNumber; + } + + public List<EquipmentItem> GetSystemEquipmentList() + { + List<EquipmentItem> items = new List<EquipmentItem>(); + Race defaultRace = SystemDefaultRace; + + if (defaultRace!=null) + { + items = defaultRace.GetEquipmentList(); + } + + return items; + } + + public EquipmentItem GetSystemEquipmentItem(string id) + { + EquipmentItem item = null; + Race defaultRace = SystemDefaultRace; + + if (defaultRace!=null) + { + item = defaultRace.GetEquipmentItem(id); + } + + return item; + } + + public UnitType[] GetSystemUnitTypes(Category cat) + { + UnitType[] items = new UnitType[0]; + Race defaultRace = SystemDefaultRace; + + if (defaultRace!=null) + { + items = defaultRace.GetUnitTypes(cat); + } + + return items; + } + + public UnitType GetSystemUnitType(string id) + { + UnitType unit = null; + Race defaultRace = SystemDefaultRace; + + if (defaultRace!=null) + { + unit = defaultRace.GetUnitType(id); + } + + return unit; + } + + public List<Ability> GetSystemAbilityList() + { + List<Ability> items = new List<Ability>(); + Race defaultRace = SystemDefaultRace; + + if (defaultRace!=null) + { + items = defaultRace.GetAbilityList(); + } + + return items; + } + + public Ability GetSystemAbility(string id) + { + Ability ability = null; + Race defaultRace = SystemDefaultRace; + + if (defaultRace!=null) + { + ability = defaultRace.GetAbility(id); + } + + return ability; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/IWarFoundryNativeSourceObject.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,33 @@ +// IWarFoundrySourceObject.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using ICSharpCode.SharpZipLib.Zip; + +namespace IBBoard.WarFoundry +{ + /// <summary> + /// Interface for native WarFoundry objects that are the main object in a file and need to reference the file at a later date. + /// </summary> + public interface IWarFoundryNativeSourceObject : IWarFoundryObject + { + ZipFile SourceFile { get; set; } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/IWarFoundryObject.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,31 @@ +// IWarFoundryObject.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry +{ + public interface IWarFoundryObject + { + string ID { get; set; } + + string Name { get; set; } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/IWarFoundryStagedLoadObject.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,25 @@ +using System; +using ICSharpCode.SharpZipLib.Zip; +using IBBoard.WarFoundry.API.Factories; + +namespace IBBoard.WarFoundry.API.Objects +{ + public interface IWarFoundryStagedLoadObject : IWarFoundryObject + { + /// <summary> + /// Checks whether the object has been fully loaded or whether only the first stage of loading has been performed. + /// If the object is not fully loaded then the method must finish loading the object. + /// </summary> + void EnsureFullyLoaded(); + + /// <value> + /// Gets the <code>AbstractNativeWarFoundryFactory</code> that created the object. + /// </value> + AbstractNativeWarFoundryFactory Factory { get; } + + /// <value> + /// Returns <code>true</code> if the object has been fully loaded with all data, else returns <code>false</code> + /// </value> + bool IsFullyLoaded { get; } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Race.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,339 @@ +// Race.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using System.IO; +using System.Xml; +using IBBoard.IO; +using IBBoard.WarFoundry.API.Factories; + +namespace IBBoard.WarFoundry.API.Objects +{ + public class Race : WarFoundryObject + { + public static string SYSTEM_DEFAULT_RACE_ID = "GameDefault"; + + private string subID; + private string systemID; + private GameSystem system; + private Dictionary<Category, Dictionary<string, UnitType>> unitTypesByCat; + private Dictionary<string, UnitType> unitTypes; + private Dictionary<string, EquipmentItem> equipment; + private Dictionary<string, Ability> abilities; + private Category[] cats; + private FileInfo sourceFile; + + public Race(string raceID, string raceName, string gameSystemID) : this(raceID, "", raceName, gameSystemID) + { + } + + public Race(string raceID, string raceSubID, string raceName, string gameSystemID) : base(raceID + (raceSubID!="" ? "_"+raceSubID : ""), raceName) + { + subID = (raceSubID == null ? "" : raceSubID); + systemID = gameSystemID; + } + + public string SubID + { + get { return subID; } + set { subID = (value == null ? "" : value.Trim()); } + } + + public FileInfo SourceFile + { + get { return sourceFile; } + set { sourceFile = value; } + } + + public GameSystem GameSystem + { + get + { + if (system == null) + { + system = WarFoundryLoader.GetDefault().GetGameSystem(systemID); + } + + return system; + } + set + { + if (value == null) + { + throw new ArgumentException("Game system for a race cannot be null"); + } + + system = value; + } + } + + /// <summary> + /// Gets a category from its ID. Attempts to get the category from the race's overrides, or else it falls back to getting the Game System's category with that ID. + /// </summary> + /// <param name="id"> + /// The ID of the category to get + /// </param> + /// <returns> + /// The <code>Category</code> with the specified ID, or null if one doesn't exist. + /// </returns> + public Category GetCategory(string id) + { + Category[] categories = RaceCategories; + Category cat = null; + + for (int i = 0; i<categories.Length; i++) + { + if (categories[i].ID == id) + { + cat = categories[i]; + break; + } + } + + return cat; + } + + /// <summary> + /// Gets a category based on its index within the list. Ordering is defined by the game system definition or by the race's overrides. + /// </summary> + /// <param name="index"> + /// A <see cref="System.Int32"/> + /// </param> + /// <returns> + /// A <see cref="Category"/> + /// </returns> + public virtual Category GetCategory(int index) + { + if (cats == null) + { + return GameSystem.GetCategory(index); + } + else + { + return Categories[index]; + } + } + + public Category[] Categories + { + get + { + return RaceCategories; + } + + set + { + RaceOverrideCategories = value; + } + } + + /*private virtual Category[] GetCategories() + { + if (cats==null) + { + return GameSystem.Categories; + } + else + { + return cats; + } + }*/ + + public void SetEquipmentItems(Dictionary<string, EquipmentItem> items) + { + equipment = items; + } + + public virtual EquipmentItem GetEquipmentItem(string id) + { + return (EquipmentItem)equipment[id]; + } + + public List<EquipmentItem> GetEquipmentList() + { + List<EquipmentItem> items = new List<EquipmentItem>(); + + foreach (EquipmentItem item in equipment.Values) + { + items.Add(item); + } + + return items; + } + + public virtual bool HasCategoryOverrides() + { + return cats!=null; + } + + public void SetUnitTypes(Dictionary<string, UnitType> types) + { + unitTypes = types; + } + + public UnitType[] GetUnitTypes(Category cat) + { + if (unitTypesByCat==null) + { + unitTypesByCat = new Dictionary<Category,Dictionary<string,UnitType>>(); + + foreach (Category category in RaceCategories) + { + unitTypesByCat.Add(category, new Dictionary<string, UnitType>()); + } + + Dictionary<string,UnitType> catUnitTypes; + + foreach (UnitType unit in unitTypes.Values) + { + unitTypesByCat.TryGetValue(unit.MainCategory, out catUnitTypes); + + if (catUnitTypes == null) + { + throw new InvalidFileException(String.Format("Unit type {0} with name {1} is a unit of an undefined category", unit.ID, unit.Name)); + } + + catUnitTypes.Add(unit.ID, unit); + } + } + + ICollection<UnitType> col = unitTypesByCat[cat].Values; + UnitType[] toRet = new UnitType[col.Count]; + int i = 0; + + foreach (UnitType type in col) + { + toRet[i++] = type; + } + + return toRet; + } + + public UnitType GetUnitType(string id) + { + return (UnitType)unitTypes[id]; + } + + public List<Ability> GetAbilityList() + { + List<Ability> items = new List<Ability>(); + + foreach (Ability ability in abilities.Values) + { + items.Add(ability); + } + + return items; + } + + public void SetAbilities(Dictionary<string, Ability> newAbilities) + { + abilities = newAbilities; + } + + public Ability GetAbility(string id) + { + Ability ability = null; + abilities.TryGetValue(id, out ability); + return ability; + } + + protected Category[] RaceCategories + { + get + { + Category[] cats = RaceOverrideCategories; + + if (cats == null) + { + //No overrides, so load system categories + cats = GameSystem.Categories; + } + + return cats; + } + } + + protected virtual Category[] RaceOverrideCategories + { + get + { + return RaceRawOverrideCategories; + } + set + { + RaceRawOverrideCategories = value; + } + } + + protected Category[] RaceRawOverrideCategories + { + get { return cats; } + set + { + if (value!=null && value.Length>0) + { + cats = value; + } + else + { + cats = null; + } + } + } + + protected virtual Dictionary<string, UnitType> RaceUnitTypes + { + get { return RaceRawUnitTypes; } + set { RaceRawUnitTypes = value; } + } + + protected virtual Dictionary<string, EquipmentItem> RaceEquipment + { + get { return RaceRawEquipment; } + set { RaceRawEquipment = value; } + } + + protected virtual Dictionary<string, Ability> RaceAbilities + { + get { return RaceRawAbilities; } + set { RaceRawAbilities = value; } + } + + protected Dictionary<string, UnitType> RaceRawUnitTypes + { + get { return unitTypes; } + set { unitTypes = value; } + } + + protected Dictionary<string, EquipmentItem> RaceRawEquipment + { + get { return equipment; } + set { equipment = value; } + } + + protected Dictionary<string, Ability> RaceRawAbilities + { + get { return abilities; } + set { abilities = value; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/StagedLoadingGameSystem.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,64 @@ +// StagedLoadingGameSystem.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.WarFoundry.API.Factories; + +namespace IBBoard.WarFoundry.API.Objects +{ + public class StagedLoadingGameSystem : GameSystem, IWarFoundryStagedLoadObject + { + private AbstractNativeWarFoundryFactory creatingFactory; + + public StagedLoadingGameSystem(string systemID, string systemName, AbstractNativeWarFoundryFactory factory) : base(systemID, systemName) + { + creatingFactory = factory; + } + + public AbstractNativeWarFoundryFactory Factory + { + get { return creatingFactory; } + } + + public void EnsureFullyLoaded () + { + if (!IsFullyLoaded) + { + Factory.CompleteLoading(this); + } + } + + public bool IsFullyLoaded + { + get { return RawSystemCategories != null && base.StandardSystemStatsID != null && base.SystemStats != null; } + } + + protected override Category[] SystemCategories + { + get + { + EnsureFullyLoaded(); + return base.SystemCategories; + } + set { base.SystemCategories = value; } + } + + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/StagedLoadingRace.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,150 @@ +// StagedLoadingRace.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Factories; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for StagedLoadingRace. + /// </summary> + public class StagedLoadingRace : Race, IWarFoundryStagedLoadObject + { + private AbstractNativeWarFoundryFactory creatingFactory; + + public StagedLoadingRace(string raceID, string raceName, string gameSystemID, AbstractNativeWarFoundryFactory factory) : this(raceID, "", raceName, gameSystemID, factory) + { + } + + public StagedLoadingRace(string raceID, string raceSubID, string raceName, string gameSystemID, AbstractNativeWarFoundryFactory factory) : base(raceID, raceName, gameSystemID) + { + creatingFactory = factory; + } + + public AbstractNativeWarFoundryFactory Factory + { + get { return creatingFactory; } + } + + public void EnsureFullyLoaded () + { + if (!IsFullyLoaded) + { + Factory.CompleteLoading(this); + } + } + + public bool IsFullyLoaded + { + get { return RaceRawOverrideCategories != null && RaceRawUnitTypes != null && RaceRawEquipment != null && RaceRawAbilities != null; } + } + + protected override Category[] RaceOverrideCategories + { + get + { + EnsureFullyLoaded(); + return base.RaceOverrideCategories; + } + } + + protected override Dictionary<string, Ability> RaceAbilities + { + get + { + EnsureFullyLoaded(); + return base.RaceAbilities; + } + set + { + base.RaceAbilities = value; + } + } + + protected override Dictionary<string, EquipmentItem> RaceEquipment + { + get + { + EnsureFullyLoaded(); + return base.RaceEquipment; + } + set + { + base.RaceEquipment = value; + } + } + + protected override Dictionary<string, UnitType> RaceUnitTypes + { + get + { + EnsureFullyLoaded(); + return base.RaceUnitTypes; + } + set + { + base.RaceUnitTypes = value; + } + } + + + + + + + /*public void CompleteLoading(List<Category> categoriesList, Dictionary<string,UnitType> unitTypesList, Dictionary<string,EquipmentItem> equipmentList, Dictionary<string, Ability> abilityList) + { + logger.Debug("Preparing dictionaries"); + + if (categoriesList != null && categoriesList.Count > 0) + { + cats = categoriesList.ToArray(); + } + + logger.Debug("Loading equipment"); + equipment = new Dictionary<string,EquipmentItem>(); + + foreach (string equipID in equipmentList.Keys) + { + equipment.Add(equipID, equipmentList[equipID]); + } + + logger.Debug("Loading abilities"); + abilities = new Dictionary<string,Ability>(); + + foreach (string abilityID in abilityList.Keys) + { + abilities.Add(abilityID, abilityList[abilityID]); + } + + logger.Debug("Loading units"); + unitTypes = new Dictionary<string,UnitType>(); + + foreach (string unitID in unitTypesList.Keys) + { + unitTypes.Add(unitID, unitTypesList[unitID]); + } + + base.CompleteLoading(); + }*/ + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Stat.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,31 @@ +using System; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for Stat. + /// </summary> + public class Stat + { + private StatSlot parentStatSlot; + private string statString; + + public Stat(StatSlot parentSlot, string statValue) + { + parentStatSlot = parentSlot; + statString = statValue; + } + + public StatSlot ParentSlot + { + get { return parentStatSlot; } + set { parentStatSlot = value; } + } + + public string SlotValueString + { + get { return statString; } + set { statString = (value == null ? "" : value); } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/StatSlot.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,33 @@ +using System; +using System.Text.RegularExpressions; +using System.Xml; +using IBBoard; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for StatSlot. + /// </summary> + public class StatSlot + { + private string name; + private SystemStats sysStats; + + public StatSlot(String statName) + { + name = statName; + } + + public string Name + { + get { return name; } + set { value = name; } + } + + public SystemStats SystemStats + { + get { return sysStats; } + set { sysStats = value; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Stats.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,94 @@ +// Stats.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using IBBoard.Lang; + +namespace IBBoard.WarFoundry.API.Objects +{ + public class Stats + { + private Stat[] stats; + private List<string> statOrder; + private SystemStats sysStats; + + public Stats(SystemStats systemStats) + { + sysStats = systemStats; + } + + public Stat[] StatsArray + { + get { return (Stat[])stats.Clone(); } + } + + protected internal void SetStats(List<Stat> statList) + { + stats = statList.ToArray(); + statOrder = new List<string>(); + + foreach (Stat stat in statList) + { + statOrder.Add(stat.ParentSlot.Name); + } + } + + public Stat this[string id] + { + get + { + Stat stat = null; + int pos = statOrder.IndexOf(id); + + try + { + stat = this[pos]; + } + catch (ArgumentException ex) + { + throw new ArgumentException(Translation.GetTranslation("InvalidStatPos", "Invalid statistic ID {0} for stats based on system stats set {1}", new object[]{id, sysStats.ID}), ex); + } + + return stat; + } + } + + public Stat this[int pos] + { + get + { + if (pos < stats.Length && pos >= 0) + { + return stats[pos]; + } + else + { + throw new ArgumentException(Translation.GetTranslation("InvalidStatPos", "Invalid statistic position {0} for stats based on system stats set {1}", new object[]{pos, sysStats.ID})); + } + } + } + + public int StatCount + { + get { return stats.Length; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/SystemStats.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for SystemStats. + /// </summary> + public class SystemStats + { + private Dictionary<string, StatSlot> stats; + private string id; + + public SystemStats(string statsID, StatSlot[] statSlots) + { + id = statsID; + stats = new Dictionary<string, StatSlot>(); + + foreach (StatSlot slot in statSlots) + { + slot.SystemStats = this; + stats[slot.Name] = slot; + } + } + + public StatSlot[] StatSlots + { + get + { + StatSlot[] slots = new StatSlot[stats.Count]; + stats.Values.CopyTo(slots, 0); + return slots; + } + } + + public StatSlot this[string key] + { + get + { + StatSlot slot = null; + stats.TryGetValue(key, out slot); + return slot; + } + } + + public int SlotCount + { + get { return stats.Count; } + } + + public string ID + { + get { return id; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/SystemStatsSet.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace IBBoard.WarFoundry.API.Objects +{ + public class SystemStatsSet + { + private Dictionary<string, SystemStats> statsMap; + public SystemStatsSet(Dictionary<string, SystemStats> stats) + { + statsMap = stats; + } + + public SystemStats this[string key] + { + get { return statsMap[key]; } + + set + { + if (statsMap.ContainsKey(key)) + { + statsMap[key] = value; + } + else + { + throw new ArgumentException("Key must already exist for values to be set"); + } + } + } + + public string[] GetSystemStatsIDs() + { + string[] ids = new string[statsMap.Count]; + statsMap.Keys.CopyTo(ids, 0); + return ids; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/Unit.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,405 @@ +using System; +using System.Collections; +using System.Text; +using System.Xml; +using IBBoard.Lang; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for UnitInstance. + /// </summary> + public class Unit : WarFoundryObject + { + private UnitType type; + private int size; + private Army army; + private Race race; + private double points; + private ArmyCategory cat; + private Hashtable equipment = new Hashtable(); + public event DoubleValChangedDelegate PointsValueChanged; + public event IntValChangedDelegate UnitSizeChanged; + public event FloatValChangedDelegate UnitEquipmentAmountChanged; + + public Unit(UnitType unitType, Army parentArmy) : this(unitType, unitType.MinSize, parentArmy){} + + public Unit(UnitType unitType, int startSize, Army parentArmy) + { + Army = parentArmy; + type = unitType; + Size = startSize; + setInitialEquipment(); + CalcCost(); + } + + protected override string DefaultName() + { + if (type != null) + { + if (size == 1) + { + return type.Name; + } + else + { + return String.Format(Translation.GetTranslation("defaultUnitName"), size, type.Name); + } + } + else + { + return "Unknown Unit"; + } + } + + private void setInitialEquipment() + { + foreach (UnitEquipmentItem unitEquip in UnitType.GetEquipmentItems()) + { + if (unitEquip.IsRequired) + { + if (CanEquipWithItem(unitEquip.ID)) + { + EquipmentItem equipItem = unitEquip.EquipmentItem; + equipment[unitEquip.ID] = equipItem.MinNumber; + } + } + } + } + + private void CalcCost() + { + String oldName = HasDefaultName() ? Name : null; + double oldpoints = points; + points = type.CostPerTrooper * AdditionalTroopers + type.BaseUnitCost; + UnitEquipmentItem unitEquipItem; + EquipmentItem equipItem; + float count; + + foreach (string key in equipment.Keys) + { + unitEquipItem = UnitType.GetEquipmentItem(key); + equipItem = unitEquipItem.EquipmentItem; + count = (float)equipment[key]; + + if (equipItem.IsRatioLimit) + { + if (unitEquipItem.RoundNumberUp) + { + points+= Math.Ceiling(size * count) * equipItem.Cost; + } + else + { + points+= Math.Floor(size * count) * equipItem.Cost; + } + } + else + { + if (count == -1) + { + points+= size * equipItem.Cost; + } + else + { + points+= count * equipItem.Cost; + } + } + } + + if (oldpoints!=points) + { + OnPointsValueChanged(oldpoints, points); + } + + if (oldName!=null) + { + OnNameChanged(oldName, Name); + } + } + + public int AdditionalTroopers + { + get { return Math.Max(Size - type.BaseSize, 0); } + } + + public int Size + { + get { return size; } + set + { + if (value!=size) + { + int oldValue = size; + size = (value>0 ? value : 1); + CalcCost(); + OnUnitSizeChanged(oldValue, size); + } + } + } + + public UnitType UnitType + { + get { return type; } + } + + public Army Army + { + get { return army; } + set + { + army = value; + + if (army == null) + { + Category = null; + } + } + } + + public Race Race + { + get { return race; } + set { race = value; } + } + + public ArmyCategory Category + { + get + { + if (cat==null) + { + if (Army!=null) + { + return Army.GetCategory(UnitType.MainCategory); + } + else + { + return null; + } + } + else + { + return cat; + } + } + set { cat = value; } + } + + public double PointsValue + { + get + { + if (points == 0) + { + CalcCost(); + } + + return points; + } + } + + public UnitEquipmentItem[] GetAllowedOptionalEquipment() + { + ArrayList list = new ArrayList(); + + foreach (UnitEquipmentItem item in UnitType.GetEquipmentItems()) + { + if (!item.IsRequired) + { + list.Add(item); + } + } + + return (UnitEquipmentItem[])list.ToArray(typeof(UnitEquipmentItem)); + } + + public UnitEquipmentItem[] GetEquipment() + { + UnitEquipmentItem[] items = new UnitEquipmentItem[equipment.Count]; + int i = 0; + + foreach (String itemID in equipment.Keys) + { + items[i++] = UnitType.GetEquipmentItem(itemID); + } + + return items; + } + + public UnitEquipmentItem[] GetRequiredEquipment() + { + ArrayList list = new ArrayList(); + UnitEquipmentItem item; + + foreach(String itemID in equipment.Keys) + { + item = UnitType.GetEquipmentItem(itemID); + + if (item.IsRequired) + { + list.Add(item); + } + } + + return (UnitEquipmentItem[])list.ToArray(typeof(UnitEquipmentItem)); + } + + public float GetEquipmentAmount(UnitEquipmentItem item) + { + return GetEquipmentAmount(item.EquipmentItem.ID); + } + + public float GetEquipmentAmount(string equipID) + { + if (equipment.ContainsKey(equipID)) + { + return (float)equipment[equipID]; + } + else + { + return 0; + } + } + + public void SetEquipmentAmount(string equipID, float amount) + { + UnitEquipmentItem equip = UnitType.GetEquipmentItem(equipID); + + if (equip == null) + { + throw new InvalidOperationException("No such equipment ID "+equipID+" for unit "+ID); + } + + if (equip.EquipmentItem.IsRatioLimit) + { + if (amount > 1) + { + amount = 1; + } + else if (amount < 0) + { + amount = 0; + } + //else what was passed in was okay + } + else + { + if (amount >=1 || amount == -1) + { + amount = (float)Math.Round(amount); + } + else + { + amount = 0; + } + } + + float oldAmount = 0; + + if (equipment.ContainsKey(equipID)) + { + oldAmount = (float)equipment[equipID]; + } + + if (amount!=oldAmount) + { + if (amount > 0 || amount == -1) + { + equipment[equipID] = amount; + } + else + { + equipment.Remove(equipID); + } + + OnUnitEquipmentAmountChanged(equip, oldAmount, amount); + CalcCost(); + } + } + + public bool CanEquipWithItem(string equipID) + { + string mutex = UnitType.GetEquipmentItem(equipID).MutexGroup; + + if (mutex == "") + { + return true; + } + + foreach (string itemID in equipment.Keys) + { + if (UnitType.GetEquipmentItem(itemID).MutexGroup == mutex) + { + return false; + } + } + + return true; + } + + private void OnPointsValueChanged(double oldValue, double newValue) + { + if (PointsValueChanged!=null) + { + PointsValueChanged(this, oldValue, newValue); + } + } + + private void OnUnitSizeChanged(int oldValue, int newValue) + { + if (UnitSizeChanged!=null) + { + UnitSizeChanged(this, oldValue, newValue); + } + } + + private void OnUnitEquipmentAmountChanged(UnitEquipmentItem equip, float oldValue, float newValue) + { + if (UnitEquipmentAmountChanged!=null) + { + UnitEquipmentAmountChanged(equip, oldValue, newValue); + } + } + + public Stats UnitStats + { + get { return UnitType.UnitStats; } + } + + /*public override string ToXmlString() + { + StringBuilder sb = new StringBuilder(); + float amount; + + foreach(string key in equipment.Keys) + { + amount = (float)equipment[key]; + + if (amount > 0 || amount == -1) + { + sb.Append("<equipItem id=\""+key+"\" amount=\""+amount+"\" />"); + } + } + + string equipmentString; + + if (sb.Length > 0) + { + equipmentString = "<equipment>"+sb.ToString()+"</equipment>"; + } + else + { + equipmentString = ""; + } + + if (equipmentString == "") + { + return "<unit id=\""+ID+"\" unitType=\""+UnitType.ID+"\" unitName=\""+name+"\" size=\""+Size+"\" />"; + } + else + { + return "<unit id=\""+ID+"\" unitType=\""+UnitType.ID+"\" unitName=\""+name+"\" size=\""+Size+"\">"+equipmentString+"</unit>"; + } + }*/ + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/UnitEquipmentItem.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,81 @@ +using System; +using System.Xml; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for UnitEquipmentItem. + /// </summary> + public class UnitEquipmentItem : WarFoundryObject + { + private bool required, roundUp; + private string mutexGroup; + private UnitType unitType; + + /*public UnitEquipmentItem(XmlElement node, UnitType equipForType) + { + EquipmentForUnit = equipForType; + ID = node.GetAttribute("id"); + IsRequired = bool.Parse(node.GetAttribute("required")); + RoundNumberUp = "up".Equals(node.GetAttribute("roundDirection").ToLower()); + MutexGroup = node.GetAttribute("exclusivityGroup"); + }*/ + protected UnitEquipmentItem(UnitType equipForType) + { + EquipmentForUnit = equipForType; + } + + public bool IsRequired + { + get { return required; } + set { required = value; } + } + + public bool RoundNumberUp + { + get { return roundUp; } + set { roundUp = value; } + } + + public string MutexGroup + { + get { return mutexGroup; } + set { mutexGroup = (value == null ? "" : value.Trim()); } + } + + public UnitType EquipmentForUnit + { + get { return unitType; } + set + { + if (value != null) + { + unitType = value; + } + } + } + + public EquipmentItem EquipmentItem + { + get { return EquipmentForUnit == null ? null : EquipmentForUnit.Race.GetEquipmentItem(ID); } + } + + public override string ToString() + { + return EquipmentItem.Name+ " ("+EquipmentItem.Cost+"pts each)"; + } + + public bool HasAlternatives() + { + if (MutexGroup=="") + { + return false; + } + else + { + //If the number of items in the MutEx group is greater than one then it must be this item plus another + return EquipmentForUnit.GetEquipmentItemsByExclusionGroup(MutexGroup).Length > 1; + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/UnitEquipmentItemObj.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,68 @@ +using System; +using System.Collections; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for UnitEquipmentItemObj. + /// </summary> + public class UnitEquipmentItemObj + { + private Unit unit; + private UnitEquipmentItem item; + private EquipmentItem equip; + + private static Hashtable equipObjs = new Hashtable(); + + private UnitEquipmentItemObj(Unit unit, UnitEquipmentItem unitItem) + { + this.unit = unit; + item = unitItem; + equip = item.EquipmentItem; + } + + public static UnitEquipmentItemObj GetEquipObj(Unit unit, UnitEquipmentItem unitItem) + { + if (!equipObjs.ContainsKey(unitItem)) + { + equipObjs[unitItem] = new UnitEquipmentItemObj(unit, unitItem); + } + + return (UnitEquipmentItemObj)equipObjs[unitItem]; + } + + public override string ToString() + { + return String.Format("{0} (For {1} at {2}pts each)", equip.Name, FormatEquipmentAmount(unit, equip), equip.Cost); + } + + public UnitEquipmentItem Item + { + get { return item; } + } + + public static string FormatEquipmentAmount(Unit unit, EquipmentItem equip) + { + return FormatEquipmentAmount(equip, unit.GetEquipmentAmount(equip.ID)); + } + + public static string FormatEquipmentAmount(EquipmentItem equip, float amount) + { + if (equip.IsRatioLimit) + { + return Math.Round(amount * 100) + "%"; + } + else + { + if (amount == -1) + { + return "all"; + } + else + { + return amount.ToString(); + } + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/UnitType.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,222 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Xml; +using IBBoard.Logging; +using IBBoard.WarFoundry.API.Requirements; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for Unit. + /// </summary> + public class UnitType : WarFoundryObject + { + protected Category mainCat; + protected string mainCatID; + protected Category[] categories; + protected string[] categoryIDs; + protected Race race; + protected int min, max, baseSize = 0; + protected int minSize, maxSize; + protected double baseUnitCost; + protected double costPerTrooper; + protected Stats stats; + protected UnitRequirement[] requirements; + protected Hashtable equipment = new Hashtable(); + protected Hashtable equipmentExclusionGroups = new Hashtable(); + protected ArrayList equipmentKeyOrder = new ArrayList(); + + public UnitType(string id, string typeName, string mainCategoryID, string[] allCategoryIDs, int minNum, int maxNum, int minimumSize, int maximumSize, double unitCost, double trooperCost, Stats unitStats, UnitRequirement[] unitRequirements, Race parentRace) : base(id, typeName) + { + mainCatID = mainCategoryID; + categoryIDs = allCategoryIDs; + race = parentRace; + + if (minNum > maxNum && maxNum!=-1) + { + min = maxNum; + LogNotifier.WarnFormat(GetType(), "Unit type {0} ({1}) had a minimum number greater than their maximum number.", typeName, id); + } + else + { + min = (minNum >= 0 ? minNum : 0); + } + + max = maxNum; + + if (minimumSize > maximumSize && maximumSize!=-1) + { + minSize = maximumSize; + LogNotifier.WarnFormat(GetType(), "Unit type {0} ({1}) had a minimum size greater than their maximum size.", typeName, id); + } + else + { + minSize = (minimumSize >= 0 ? minimumSize : 0); + } + + maxSize = maximumSize; + baseUnitCost = unitCost; + costPerTrooper = trooperCost; + requirements = unitRequirements; + stats = unitStats; + } + + public Race Race + { + get { return race; } + } + + public virtual Category MainCategory + { + get + { + if (mainCat == null) + { + LogNotifier.Debug(GetType(), Name+" main category: "+mainCatID); + mainCat = Race.GetCategory(mainCatID); + } + + return mainCat; + } + } + + public virtual Category[] Categories + { + get + { + if (categories == null) + { + categories = new Category[categoryIDs.Length]; + + for (int i = 0; i<categoryIDs.Length; i++) + { + categories[i] = Race.GetCategory(categoryIDs[i]); + } + } + + return categories; + } + } + + public int MinSize + { + get { return minSize; } + } + + public int MaxSize + { + get { return maxSize; } + } + + public int BaseSize + { + get { return baseSize; } + } + + public int MinNumber + { + get { return min; } + } + + public int MaxNumber + { + get { return max; } + } + + public double BaseUnitCost + { + get { return baseUnitCost; } + } + + public double CostPerTrooper + { + get { return costPerTrooper; } + } + + protected override string DefaultName() + { + throw new InvalidOperationException("Unit type with id "+id+" did not have a name specified"); + } + + public Stats UnitStats + { + get + { + return stats; + } + } + + public UnitEquipmentItem GetEquipmentItem(string id) + { + return (UnitEquipmentItem)equipment[id]; + } + + public UnitEquipmentItem[] GetEquipmentItems() + { + UnitEquipmentItem[] items = new UnitEquipmentItem[equipment.Count]; + int i = 0; + + foreach (string itemID in equipmentKeyOrder) + { + items[i++] = (UnitEquipmentItem)equipment[itemID]; + } + + return items; + } + + public List<FailedUnitRequirement> CanAddToArmy(Army army) + { + List<FailedUnitRequirement> failures = new List<FailedUnitRequirement>(); + + if (requirements!=null && requirements.Length > 0) + { + foreach (UnitRequirement requirement in requirements) + { + FailedUnitRequirement failure = (FailedUnitRequirement)requirement.CanAddToWarFoundryObject(army); + + if (failure!=null) + { + failures.Add(failure); + } + } + } + + return failures; + } + + public List<FailedUnitRequirement> CanRemoveFromArmy(Army army) + { + List<FailedUnitRequirement> failures = new List<FailedUnitRequirement>(); + + if (requirements!=null && requirements.Length > 0) + { + foreach (UnitRequirement requirement in requirements) + { + FailedUnitRequirement failure = (FailedUnitRequirement)requirement.CanRemoveFromWarFoundryObject(army); + + if (failure!=null) + { + failures.Add(failure); + } + } + } + + return failures; + } + + public UnitEquipmentItem[] GetEquipmentItemsByExclusionGroup(string group) + { + ArrayList list = (ArrayList)equipmentExclusionGroups[group]; + + if (list == null) + { + return new UnitEquipmentItem[0]; + } + else + { + return (UnitEquipmentItem[])list.ToArray(typeof(UnitEquipmentItem)); + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Objects/WarFoundryObject.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,88 @@ +using System; + +namespace IBBoard.WarFoundry.API.Objects +{ + /// <summary> + /// Summary description for WarFoundryObject. + /// </summary> + public abstract class WarFoundryObject : IWarFoundryObject + { + protected string name, id; + public event StringValChangedDelegate NameChanged; + + protected WarFoundryObject(){} + + protected WarFoundryObject(string objName) : this() + { + Name = objName; + } + + protected WarFoundryObject(string objId, string objName) : this(objName) + { + ID = objId; + } + + public virtual string ID + { + get + { + if (id == null) + { + id = GenerateID(); + } + + return id; + } + + set { id = (value == null ? GenerateID() : value.Trim()); } + } + + public virtual string Name + { + get + { + if (HasDefaultName()) + { + return DefaultName(); + } + else + { + return name; + } + } + set + { + string oldValue = name; + name = value; + + if (name!=oldValue) + { + OnNameChanged(oldValue, name); + } + } + } + + protected bool HasDefaultName() + { + return (name == null || name == ""); + } + + protected void OnNameChanged(string oldValue, string newValue) + { + if (NameChanged!=null) + { + NameChanged(this, oldValue, newValue); + } + } + + protected virtual string DefaultName() + { + return "-"; + } + + protected string GenerateID() + { + return "ID" + UnixTimestamp.GetTimestamp(DateTime.Now) + "." + DateTime.Now.Millisecond; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/AbstractArmyRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,68 @@ +// Requirement.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; + + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Abstract class for any requirement for adding an object to an army, e.g. adding units. + /// </summary> + public abstract class AbstractArmyRequirement : AbstractRequirement + { + protected abstract AbstractFailedRequirement CanAddToArmy(Army army); + protected abstract AbstractFailedRequirement CanRemoveFromArmy(Army army); + + public override AbstractFailedRequirement CanAddToWarFoundryObject (WarFoundryObject obj) + { + AbstractFailedRequirement fail = null; + + if (obj is Army) + { + fail = CanAddToArmy((Army)obj); + } + else + { + fail = new FailedRequirement(this); + } + + return fail; + } + + public override AbstractFailedRequirement CanRemoveFromWarFoundryObject (WarFoundryObject obj) + { + AbstractFailedRequirement fail = null; + + if (obj is Army) + { + fail = CanRemoveFromArmy((Army)obj); + } + else + { + fail = new FailedRequirement(this); + } + + return fail; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/AbstractFailedRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,36 @@ +// AbstractFailedRequirement.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry.API.Requirements +{ + public abstract class AbstractFailedRequirement + { + protected AbstractRequirement failedReq; + + public AbstractFailedRequirement(AbstractRequirement req) + { + failedReq = req; + } + + public abstract string Description { get; } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/AbstractRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,35 @@ +// AbstractRequirement.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// The base class for Requirements. Specific types of abstract requirement should extend this class. + /// </summary> + public abstract class AbstractRequirement + { + public abstract string Description { get; } + public abstract AbstractFailedRequirement CanAddToWarFoundryObject(WarFoundryObject obj); + public abstract AbstractFailedRequirement CanRemoveFromWarFoundryObject(WarFoundryObject obj); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/AbstractUnitRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,66 @@ +// AbstractUnitRequirement.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Base abstract class for all requirements related to adding/removing something from a Unit (e.g. adding equipment or abilities) + /// </summary> + public abstract class AbstractUnitRequirement : AbstractRequirement + { + protected abstract AbstractFailedRequirement CanAddToUnit(Unit unit); + protected abstract AbstractFailedRequirement CanRemoveFromUnit(Unit unit); + + public override AbstractFailedRequirement CanAddToWarFoundryObject (WarFoundryObject obj) + { + AbstractFailedRequirement fail = null; + + if (obj is Unit) + { + fail = CanAddToUnit((Unit)obj); + } + else + { + fail = new FailedRequirement(this); + } + + return fail; + } + + public override AbstractFailedRequirement CanRemoveFromWarFoundryObject (WarFoundryObject obj) + { + AbstractFailedRequirement fail = null; + + if (obj is Unit) + { + fail = CanRemoveFromUnit((Unit)obj); + } + else + { + fail = new FailedRequirement(this); + } + + return fail; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/Delegates.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,27 @@ +// Delegates.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; + +namespace IBBoard.WarFoundry.API.Requirements +{ + public delegate void FailedUnitRequirementDelegate(List<FailedUnitRequirement> failedRequirements); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/FailedRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,36 @@ +// FailedRequirement.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry.API.Requirements +{ + public class FailedRequirement : AbstractFailedRequirement + { + public FailedRequirement(AbstractRequirement req) : base(req) + { + } + + public override string Description + { + get { return failedReq.Description; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/FailedUnitRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,20 @@ +using System; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitRequirement. + /// </summary> + public class FailedUnitRequirement : AbstractFailedRequirement + { + public FailedUnitRequirement(UnitRequirement requirement) : base(requirement) + { + } + + public override string Description + { + get { return failedReq.Description; } + } + + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/RequirementAND.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for RequirementAND. + /// </summary> + public class RequirementAND : AbstractRequirement + { + private static string and; + + static RequirementAND() + { + and = Translation.GetTranslation("requirement_and", true); + + if (and == null) + { + and = "{0}; and {1}"; + } + } + + private AbstractRequirement reqA, reqB; + + public RequirementAND(AbstractRequirement requirementA, AbstractRequirement requirementB) + { + reqA = requirementA; + reqB = requirementB; + } + + public override AbstractFailedRequirement CanAddToWarFoundryObject(WarFoundryObject obj) + { + FailedRequirement failed = null; + + if (reqA.CanAddToWarFoundryObject(obj) !=null || reqB.CanAddToWarFoundryObject(obj)!=null) + { + failed = new FailedRequirement(this); + } + + return failed; + } + + public override AbstractFailedRequirement CanRemoveFromWarFoundryObject(WarFoundryObject obj) + { + FailedRequirement failed = null; + + if (reqA.CanRemoveFromWarFoundryObject(obj) !=null || reqB.CanRemoveFromWarFoundryObject(obj)!=null) + { + failed = new FailedRequirement(this); + } + + return failed; + } + + public override string Description + { + get { return String.Format(and, reqA.Description, reqB.Description); } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/RequirementOR.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitRequirementOR. + /// </summary> + public class RequirementOR : AbstractRequirement + { + private static string or; + + static RequirementOR() + { + or = Translation.GetTranslation("requirement_or", true); + + if (or == null) + { + or = "{0} or {1}"; + } + } + + private AbstractRequirement reqA, reqB; + + public RequirementOR(AbstractRequirement requirementA, AbstractRequirement requirementB) + { + reqA = requirementA; + reqB = requirementB; + } + + public override AbstractFailedRequirement CanAddToWarFoundryObject(WarFoundryObject obj) + { + FailedRequirement failed = null; + + if (reqA.CanAddToWarFoundryObject(obj) !=null && reqB.CanAddToWarFoundryObject(obj)!=null) + { + failed = new FailedRequirement(this); + } + + return failed; + } + + public override AbstractFailedRequirement CanRemoveFromWarFoundryObject(WarFoundryObject obj) + { + FailedRequirement failed = null; + + if (reqA.CanRemoveFromWarFoundryObject(obj)!=null && reqB.CanRemoveFromWarFoundryObject(obj)!=null) + { + failed = new FailedRequirement(this); + } + + return failed; + } + + public override string Description + { + get { return String.Format(or, reqA.Description, reqB.Description); } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitExcludesRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitExcludesRequirement. + /// </summary> + public class UnitExcludesRequirement : UnitRequirement + { + private UnitRequirementItem[] excludingTypes; + + public UnitExcludesRequirement(UnitType type, UnitRequirementItem[] excludingUnitTypes) : base(type) + { + excludingTypes = excludingUnitTypes; + } + + public override string Description + { + get + { + return "Some units are already included that excluded this unit"; + } + } + + protected override AbstractFailedRequirement CanAddToArmy(Army army, UnitType type) + { + FailedUnitRequirement failed = null; + + for (int i = 0; i<excludingTypes.Length; i++) + { + if (army.GetUnitTypeCount(excludingTypes[i].UnitType) > 0) + { + failed = new FailedUnitRequirement(this); + break; + } + } + + return failed; + } + + protected override AbstractFailedRequirement CanRemoveFromArmy(Army army, UnitType type) + { + return null; + } + + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitExclusion.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,41 @@ +using System; +using System.Text; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitMaxNumberRequirement. + /// </summary> + public class UnitExclusion : FailedUnitRequirement + { + private string unitList; + private UnitType type; + + public UnitExclusion(UnitRequirement req, UnitType unitType, UnitType[] excludingTypes) : base(req) + { + type = unitType; + + if (excludingTypes.Length > 1) + { + StringBuilder sb = new StringBuilder(excludingTypes[0].Name); + + for (int i = 1; i<excludingTypes.Length; i++) + { + sb.Append(", "+excludingTypes[i].Name); + } + + unitList = sb.ToString(); + } + else + { + unitList = excludingTypes[0].Name; + } + } + + public override string Description + { + get { return "The army cannot have any of the following units to include a unit of type "+type.Name+": "+unitList; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitMaxNumberReached.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,25 @@ +using System; +using IBBoard; +using IBBoard.Lang; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitMaxNumberRequirement. + /// </summary> + public class UnitMaxNumberReached : FailedUnitRequirement + { + private UnitType type; + + public UnitMaxNumberReached(UnitType unitType, UnitRequirementMaxNumber requirement) : base(requirement) + { + type = unitType; + } + + public override string Description + { + get { return String.Format(Translation.GetTranslation("ErrorUnitMaxNumberReached", "The maximum number of units of type \"{0}\" has already been reached or exceeded."), type.Name); } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitMinNumberReached.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,23 @@ +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitMaxNumberRequirement. + /// </summary> + public class UnitMinNumberReached : FailedUnitRequirement + { + private UnitType type; + + public UnitMinNumberReached(UnitType unitType, UnitRequirementMinNumber requirement) : base(requirement) + { + type = unitType; + } + + public override string Description + { + get { return "The minimum number of units of type "+type.Name+" is not currently met"; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitRequirement. + /// </summary> + public abstract class UnitRequirement : AbstractArmyRequirement + { + protected UnitType unitType; + + protected UnitRequirement(UnitType requirementFor) + { + unitType = requirementFor; + } + + /// <summary> + /// Checks whether the specified unit type can be added to the specified army. Returns a <see cref="FailedRequirement"> obejct if a unit of that type cannot legally be added, or no failure (null) if it can be added. + /// </summary> + /// <param name="army"> + /// The <see cref="Army"/> that the unit should be checked for adding to + /// </param> + /// <param name="type"> + /// The <see cref="UnitType"/> that is being checked. + /// </param> + /// <returns> + /// A <see cref="AbstractFailedRequirement"/> if the requirement means the <see cref="UnitType"/> cannot be legally added, else <code>null</code>. + /// </returns> + protected abstract AbstractFailedRequirement CanAddToArmy(Army army, UnitType type); + + /// <summary> + /// Checks whether the specified unit can be added to the specified army. Returns a <see cref="FailedRequirement"> obejct if the unit cannot legally be added, or no failure (null) if it can be added. + /// </summary> + /// <param name="army"> + /// The <see cref="Army"/> that the unit should be checked for adding to + /// </param> + /// <param name="type"> + /// The <see cref="Unit"/> that is being checked. + /// </param> + /// <returns> + /// A <see cref="AbstractFailedRequirement"/> if the requirement means the <see cref="Unit"/> cannot be legally added, else <code>null</code>. + /// </returns> + protected AbstractFailedRequirement CanAddToArmy(Army army, Unit unit) + { + return CanAddToArmy(army, unit.UnitType); + } + + /// <summary> + /// Checks whether the specified unit type can be removed from the specified army. Returns a <see cref="FailedRequirement"> obejct if a unit of that type cannot legally be removed, or no failure (null) if it can be removed. + /// </summary> + /// <param name="army"> + /// The <see cref="Army"/> that the unit should be checked for adding to + /// </param> + /// <param name="type"> + /// The <see cref="UnitType"/> that is being checked. + /// </param> + /// <returns> + /// A <see cref="AbstractFailedRequirement"/> if the requirement means the <see cref="UnitType"/> cannot be legally added, else <code>null</code>. + /// </returns> + protected abstract AbstractFailedRequirement CanRemoveFromArmy(Army army, UnitType type); + + /// <summary> + /// Checks whether the specified unit can be removed from the specified army. Returns a <see cref="FailedRequirement"> obejct if the unit cannot legally be removed, or no failure (null) if it can be removed. + /// </summary> + /// <param name="army"> + /// The <see cref="Army"/> that the unit should be checked for adding to + /// </param> + /// <param name="type"> + /// The <see cref="Unit"/> that is being checked. + /// </param> + /// <returns> + /// A <see cref="AbstractFailedRequirement"/> if the requirement means the <see cref="Unit"/> cannot be legally removed, else <code>null</code>. + /// </returns> + protected AbstractFailedRequirement CanRemoveFromArmy(Army army, Unit unit) + { + return CanRemoveFromArmy(army, unit.UnitType); + } + + protected override AbstractFailedRequirement CanAddToArmy(Army army) + { + return CanAddToArmy(army, unitType); + } + + protected override AbstractFailedRequirement CanRemoveFromArmy(Army army) + { + return CanRemoveFromArmy(army, unitType); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitRequirementItem.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,32 @@ +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitRequirementItem. + /// </summary> + public class UnitRequirementItem + { + private UnitType type; + private int requiredNum; + + public UnitRequirementItem(UnitType unitType, int reqNumber) + { + type = unitType; + requiredNum = reqNumber; + } + + public UnitRequirementItem(UnitType type) : this(type, 1) { } + + public UnitType UnitType + { + get { return type; } + } + + public int Amount + { + get { return requiredNum; } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitRequirementMaxNumber.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,57 @@ +// UnitRequirementMaxNumber.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + public class UnitRequirementMaxNumber : UnitRequirement + { + private int maxUnitCount; + + public UnitRequirementMaxNumber(UnitType type, int maxNumber) : base(type) + { + maxUnitCount = maxNumber; + } + + public override string Description + { + get { return "You may only include up to "+maxUnitCount+" "+unitType.Name+" units in an army"; } + } + + protected override AbstractFailedRequirement CanAddToArmy (Army army, UnitType type) + { + FailedUnitRequirement failed = null; + + if (army.GetUnitTypeCount(type) >= maxUnitCount) + { + failed = new FailedUnitRequirement(this); + } + + return failed; + } + + protected override AbstractFailedRequirement CanRemoveFromArmy (Army army, UnitType type) + { + return null; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitRequirementMinNumber.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,57 @@ +// UnitRequirementMinNumber.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + public class UnitRequirementMinNumber : UnitRequirement + { + private int minUnitCount; + + public UnitRequirementMinNumber(UnitType type, int minNumber) : base(type) + { + minUnitCount = minNumber; + } + + public override string Description + { + get { return "You must include at least "+minUnitCount+" "+unitType.Name+" units in an army"; } + } + + protected override AbstractFailedRequirement CanAddToArmy(Army army, UnitType type) + { + return null; + } + + protected override AbstractFailedRequirement CanRemoveFromArmy (Army army, UnitType type) + { + FailedUnitRequirement failed = null; + + if (army.GetUnitTypeCount(type) <= minUnitCount) + { + failed = new FailedUnitRequirement(this); + } + + return failed; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Requirements/UnitRequiresAtLeastRequirement.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Text; +using IBBoard.WarFoundry.API; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Requirements +{ + /// <summary> + /// Summary description for UnitRequiresRequirement. + /// </summary> + public class UnitRequiresAtLeastRequirement : UnitRequirement + { + private UnitType[] requiredTypes; + private int[] requiredCounts; + private String unitList; + + public UnitRequiresAtLeastRequirement(UnitType type, UnitType requiredUnitType) : this(type, new UnitType[]{requiredUnitType}, new int[]{1}) + { + } + + public UnitRequiresAtLeastRequirement(UnitType type, UnitType[] requiredUnitTypes, int[] minNumsRequired) : base(type) + { + if (requiredUnitTypes.Length != minNumsRequired.Length) + { + throw new ArgumentException("List of required unit types and list of number of units required must be equal"); + } + else if (requiredUnitTypes.Length == 1) + { + throw new ArgumentException("List of required unit types must not be empty"); + } + + requiredTypes = requiredUnitTypes; + requiredCounts = minNumsRequired; + + if (requiredTypes.Length > 1) + { + StringBuilder sb = new StringBuilder(requiredCounts[0]+" x "+requiredTypes[0].Name); + + for (int i = 1; i<requiredTypes.Length; i++) + { + sb.Append(", "+requiredCounts[i]+" x "+requiredTypes[i].Name); + } + + unitList = sb.ToString(); + } + else + { + unitList = requiredTypes[0].Name; + } + } + + public override string Description + { + get { return "The army must include at least the following units to include a unit of type "+unitType.Name+": "+unitList; } + } + + protected override AbstractFailedRequirement CanRemoveFromArmy(Army army, UnitType type) + { + return null; + } + + protected override AbstractFailedRequirement CanAddToArmy(Army army, UnitType type) + { + FailedRequirement failure = null; + int count = requiredTypes.Length; + + for (int i = 0; i < count; i++) + { + if (army.GetUnitTypeCount(requiredTypes[i]) < requiredCounts[i]) + { + failure = new FailedRequirement(this); + break; + } + } + + return failure; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Savers/IWarFoundryFileSaver.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,42 @@ +// IWarFoundryFileSaver.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Savers +{ + public interface IWarFoundryFileSaver + { + /// <summary> + /// Saves an <see cref="Army"/> to a file on disk. + /// </summary> + /// <param name="army"> + /// The <see cref="Army"/> to save + /// </param> + /// <param name="path"> + /// The path to save the army to + /// </param> + /// <returns> + /// TRUE if saving succedes, else FALSE + /// </returns> + bool Save(Army army, string path); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/Savers/WarFoundrySaver.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,39 @@ +// WarFoundrySaver.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; + +namespace IBBoard.WarFoundry.API.Savers +{ + public class WarFoundrySaver + { + private static IWarFoundryFileSaver fileSaver; + + public static IWarFoundryFileSaver GetSaver() + { + return fileSaver; + } + + public static void SetFileSaver(IWarFoundryFileSaver newFileSaver) + { + fileSaver = newFileSaver; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/WarFoundryCore.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,103 @@ +// WarFoundry.cs +// +// Copyright (C) 2008 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using IBBoard.Logging; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API +{ + public class WarFoundryCore + { + public static event GameSystemChangedDelegate GameSystemChanged; + public static event ArmyChangedDelegate ArmyChanged; + + private static GameSystem system; + private static Army currentArmy; + + public static GameSystem CurrentGameSystem + { + get { return system; } + set + { + if (system==null || !system.Equals(value)) + { + GameSystem oldSystem = system; + system = value; + + if (system==null) + { + LogNotifier.Debug(typeof(WarFoundryCore), "Game system set to null"); + } + else + { + LogNotifier.DebugFormat(typeof(WarFoundryCore), "Game system set to {0} with ID {1}", system.Name, system.ID); + } + + if (GameSystemChanged!=null) + { + GameSystemChanged(oldSystem, system); + } + + //If we've changed the game system then we can't keep the current army + CurrentArmy = null; + } + } + } + + public static Army CurrentArmy + { + get { return currentArmy; } + set + { + if (currentArmy==null || !currentArmy.Equals(value)) + { + /*if (currentArmy!=null) + { + currentArmy.UnitAdded-= UnitAddedMethod; + currentArmy.UnitRemoved-= UnitRemovedMethod; + currentArmy.PointsValueChanged-= PointsValueChangedMethod; + currentArmy.FailedRequirement-=FailedUnitRequirementMethod; + }*/ + Army oldArmy = currentArmy; + currentArmy = value; + + if (currentArmy!=null) + { + CurrentGameSystem = currentArmy.GameSystem; //Set the game system in case the new army is from a different system + } + + /*if (currentArmy!=null) + { + currentArmy.UnitAdded+= UnitAddedMethod; + currentArmy.UnitRemoved+= UnitRemovedMethod; + currentArmy.PointsValueChanged+= PointsValueChangedMethod; + currentArmy.FailedRequirement+=FailedUnitRequirementMethod; + }*/ + + if (ArmyChanged!=null) + { + ArmyChanged(oldArmy, currentArmy); + } + } + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/WarFoundryLoader.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,664 @@ +// WarFoundryLoader.cs +// +// Copyright (C) 2007 IBBoard +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License version 2.1 of the License as published by the Free +// Software Foundation. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +using System; +using System.Collections.Generic; +using System.IO; +using IBBoard.Collections; +using IBBoard.IO; +using IBBoard.Logging; +using IBBoard.WarFoundry.API.Factories; +using IBBoard.WarFoundry.API.Objects; +using ICSharpCode.SharpZipLib.Zip; + +namespace IBBoard.WarFoundry.API +{ + public class WarFoundryLoader + { + private static WarFoundryLoader loader; + + /// <summary> + /// Gets the default <see cref="WarFoundryLoader"/> used to load WarFoundry data files. + /// </summary> + /// <returns> + /// The default <see cref="WarFoundryLoader"/> + /// </returns> + public static WarFoundryLoader GetDefault() + { + if (loader == null) + { + loader = new WarFoundryLoader(); + } + + return loader; + } + + private ICollection<DirectoryInfo> directories; + private ICollection<INativeWarFoundryFactory> factories; + private ICollection<INonNativeWarFoundryFactory> nonNativeFactories; + private Dictionary<string, GameSystem> systemsTable; + private Dictionary<string, Dictionary<string, Dictionary<string, Race>>> racesTable; //Keys are: System, Race, SubRace + private Dictionary<IWarFoundryFactory, SimpleSet<IWarFoundryObject>> loadedObjects; + + protected WarFoundryLoader() + { + directories = new List<DirectoryInfo>(); + factories = new List<INativeWarFoundryFactory>(); + nonNativeFactories = new List<INonNativeWarFoundryFactory>(); + loadedObjects = new Dictionary<IWarFoundryFactory,SimpleSet<IWarFoundryObject>>(); + } + + /// <summary> + /// Adds a directory to the collection of directories that will be searched for WarFoundry data files. + /// </summary> + /// <param name="directory"> + /// The <see cref="DirectoryInfo"/> to add to the list for searching for data files + /// </param> + public void AddLoadDirectory(DirectoryInfo directory) + { + if (!directories.Contains(directory)) + { + directories.Add(directory); + } + } + + /// <summary> + /// Removes a directory from the collection of directories that will be searched for WarFoundry data files. + /// </summary> + /// <param name="directory"> + /// A <see cref="DirectoryInfo"/> + /// </param> + public void RemoveLoadDirectory(DirectoryInfo directory) + { + if (directories.Contains(directory)) + { + directories.Remove(directory); + } + } + + /// <summary> + /// Registers a <see cref="INativeWarFoundryFactory"/> as a factory that can parse native data files. + /// </summary> + /// <param name="factory"> + /// The <see cref="INativeWarFoundryFactory"/> to register to parse native data files. + /// </param> + public void RegisterFactory(INativeWarFoundryFactory factory) + { + if (!factories.Contains(factory)) + { + factories.Add(factory); + } + } + + /// <summary> + /// Unregisters a <see cref="INativeWarFoundryFactory"/> so that it will no longer be used to try to parse native data files. + /// </summary> + /// <param name="factory"> + /// The <see cref="INativeWarFoundryFactory"/> to remove from the collection of factories that are used to try to parse native data files. + /// </param> + public void UnregisterFactory(INativeWarFoundryFactory factory) + { + if (factories.Contains(factory)) + { + factories.Remove(factory); + } + } + + /// <summary> + /// Registers a <see cref="INonNativeWarFoundryFactory"/> so that it will be used to try to parse non-native data files from other applications. + /// </summary> + /// <param name="factory"> + /// The <see cref="INonNativeWarFoundryFactory"/> to register to parse non-native data files. + /// </param> + public void RegisterNonNativeFactory(INonNativeWarFoundryFactory factory) + { + if (!nonNativeFactories.Contains(factory)) + { + nonNativeFactories.Add(factory); + } + } + + /// <summary> + /// Unregisters a <see cref="INonNativeWarFoundryFactory"/> so that it will no longer be used to try to parse non-native data files from other applications. + /// </summary> + /// <param name="factory"> + /// The <see cref="INonNativeWarFoundryFactory"/> to remove from the collection of factories that are used to try to parse non-native data files. + /// </param> + public void UnregisterNonNativeFactory(INonNativeWarFoundryFactory factory) + { + if (nonNativeFactories.Contains(factory)) + { + nonNativeFactories.Remove(factory); + } + } + + /// <summary> + /// Loads all of the data files in the registered directories. + /// </summary> + public void LoadFiles() + { + LogNotifier.Debug(GetType(), "Load files"); + PrepareForFileLoad(); + + foreach (DirectoryInfo directory in directories) + { + LogNotifier.Debug(GetType(), "Load from "+directory.FullName); + + foreach (FileInfo file in directory.GetFiles()) + { + LoadFile(file); + } + } + + ICollection<Race> races = new List<Race>(); + + foreach (SimpleSet<IWarFoundryObject> objs in loadedObjects.Values) + { + foreach (IWarFoundryObject obj in objs) + { + if (obj is Race) + { + races.Add((Race)obj); + } + else if (obj is GameSystem) + { + StoreGameSystem((GameSystem)obj); + } + } + } + + foreach (Race race in races) + { + StoreRace(race); + } + } + + protected void PrepareForFileLoad() + { + //Just set up blank dictionaries for now - may try different and more complex handling in future + systemsTable = new Dictionary<string,GameSystem>(); + racesTable = new Dictionary<string,Dictionary<string,Dictionary<string,Race>>>(); + } + + /// <summary> + /// Loads a single file through the registered WarFoundryFactories, if a factory exists that supports the file format. + /// </summary> + /// <param name="file"> + /// A <see cref="FileInfo"/> for the file to attempt to load + /// </param> + protected void LoadFile(FileInfo file) + { + bool handled = false; + + if (!handled) + { + ICollection<IWarFoundryObject> objs = null; + IWarFoundryFactory loadFactory = null; + + if (nonNativeFactories.Count > 0) + { + LogNotifier.Debug(GetType(), "Attempting to load "+file.FullName+" as a non-native file"); + + foreach (INonNativeWarFoundryFactory factory in nonNativeFactories) + { + LogNotifier.Debug(GetType(), "Load using "+factory.GetType().AssemblyQualifiedName+"? " + (factory.CanHandleFileFormat(file) ? "yes" : "no")); + + if (factory.CanHandleFileFormat(file)) + { + objs = factory.CreateObjectsFromFile(file); + + if (objs!=null) + { + loadFactory = factory; + break; + } + } + } + } + + if (objs == null) + { + LogNotifier.Debug(GetType(), "Attempting to load "+file.FullName+" as native file"); + + foreach (INativeWarFoundryFactory factory in factories) + { + if (factory.CanHandleFileFormat(file)) + { + objs = factory.CreateObjectsFromFile(file); + + if (objs!=null) + { + loadFactory = factory; + break; + } + } + } + } + + if (objs!=null) + { + AddLoadedObjects(objs, loadFactory); + } + } + } + + private void AddLoadedObjects(ICollection<IWarFoundryObject> loadedObjs, IWarFoundryFactory factory) + { + SimpleSet<IWarFoundryObject> objs; + loadedObjects.TryGetValue(factory, out objs); + + if (objs == null) + { + objs = new SimpleSet<IWarFoundryObject>(); + loadedObjects.Add(factory, objs); + } + + objs.AddRange(loadedObjs); + } + + private void AddLoadedObject(IWarFoundryObject obj, IWarFoundryFactory factory) + { + SimpleSet<IWarFoundryObject> objs; + loadedObjects.TryGetValue(factory, out objs); + + if (objs == null) + { + objs = new SimpleSet<IWarFoundryObject>(); + loadedObjects.Add(factory, objs); + } + + objs.Add(obj); + } + + protected virtual ZipFile MakeZipFile(FileInfo file) + { + return new ZipFile(file.FullName); + } + + protected void StoreGameSystem(GameSystem system) + { + string sysid = system.ID.ToLower(); + + if (systemsTable.ContainsKey(sysid)) + { + LogNotifier.WarnFormat(GetType(), "System {0} ({1}) has already been loaded. Duplicate file ({3}) discarded", system.Name, system.ID, system.SourceFile.FullName); + } + else + { + systemsTable.Add(sysid, (GameSystem)system); + } + } + + + /// <summary> + /// Stores a loaded <see cref="GameSystem"/> that has been generated outside the core loading structure. + /// + /// Note: Calls to this function should be made before calls to StoreRace(Race, IWarFoundryFactory). + /// </summary> + /// <param name="system"> + /// The <see cref="GameSystem"/> to register as loaded. + /// </param> + /// <param name="factory"> + /// The <see cref="IWarFoundryFactory"/> that created it. + /// </param> + public void StoreGameSystem(GameSystem system, IWarFoundryFactory factory) + { + AddLoadedObject(system, factory); + StoreGameSystem(system); + } + + protected void StoreRace(Race race) + { + Dictionary<string, Dictionary<string, Race>> systemRaces; + + if (race.GameSystem == null) + { + throw new InvalidOperationException("Race cannot have null game system. Game system should be loaded before race."); + } + + string systemID = race.GameSystem.ID.ToLower(); + racesTable.TryGetValue(systemID, out systemRaces); + + if (systemRaces==null) + { + systemRaces = new Dictionary<string,Dictionary<string,Race>>(); + racesTable.Add(systemID, systemRaces); + } + + Dictionary<string, Race> subRaces; + systemRaces.TryGetValue(race.ID.ToLower(), out subRaces); + + if (subRaces==null) + { + subRaces = new Dictionary<string,Race>(); + systemRaces.Add(race.ID.ToLower(), subRaces); + } + + if (subRaces.ContainsKey(race.SubID.ToLower())) + { + LogNotifier.WarnFormat(GetType(), "Race {0} ({1} - {2}) for system {3} ({4}) has already been loaded. Duplicate file ({5}) discarded", race.Name, race.ID, race.SubID, race.GameSystem.ID, race.GameSystem.Name, race.SourceFile.Name); + race = null; + } + else + { + subRaces.Add(race.SubID.ToLower(), race); + } + } + + /// <summary> + /// Stores a loaded <see cref="Race"/> that has been generated outside the core loading structure. + /// + /// Note: Calls to this function should ensure that the relevant <see cref="GameSystem"> has been created first. + /// </summary> + /// <param name="race"> + /// The <see cref="Race"/> to register as loaded. + /// </param> + /// <param name="factory"> + /// The <see cref="IWarFoundryFactory"/> that created it + /// </param> + public void StoreRace(Race race, IWarFoundryFactory factory) + { + AddLoadedObject(race, factory); + StoreRace(race); + } + + /// <summary> + /// Gets all <see cref="GameSystem"/>s that are currently available, determined by those that can be loaded with the current <see cref="IWarFoundryFactory"/>s. + /// </summary> + /// <returns> + /// An array of <see cref="GameSystem"/>s that are currently available. + /// </returns> + public GameSystem[] GetGameSystems() + { + if (systemsTable==null) + { + LoadFiles(); + } + + GameSystem[] systems = new GameSystem[systemsTable.Count]; + int iSys = 0; + + foreach (GameSystem sys in systemsTable.Values) + { + systems[iSys++] = sys; + } + + return systems; + } + + /// <summary> + /// Gets a single <see cref="GameSystem"/> with a given ID. + /// </summary> + /// <param name="systemID"> + /// The ID of the <see cref="GameSystem"/> to get, as a <see cref="System.String"/>. + /// </param> + /// <returns> + /// The <see cref="GameSystem"/> with the given ID, or <code>null</code> if one doesn't exist. + /// </returns> + public GameSystem GetGameSystem(string systemID) + { + if (systemsTable==null) + { + LoadFiles(); + } + + GameSystem system; + systemsTable.TryGetValue(systemID.ToLower(), out system); + return system; + } + + /// <summary> + /// Gets an array of the races for the specified <see cref="GameSystem"/>. + /// </summary> + /// <param name="system"> + /// The <see cref="GameSystem"/> to get the available races for. + /// </param> + /// <returns> + /// An array of <see cref="Race"/>s for the <see cref="GameSystem"/> + /// </returns> + public Race[] GetRaces(GameSystem system) + { + return GetRaces(system.ID); + } + + /// <summary> + /// Gets an array of the races for a game system by ID. + /// </summary> + /// <param name="systemID"> + /// The <see cref="System.String"/> ID of the game system to get races for + /// </param> + /// <returns> + /// An array of <see cref="Race"/>s for the specified game system + /// </returns> + public Race[] GetRaces(string systemID) + { + if (racesTable==null) + { + LoadFiles(); + } + + systemID = systemID.ToLower(); + + foreach (string key in racesTable.Keys) + { + Console.WriteLine(key); + } + + Dictionary<string, Dictionary<string, Race>> system; + racesTable.TryGetValue(systemID, out system); + + if (system==null) + { + return new Race[0]; + } + + int count = 0; + + foreach (Dictionary<string, Race> racesDict in system.Values) + { + count+= racesDict.Count; + } + + Race[] races = new Race[count]; + int i = 0; + + foreach (string raceID in system.Keys) + { + foreach (string raceSubId in system[raceID].Keys) + { + races[i++] = GetRace(systemID, raceID, raceSubId); + } + } + + return races; + } + + /// <summary> + /// Gets a single race for a given <see cref="GameSystem"/> by ID of the race. + /// </summary> + /// <param name="system"> + /// The <see cref="GameSystem"/> that the race is part of. + /// </param> + /// <param name="raceID"> + /// A <see cref="System.String"/> ID for the race to load. + /// </param> + /// <returns> + /// A <see cref="Race"/> with the specified ID from the <see cref="GameSystem"/>, or <code>null</code> if one doesn't exist. + /// </returns> + public Race GetRace(GameSystem system, string raceID) + { + return GetRace(system.ID, raceID); + } + + /// <summary> + /// Gets a single race for a given game system by ID of the game system and race. + /// </summary> + /// <param name="systemID"> + /// The <see cref="System.String"/> ID of the game system that the race is part of. + /// </param> + /// <param name="raceID"> + /// The <see cref="System.String"/> ID for the race to load. + /// </param> + /// <returns> + /// A <see cref="Race"/> with the specified ID from the game system with the specified ID, or <code>null</code> if there is no race or game system with those IDs. + /// </returns> + public Race GetRace(string systemID, string raceID) + { + return GetRace(systemID, raceID, ""); + } + + /// <summary> + /// Gets a single race for a given <see cref="GameSystem"/> by the race's ID and sub-race ID. + /// </summary> + /// <param name="system"> + /// The <see cref="GameSystem"/> that the race is part of. + /// </param> + /// <param name="raceID"> + /// The <see cref="System.String"/> ID for the race to load. + /// </param> + /// <param name="raceSubID"> + /// A <see cref="System.String"/> + /// </param> + /// <returns> + /// A <see cref="Race"/> + /// </returns> + public Race GetRace(GameSystem system, string raceID, string raceSubID) + { + return GetRace(system.ID, raceID, raceSubID); + } + + /// <summary> + /// Gets a single race for a given game system by the game system's ID and the race's ID and sub-race ID. + /// </summary> + /// <param name="systemID"> + /// The <see cref="System.String"/> ID of the game system that the race is part of. + /// </param> + /// <param name="raceID"> + /// The <see cref="System.String"/> ID for the race to load. + /// </param> + /// <param name="raceSubID"> + /// A <see cref="System.String"/> + /// </param> + /// <returns> + /// A <see cref="Race"/> + /// </returns> + public Race GetRace(string systemID, string raceID, string raceSubID) + { + if (racesTable==null) + { + LoadFiles(); + } + + Race race = null; + + systemID = systemID.ToLower(); + + Dictionary<string, Dictionary<string, Race>> races; + racesTable.TryGetValue(systemID, out races); + + if (races!=null) + { + Dictionary<string, Race> subraces; + races.TryGetValue(raceID, out subraces); + + if (subraces!=null) + { + subraces.TryGetValue(raceSubID, out race); + } + } + + return race; + } + + /// <summary> + /// Gets the IDs of all of the game systems currently available. + /// </summary> + /// <returns> + /// An array of <see cref="System.String"/>s representing the IDs of the game systems. + /// </returns> + public string[] GetGameSystemIDs() + { + if (systemsTable==null) + { + LoadFiles(); + } + + string[] keys = new string[systemsTable.Keys.Count]; + int i = 0; + + foreach (string key in systemsTable.Keys) + { + keys[i++] = key; + } + + return keys; + } + + /// <summary> + /// Gets the IDs of all of the races of a specified game system. + /// </summary> + /// <param name="system"> + /// The <see cref="GameSystem"/> to get the available races for. + /// </param> + /// <returns> + /// An array of <see cref="System.String"/>s representing the IDs of the races of the specified game system. + /// </returns> + public string[] GetSystemRaceIDs(GameSystem system) + { + return GetSystemRaceIDs(system.ID); + } + + /// <summary> + /// Gets the IDs of all of the races of a specified game system. + /// </summary> + /// <param name="systemID"> + /// The <see cref="System.String"/> ID of the game system to get the available races for. + /// </param> + /// <returns> + /// An array of <see cref="System.String"/>s representing the IDs of the races of the specified game system. + /// </returns> + public string[] GetSystemRaceIDs(string systemID) + { + if (racesTable == null) + { + LoadFiles(); + } + + Dictionary<string, Dictionary<string, Race>> races = racesTable[systemID.ToLower()]; + + if (races==null) + { + return new string[0]; + } + else + { + string[] keys = new string[races.Keys.Count]; + int i = 0; + + foreach (string key in races.Keys) + { + keys[i++] = key; + } + + return keys; + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libs/log4net.xml Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,27658 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>log4net</name> + </assembly> + <members> + <member name="T:log4net.Appender.AdoNetAppender"> + <summary> + Appender that logs to a database. + </summary> + <remarks> + <para> + <see cref="T:log4net.Appender.AdoNetAppender"/> appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionString"/> property. + The connection type (provider) can be specified by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> + property. For more information on database connection strings for + your specific database see <a href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a>. + </para> + <para> + Records are written into the database either using a prepared + statement or a stored procedure. The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property + is set to <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement + or to <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored + procedure. + </para> + <para> + The prepared statement text or the name of the stored procedure + must be set in the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property. + </para> + <para> + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the <see cref="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)"/> + method. This adds a single <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> to the + ordered list of parameters. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> + type may be subclassed if required to provide database specific + functionality. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> specifies + the parameter name, database type, size, and how the value should + be generated using a <see cref="T:log4net.Layout.ILayout"/>. + </para> + </remarks> + <example> + An example of a SQL Server table that could be logged to: + <code lang="SQL"> + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + </code> + </example> + <example> + An example configuration to log to the above table: + <code lang="XML" escaped="true"> + <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender"> + <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> + <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa"/> + <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/> + <parameter> + <parameterName value="@log_date"/> + <dbType value="DateTime"/> + <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/> + </parameter> + <parameter> + <parameterName value="@thread"/> + <dbType value="String"/> + <size value="255"/> + <layout type="log4net.Layout.PatternLayout" value="%thread"/> + </parameter> + <parameter> + <parameterName value="@log_level"/> + <dbType value="String"/> + <size value="50"/> + <layout type="log4net.Layout.PatternLayout" value="%level"/> + </parameter> + <parameter> + <parameterName value="@logger"/> + <dbType value="String"/> + <size value="255"/> + <layout type="log4net.Layout.PatternLayout" value="%logger"/> + </parameter> + <parameter> + <parameterName value="@message"/> + <dbType value="String"/> + <size value="4000"/> + <layout type="log4net.Layout.PatternLayout" value="%message"/> + </parameter> + </appender> + </code> + </example> + <author>Julian Biddle</author> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Lance Nehring</author> + </member> + <member name="T:log4net.Appender.BufferingAppenderSkeleton"> + <summary> + Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/> that + buffers events in a fixed size buffer. + </summary> + <remarks> + <para> + This base class should be used by appenders that need to buffer a + number of events before logging them. For example the <see cref="T:log4net.Appender.AdoNetAppender"/> + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + </para> + <para> + Subclasses should override the <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/> + method to deliver the buffered events. + </para> + <para>The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> property. + </para> + <para>A <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> is used to inspect + each event as it arrives in the appender. If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> + triggers, then the current buffer is sent immediately + (see <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + </para> + <para> + The buffering appender can be configured in a <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>. + If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property is set to <c>true</c> then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Appender.AppenderSkeleton"> + <summary> + Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/>. + </summary> + <remarks> + <para> + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + </para> + <para> + Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore + they would require that the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method + be called after the appenders properties have been configured. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Appender.IAppender"> + <summary> + Implement this interface for your own strategies for printing log statements. + </summary> + <remarks> + <para> + Implementors should consider extending the <see cref="T:log4net.Appender.AppenderSkeleton"/> + class which provides a default implementation of this interface. + </para> + <para> + Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore + they would require that the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method + be called after the appenders properties have been configured. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Appender.IAppender.Close"> + <summary> + Closes the appender and releases resources. + </summary> + <remarks> + <para> + Releases any resources allocated within the appender such as file handles, + network connections, etc. + </para> + <para> + It is a programming error to append to a closed appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"> + <summary> + Log the logging event in Appender specific way. + </summary> + <param name="loggingEvent">The event to log</param> + <remarks> + <para> + This method is called to log a message into this appender. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.IAppender.Name"> + <summary> + Gets or sets the name of this appender. + </summary> + <value>The name of the appender.</value> + <remarks> + <para>The name uniquely identifies the appender.</para> + </remarks> + </member> + <member name="T:log4net.Appender.IBulkAppender"> + <summary> + Interface for appenders that support bulk logging. + </summary> + <remarks> + <para> + This interface extends the <see cref="T:log4net.Appender.IAppender"/> interface to + support bulk logging of <see cref="T:log4net.Core.LoggingEvent"/> objects. Appenders + should only implement this interface if they can bulk log efficiently. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])"> + <summary> + Log the array of logging events in Appender specific way. + </summary> + <param name="loggingEvents">The events to log</param> + <remarks> + <para> + This method is called to log an array of events into this appender. + </para> + </remarks> + </member> + <member name="T:log4net.Core.IOptionHandler"> + <summary> + Interface used to delay activate a configured object. + </summary> + <remarks> + <para> + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + </para> + <para> + If a component implements this interface then the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method + must be called by the container after its all the configured properties have been set + and before the component can be used. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Core.IOptionHandler.ActivateOptions"> + <summary> + Activate the options that were previously set with calls to properties. + </summary> + <remarks> + <para> + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + </para> + <para> + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferSize"> + <summary> + Initial buffer size + </summary> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity"> + <summary> + Maximum buffer size before it is recycled + </summary> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para>Empty default constructor</para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.Finalize"> + <summary> + Finalizes this appender by calling the implementation's + <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> method. + </summary> + <remarks> + <para> + If this appender has not been closed then the <c>Finalize</c> method + will call <see cref="M:log4net.Appender.AppenderSkeleton.Close"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.ActivateOptions"> + <summary> + Initialize the appender based on the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.Close"> + <summary> + Closes the appender and release resources. + </summary> + <remarks> + <para> + Release any resources allocated within the appender such as file handles, + network connections, etc. + </para> + <para> + It is a programming error to append to a closed appender. + </para> + <para> + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the <see cref="M:log4net.Appender.AppenderSkeleton.OnClose"/> + method which must be overridden in the subclass. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"> + <summary> + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + This method cannot be overridden by derived classes. A + derived class should override the <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> method + which is called by this method. + </para> + <para> + The implementation of this method is as follows: + </para> + <para> + <list type="bullet"> + <item> + <description> + Checks that the severity of the <paramref name="loggingEvent"/> + is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this + appender.</description> + </item> + <item> + <description> + Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the + <paramref name="loggingEvent"/>. + </description> + </item> + <item> + <description> + Calls <see cref="M:log4net.Appender.AppenderSkeleton.PreAppendCheck"/> and checks that + it returns <c>true</c>.</description> + </item> + </list> + </para> + <para> + If all of the above steps succeed then the <paramref name="loggingEvent"/> + will be passed to the abstract <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> method. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])"> + <summary> + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])"/> method. + </summary> + <param name="loggingEvents">The array of events to log.</param> + <remarks> + <para> + This method cannot be overridden by derived classes. A + derived class should override the <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])"/> method + which is called by this method. + </para> + <para> + The implementation of this method is as follows: + </para> + <para> + <list type="bullet"> + <item> + <description> + Checks that the severity of the <paramref name="loggingEvent"/> + is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this + appender.</description> + </item> + <item> + <description> + Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the + <paramref name="loggingEvent"/>. + </description> + </item> + <item> + <description> + Calls <see cref="M:log4net.Appender.AppenderSkeleton.PreAppendCheck"/> and checks that + it returns <c>true</c>.</description> + </item> + </list> + </para> + <para> + If all of the above steps succeed then the <paramref name="loggingEvents"/> + will be passed to the <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])"/> method. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)"> + <summary> + Test if the logging event should we output by this appender + </summary> + <param name="loggingEvent">the event to test</param> + <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns> + <remarks> + <para> + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + </para> + <para> + The implementation of this method is as follows: + </para> + <para> + <list type="bullet"> + <item> + <description> + Checks that the severity of the <paramref name="loggingEvent"/> + is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this + appender.</description> + </item> + <item> + <description> + Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the + <paramref name="loggingEvent"/>. + </description> + </item> + </list> + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)"> + <summary> + Adds a filter to the end of the filter chain. + </summary> + <param name="filter">the filter to add to this appender</param> + <remarks> + <para> + The Filters are organized in a linked list. + </para> + <para> + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.ClearFilters"> + <summary> + Clears the filter list for this appender. + </summary> + <remarks> + <para> + Clears the filter list for this appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)"> + <summary> + Checks if the message level is below this appender's threshold. + </summary> + <param name="level"><see cref="T:log4net.Core.Level"/> to test against.</param> + <remarks> + <para> + If there is no threshold set, then the return value is always <c>true</c>. + </para> + </remarks> + <returns> + <c>true</c> if the <paramref name="level"/> meets the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> + requirements of this appender. + </returns> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.OnClose"> + <summary> + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + </summary> + <remarks> + <para> + Releases any resources allocated within the appender such as file handles, + network connections, etc. + </para> + <para> + It is a programming error to append to a closed appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"> + <summary> + Subclasses of <see cref="T:log4net.Appender.AppenderSkeleton"/> should implement this method + to perform actual logging. + </summary> + <param name="loggingEvent">The event to append.</param> + <remarks> + <para> + A subclass must implement this method to perform + logging of the <paramref name="loggingEvent"/>. + </para> + <para>This method will be called by <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> + if all the conditions listed for that method are met. + </para> + <para> + To restrict the logging of events in the appender + override the <see cref="M:log4net.Appender.AppenderSkeleton.PreAppendCheck"/> method. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])"> + <summary> + Append a bulk array of logging events. + </summary> + <param name="loggingEvents">the array of logging events</param> + <remarks> + <para> + This base class implementation calls the <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> + method for each element in the bulk array. + </para> + <para> + A sub class that can better process a bulk array of events should + override this method in addition to <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.PreAppendCheck"> + <summary> + Called before <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> as a precondition. + </summary> + <remarks> + <para> + This method is called by <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> + before the call to the abstract <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> method. + </para> + <para> + This method can be overridden in a subclass to extend the checks + made before the event is passed to the <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> method. + </para> + <para> + A subclass should ensure that they delegate this call to + this base class if it is overridden. + </para> + </remarks> + <returns><c>true</c> if the call to <see cref="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)"/> should proceed.</returns> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)"> + <summary> + Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string. + </summary> + <param name="loggingEvent">The event to render.</param> + <returns>The event rendered as a string.</returns> + <remarks> + <para> + Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to + a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> + set to render the <paramref name="loggingEvent"/> to + a string. + </para> + <para>If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + </para> + <para> + Where possible use the alternative version of this method + <see cref="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)"/>. + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a <see cref="T:System.IO.TextWriter"/> open and ready for writing. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string. + </summary> + <param name="loggingEvent">The event to render.</param> + <param name="writer">The TextWriter to write the formatted event to</param> + <remarks> + <para> + Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to + a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> + set to render the <paramref name="loggingEvent"/> to + a string. + </para> + <para>If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + </para> + <para> + Use this method in preference to <see cref="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)"/> + where possible. If, however, the caller needs to render the event + to a string then <see cref="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)"/> does + provide an efficient mechanism for doing so. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_layout"> + <summary> + The layout of this appender. + </summary> + <remarks> + See <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> for more information. + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_name"> + <summary> + The name of this appender. + </summary> + <remarks> + See <see cref="P:log4net.Appender.AppenderSkeleton.Name"/> for more information. + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_threshold"> + <summary> + The level threshold of this appender. + </summary> + <remarks> + <para> + There is no level threshold filtering by default. + </para> + <para> + See <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> for more information. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_errorHandler"> + <summary> + It is assumed and enforced that errorHandler is never null. + </summary> + <remarks> + <para> + It is assumed and enforced that errorHandler is never null. + </para> + <para> + See <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> for more information. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_headFilter"> + <summary> + The first filter in the filter chain. + </summary> + <remarks> + <para> + Set to <c>null</c> initially. + </para> + <para> + See <see cref="T:log4net.Filter.IFilter"/> for more information. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_tailFilter"> + <summary> + The last filter in the filter chain. + </summary> + <remarks> + See <see cref="T:log4net.Filter.IFilter"/> for more information. + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_closed"> + <summary> + Flag indicating if this appender is closed. + </summary> + <remarks> + See <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> for more information. + </remarks> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_recursiveGuard"> + <summary> + The guard prevents an appender from repeatedly calling its own DoAppend method + </summary> + </member> + <member name="F:log4net.Appender.AppenderSkeleton.m_renderWriter"> + <summary> + StringWriter used to render events + </summary> + </member> + <member name="P:log4net.Appender.AppenderSkeleton.Threshold"> + <summary> + Gets or sets the threshold <see cref="T:log4net.Core.Level"/> of this appender. + </summary> + <value> + The threshold <see cref="T:log4net.Core.Level"/> of the appender. + </value> + <remarks> + <para> + All log events with lower level than the threshold level are ignored + by the appender. + </para> + <para> + In configuration files this option is specified by setting the + value of the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> option to a level + string, such as "DEBUG", "INFO" and so on. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AppenderSkeleton.ErrorHandler"> + <summary> + Gets or sets the <see cref="T:log4net.Core.IErrorHandler"/> for this appender. + </summary> + <value>The <see cref="T:log4net.Core.IErrorHandler"/> of the appender</value> + <remarks> + <para> + The <see cref="T:log4net.Appender.AppenderSkeleton"/> provides a default + implementation for the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> property. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AppenderSkeleton.FilterHead"> + <summary> + The filter chain. + </summary> + <value>The head of the filter chain filter chain.</value> + <remarks> + <para> + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AppenderSkeleton.Layout"> + <summary> + Gets or sets the <see cref="T:log4net.Layout.ILayout"/> for this appender. + </summary> + <value>The layout of the appender.</value> + <remarks> + <para> + See <see cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/> for more information. + </para> + </remarks> + <seealso cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/> + </member> + <member name="P:log4net.Appender.AppenderSkeleton.Name"> + <summary> + Gets or sets the name of this appender. + </summary> + <value>The name of the appender.</value> + <remarks> + <para> + The name uniquely identifies the appender. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AppenderSkeleton.RequiresLayout"> + <summary> + Tests if this appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set. + </summary> + <remarks> + <para> + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return <c>true</c>. + </para> + <para> + This default implementation always returns <c>true</c>. + </para> + </remarks> + <returns> + <c>true</c> if the appender requires a layout object, otherwise <c>false</c>. + </returns> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE"> + <summary> + The default buffer size. + </summary> + <remarks> + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class. + </summary> + <remarks> + <para> + Protected default constructor to allow subclassing. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class. + </summary> + <param name="eventMustBeFixed">the events passed through this appender must be + fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param> + <remarks> + <para> + Protected constructor to allow subclassing. + </para> + <para> + The <paramref name="eventMustBeFixed"/> should be set if the subclass + expects the events delivered to be fixed even if the + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to zero, i.e. when no buffering occurs. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush"> + <summary> + Flush the currently buffered events + </summary> + <remarks> + <para> + Flushes any events that have been buffered. + </para> + <para> + If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents + of the buffer will NOT be flushed to the appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)"> + <summary> + Flush the currently buffered events + </summary> + <param name="flushLossyBuffer">set to <c>true</c> to flush the buffer of lossy events</param> + <remarks> + <para> + Flushes events that have been buffered. If <paramref name="flushLossyBuffer"/> is + <c>false</c> then events will only be flushed if this buffer is non-lossy mode. + </para> + <para> + If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents + of the buffer will only be flushed if <paramref name="flushLossyBuffer"/> is <c>true</c>. + In this case the contents of the buffer will be tested against the + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator"/> and if triggering will be output. All other buffered + events will be discarded. + </para> + <para> + If <paramref name="flushLossyBuffer"/> is <c>true</c> then the buffer will always + be emptied by calling this method. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"> + <summary> + Initialize the appender based on the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.OnClose"> + <summary> + Close this appender instance. + </summary> + <remarks> + <para> + Close this appender instance. If this appender is marked + as not <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> then the remaining events in + the buffer must be sent when the appender is closed. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">the event to log</param> + <remarks> + <para> + Stores the <paramref name="loggingEvent"/> in the cyclic buffer. + </para> + <para> + The buffer will be sent (i.e. passed to the <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/> + method) if one of the following conditions is met: + </para> + <list type="bullet"> + <item> + <description>The cyclic buffer is full and this appender is + marked as not lossy (see <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>)</description> + </item> + <item> + <description>An <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> is set and + it is triggered for the <paramref name="loggingEvent"/> + specified.</description> + </item> + </list> + <para> + Before the event is stored in the buffer it is fixed + (see <see cref="M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)"/>) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)"> + <summary> + Sends the contents of the buffer. + </summary> + <param name="firstLoggingEvent">The first logging event.</param> + <param name="buffer">The buffer containing the events that need to be send.</param> + <remarks> + <para> + The subclass must override <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"> + <summary> + Sends the events. + </summary> + <param name="events">The events that need to be send.</param> + <remarks> + <para> + The subclass must override this method to process the buffered events. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize"> + <summary> + The size of the cyclic buffer used to hold the logging events. + </summary> + <remarks> + Set to <see cref="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE"/> by default. + </remarks> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_cb"> + <summary> + The cyclic buffer used to store the logging events. + </summary> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator"> + <summary> + The triggering event evaluator that causes the buffer to be sent immediately. + </summary> + <remarks> + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be <c>null</c>, which + indicates that event triggering is not to be done. The evaluator + can be set using the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> property. If this appender + has the <see cref="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy"/> (<see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property) set to + <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be set. + </remarks> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy"> + <summary> + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + </summary> + <remarks> + If this field is set to <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must + be set. + </remarks> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator"> + <summary> + The triggering event evaluator filters discarded events. + </summary> + <remarks> + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be <c>null</c>, which indicates that all discarded events will + be discarded. + </remarks> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags"> + <summary> + Value indicating which fields in the event should be fixed + </summary> + <remarks> + By default all fields are fixed + </remarks> + </member> + <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed"> + <summary> + The events delivered to the subclass must be fixed. + </summary> + </member> + <member name="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"> + <summary> + Gets or sets a value that indicates whether the appender is lossy. + </summary> + <value> + <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>. + </value> + <remarks> + <para> + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> to <c>false</c> to prevent logging events + from being lost. + </para> + <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para> + </remarks> + </member> + <member name="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"> + <summary> + Gets or sets the size of the cyclic buffer used to hold the + logging events. + </summary> + <value> + The size of the cyclic buffer used to hold the logging events. + </value> + <remarks> + <para> + The <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + </para> + <para> + If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> + and <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> properties). Otherwise the event will + be buffered. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"> + <summary> + Gets or sets the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the + buffer to be sent immediately. + </summary> + <value> + The <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the buffer to be + sent immediately. + </value> + <remarks> + <para> + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>). + </para> + <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para> + </remarks> + </member> + <member name="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator"> + <summary> + Gets or sets the value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use. + </summary> + <value> + The value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use. + </value> + <remarks> + <para> + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/>). + </para> + </remarks> + </member> + <member name="P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData"> + <summary> + Gets or sets a value indicating if only part of the logging event data + should be fixed. + </summary> + <value> + <c>true</c> if the appender should only fix part of the logging event + data, otherwise <c>false</c>. The default is <c>false</c>. + </value> + <remarks> + <para> + Setting this property to <c>true</c> will cause only part of the + event data to be fixed and serialized. This will improve performance. + </para> + <para> + See <see cref="M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)"/> for more information. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.BufferingAppenderSkeleton.Fix"> + <summary> + Gets or sets a the fields that will be fixed in the event + </summary> + <value> + The event fields that will be fixed before the event is buffered + </value> + <remarks> + <para> + The logging event needs to have certain thread specific values + captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/> + for details. + </para> + </remarks> + <seealso cref="P:log4net.Core.LoggingEvent.Fix"/> + </member> + <member name="M:log4net.Appender.AdoNetAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppender"/> class. + </summary> + <remarks> + Public default constructor to initialize a new instance of this class. + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppender.OnClose"> + <summary> + Override the parent method to close the database + </summary> + <remarks> + <para> + Closes the database command and database connection. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])"> + <summary> + Inserts the events into the database. + </summary> + <param name="events">The events to insert into the database.</param> + <remarks> + <para> + Insert all the events specified in the <paramref name="events"/> + array into the database. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)"> + <summary> + Adds a parameter to the command. + </summary> + <param name="parameter">The parameter to add to the command.</param> + <remarks> + <para> + Adds a parameter to the ordered list of command parameters. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])"> + <summary> + Writes the events to the database using the transaction specified. + </summary> + <param name="dbTran">The transaction that the events will be executed under.</param> + <param name="events">The array of events to insert into the database.</param> + <remarks> + <para> + The transaction argument can be <c>null</c> if the appender has been + configured not to use transactions. See <see cref="P:log4net.Appender.AdoNetAppender.UseTransactions"/> + property for more information. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)"> + <summary> + Formats the log message into database statement text. + </summary> + <param name="logEvent">The event being logged.</param> + <remarks> + This method can be overridden by subclasses to provide + more control over the format of the database statement. + </remarks> + <returns> + Text that can be passed to a <see cref="T:System.Data.IDbCommand"/>. + </returns> + </member> + <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection"> + <summary> + Connects to the database. + </summary> + </member> + <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionType"> + <summary> + Retrieves the class type of the ADO.NET provider. + </summary> + <remarks> + <para> + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> property. + </para> + <para> + Subclasses can override this method to return a different type + if necessary. + </para> + </remarks> + <returns>The <see cref="T:System.Type"/> of the ADO.NET provider</returns> + </member> + <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand"> + <summary> + Prepares the database command and initialize the parameters. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_usePreparedCommand"> + <summary> + Flag to indicate if we are using a command object + </summary> + <remarks> + <para> + Set to <c>true</c> when the appender is to use a prepared + statement or stored procedure to insert into the database. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_parameters"> + <summary> + The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects. + </summary> + <remarks> + <para> + The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_securityContext"> + <summary> + The security context to use for privileged calls + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_dbConnection"> + <summary> + The <see cref="T:System.Data.IDbConnection"/> that will be used + to insert logging events into a database. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_dbCommand"> + <summary> + The database command. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_connectionString"> + <summary> + Database connection string. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_connectionType"> + <summary> + String type name of the <see cref="T:System.Data.IDbConnection"/> type name. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_commandText"> + <summary> + The text of the command. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_commandType"> + <summary> + The command type. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_useTransactions"> + <summary> + Indicates whether to use transactions when writing to the database. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppender.m_reconnectOnError"> + <summary> + Indicates whether to use transactions when writing to the database. + </summary> + </member> + <member name="P:log4net.Appender.AdoNetAppender.ConnectionString"> + <summary> + Gets or sets the database connection string that is used to connect to + the database. + </summary> + <value> + The database connection string used to connect to the database. + </value> + <remarks> + <para> + The connections string is specific to the connection type. + See <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> for more information. + </para> + </remarks> + <example>Connection string for MS Access via ODBC: + <code>"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb"</code> + </example> + <example>Another connection string for MS Access via ODBC: + <code>"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;"</code> + </example> + <example>Connection string for MS Access via OLE DB: + <code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;"</code> + </example> + </member> + <member name="P:log4net.Appender.AdoNetAppender.ConnectionType"> + <summary> + Gets or sets the type name of the <see cref="T:System.Data.IDbConnection"/> connection + that should be created. + </summary> + <value> + The type name of the <see cref="T:System.Data.IDbConnection"/> connection. + </value> + <remarks> + <para> + The type name of the ADO.NET provider to use. + </para> + <para> + The default is to use the OLE DB provider. + </para> + </remarks> + <example>Use the OLE DB Provider. This is the default value. + <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code> + </example> + <example>Use the MS SQL Server Provider. + <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code> + </example> + <example>Use the ODBC Provider. + <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code> + This is an optional package that you can download from + <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a> + search for <b>ODBC .NET Data Provider</b>. + </example> + <example>Use the Oracle Provider. + <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code> + This is an optional package that you can download from + <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a> + search for <b>.NET Managed Provider for Oracle</b>. + </example> + </member> + <member name="P:log4net.Appender.AdoNetAppender.CommandText"> + <summary> + Gets or sets the command text that is used to insert logging events + into the database. + </summary> + <value> + The command text used to insert logging events into the database. + </value> + <remarks> + <para> + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + </para> + <para> + The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property determines if + this text is a prepared statement or a stored procedure. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AdoNetAppender.CommandType"> + <summary> + Gets or sets the command type to execute. + </summary> + <value> + The command type to execute. + </value> + <remarks> + <para> + This value may be either <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify + that the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> is a prepared statement to execute, + or <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the + <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property is the name of a stored procedure + to execute. + </para> + <para> + The default value is <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>). + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AdoNetAppender.UseTransactions"> + <summary> + Should transactions be used to insert logging events in the database. + </summary> + <value> + <c>true</c> if transactions should be used to insert logging events in + the database, otherwise <c>false</c>. The default value is <c>true</c>. + </value> + <remarks> + <para> + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + </para> + <para> + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AdoNetAppender.SecurityContext"> + <summary> + Gets or sets the <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method. + </summary> + <value> + The <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method. + </value> + <remarks> + <para> + Unless a <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> specified here for this appender + the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AdoNetAppender.ReconnectOnError"> + <summary> + Should this appender try to reconnect to the database on error. + </summary> + <value> + <c>true</c> if the appender should try to reconnect to the database after an + error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, + i.e. not to try to reconnect. + </value> + <remarks> + <para> + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + </para> + <para> + To force the appender to attempt to reconnect to the database set this + property to <c>true</c>. + </para> + <note> + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + </note> + </remarks> + </member> + <member name="P:log4net.Appender.AdoNetAppender.Connection"> + <summary> + Gets or sets the underlying <see cref="T:System.Data.IDbConnection"/>. + </summary> + <value> + The underlying <see cref="T:System.Data.IDbConnection"/>. + </value> + <remarks> + <see cref="T:log4net.Appender.AdoNetAppender"/> creates a <see cref="T:System.Data.IDbConnection"/> to insert + logging events into a database. Classes deriving from <see cref="T:log4net.Appender.AdoNetAppender"/> + can use this property to get or set this <see cref="T:System.Data.IDbConnection"/>. Use the + underlying <see cref="T:System.Data.IDbConnection"/> returned from <see cref="P:log4net.Appender.AdoNetAppender.Connection"/> if + you require access beyond that which <see cref="T:log4net.Appender.AdoNetAppender"/> provides. + </remarks> + </member> + <member name="T:log4net.Appender.AdoNetAppenderParameter"> + <summary> + Parameter type used by the <see cref="T:log4net.Appender.AdoNetAppender"/>. + </summary> + <remarks> + <para> + This class provides the basic database parameter properties + as defined by the <see cref="T:System.Data.IDbDataParameter"/> interface. + </para> + <para>This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + <see cref="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)"/> and <see cref="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppenderParameter.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> class. + </summary> + <remarks> + Default constructor for the AdoNetAppenderParameter class. + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)"> + <summary> + Prepare the specified database command object. + </summary> + <param name="command">The command to prepare.</param> + <remarks> + <para> + Prepares the database command object by adding + this parameter to its collection of parameters. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)"> + <summary> + Renders the logging event and set the parameter value in the command. + </summary> + <param name="command">The command containing the parameter.</param> + <param name="loggingEvent">The event to be rendered.</param> + <remarks> + <para> + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_parameterName"> + <summary> + The name of this parameter. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_dbType"> + <summary> + The database type for this parameter. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_inferType"> + <summary> + Flag to infer type rather than use the DbType + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_precision"> + <summary> + The precision for this parameter. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_scale"> + <summary> + The scale for this parameter. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_size"> + <summary> + The size for this parameter. + </summary> + </member> + <member name="F:log4net.Appender.AdoNetAppenderParameter.m_layout"> + <summary> + The <see cref="T:log4net.Layout.IRawLayout"/> to use to render the + logging event into an object for this parameter. + </summary> + </member> + <member name="P:log4net.Appender.AdoNetAppenderParameter.ParameterName"> + <summary> + Gets or sets the name of this parameter. + </summary> + <value> + The name of this parameter. + </value> + <remarks> + <para> + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AdoNetAppenderParameter.DbType"> + <summary> + Gets or sets the database type for this parameter. + </summary> + <value> + The database type for this parameter. + </value> + <remarks> + <para> + The database type for this parameter. This property should + be set to the database type from the <see cref="P:log4net.Appender.AdoNetAppenderParameter.DbType"/> + enumeration. See <see cref="P:System.Data.IDataParameter.DbType"/>. + </para> + <para> + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + </para> + </remarks> + <seealso cref="P:System.Data.IDataParameter.DbType"/> + </member> + <member name="P:log4net.Appender.AdoNetAppenderParameter.Precision"> + <summary> + Gets or sets the precision for this parameter. + </summary> + <value> + The precision for this parameter. + </value> + <remarks> + <para> + The maximum number of digits used to represent the Value. + </para> + <para> + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + </para> + </remarks> + <seealso cref="P:System.Data.IDbDataParameter.Precision"/> + </member> + <member name="P:log4net.Appender.AdoNetAppenderParameter.Scale"> + <summary> + Gets or sets the scale for this parameter. + </summary> + <value> + The scale for this parameter. + </value> + <remarks> + <para> + The number of decimal places to which Value is resolved. + </para> + <para> + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + </para> + </remarks> + <seealso cref="P:System.Data.IDbDataParameter.Scale"/> + </member> + <member name="P:log4net.Appender.AdoNetAppenderParameter.Size"> + <summary> + Gets or sets the size for this parameter. + </summary> + <value> + The size for this parameter. + </value> + <remarks> + <para> + The maximum size, in bytes, of the data within the column. + </para> + <para> + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + </para> + </remarks> + <seealso cref="P:System.Data.IDbDataParameter.Size"/> + </member> + <member name="P:log4net.Appender.AdoNetAppenderParameter.Layout"> + <summary> + Gets or sets the <see cref="T:log4net.Layout.IRawLayout"/> to use to + render the logging event into an object for this + parameter. + </summary> + <value> + The <see cref="T:log4net.Layout.IRawLayout"/> used to render the + logging event into an object for this parameter. + </value> + <remarks> + <para> + The <see cref="T:log4net.Layout.IRawLayout"/> that renders the value for this + parameter. + </para> + <para> + The <see cref="T:log4net.Layout.RawLayoutConverter"/> can be used to adapt + any <see cref="T:log4net.Layout.ILayout"/> into a <see cref="T:log4net.Layout.IRawLayout"/> + for use in the property. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.AnsiColorTerminalAppender"> + <summary> + Appends logging events to the terminal using ANSI color escape sequences. + </summary> + <remarks> + <para> + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + </para> + <note> + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + </note> + <para> + By default, all output is written to the console's standard output stream. + The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> property can be set to direct the output to the + error stream. + </para> + <para> + NOTE: This appender writes each message to the <c>System.Console.Out</c> or + <c>System.Console.Error</c> that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + </para> + <para> + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + </para> + <code lang="XML" escaped="true"> + <mapping> + <level value="ERROR"/> + <foreColor value="White"/> + <backColor value="Red"/> + <attributes value="Bright,Underscore"/> + </mapping> + <mapping> + <level value="DEBUG"/> + <backColor value="Green"/> + </mapping> + </code> + <para> + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + <list type="bullet"> + <item><term>Blue</term><description></description></item> + <item><term>Green</term><description></description></item> + <item><term>Red</term><description></description></item> + <item><term>White</term><description></description></item> + <item><term>Yellow</term><description></description></item> + <item><term>Purple</term><description></description></item> + <item><term>Cyan</term><description></description></item> + </list> + These color values cannot be combined together to make new colors. + </para> + <para> + The attributes can be any combination of the following: + <list type="bullet"> + <item><term>Bright</term><description>foreground is brighter</description></item> + <item><term>Dim</term><description>foreground is dimmer</description></item> + <item><term>Underscore</term><description>message is underlined</description></item> + <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item> + <item><term>Reverse</term><description>foreground and background are reversed</description></item> + <item><term>Hidden</term><description>output is hidden</description></item> + <item><term>Strikethrough</term><description>message has a line through it</description></item> + </list> + While any of these attributes may be combined together not all combinations + work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes + no sense. + </para> + </remarks> + <author>Patrick Wagstrom</author> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut"> + <summary> + The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console + standard output stream. + </summary> + <remarks> + <para> + The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console + standard output stream. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError"> + <summary> + The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console + standard error output stream. + </summary> + <remarks> + <para> + The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console + standard error output stream. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes"> + <summary> + Ansi code to reset terminal + </summary> + </member> + <member name="M:log4net.Appender.AnsiColorTerminalAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class. + </summary> + <remarks> + The instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class is set up to write + to the standard output stream. + </remarks> + </member> + <member name="M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)"> + <summary> + Add a mapping of level to color + </summary> + <param name="mapping">The mapping to add</param> + <remarks> + <para> + Add a <see cref="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors"/> mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the event to the console. + </para> + <para> + The format of the output will depend on the appender's layout. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions"> + <summary> + Initialize the options for this appender + </summary> + <remarks> + <para> + Initialize the level to color mappings set on this appender. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream"> + <summary> + Flag to write output to the error stream rather than the standard output stream + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping"> + <summary> + Mapping from level object to color value + </summary> + </member> + <member name="P:log4net.Appender.AnsiColorTerminalAppender.Target"> + <summary> + Target is the value of the console output stream. + </summary> + <value> + Target is the value of the console output stream. + This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>. + </value> + <remarks> + <para> + Target is the value of the console output stream. + This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes"> + <summary> + The enum of possible display attributes + </summary> + <remarks> + <para> + The following flags can be combined together to + form the ANSI color attributes. + </para> + </remarks> + <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright"> + <summary> + text is bright + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim"> + <summary> + text is dim + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore"> + <summary> + text is underlined + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink"> + <summary> + text is blinking + </summary> + <remarks> + Not all terminals support this attribute + </remarks> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse"> + <summary> + text and background colors are reversed + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden"> + <summary> + text is hidden + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough"> + <summary> + text is displayed with a strikethrough + </summary> + </member> + <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor"> + <summary> + The enum of possible foreground or background color values for + use with the color mapping method + </summary> + <remarks> + <para> + The output can be in one for the following ANSI colors. + </para> + </remarks> + <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black"> + <summary> + color is black + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red"> + <summary> + color is red + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green"> + <summary> + color is green + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow"> + <summary> + color is yellow + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue"> + <summary> + color is blue + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta"> + <summary> + color is magenta + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan"> + <summary> + color is cyan + </summary> + </member> + <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White"> + <summary> + color is white + </summary> + </member> + <member name="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors"> + <summary> + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + </summary> + <remarks> + <para> + Defines the mapping between a level and the color it should be displayed in. + </para> + </remarks> + </member> + <member name="T:log4net.Util.LevelMappingEntry"> + <summary> + An entry in the <see cref="T:log4net.Util.LevelMapping"/> + </summary> + <remarks> + <para> + This is an abstract base class for types that are stored in the + <see cref="T:log4net.Util.LevelMapping"/> object. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.LevelMappingEntry.#ctor"> + <summary> + Default protected constructor + </summary> + <remarks> + <para> + Default protected constructor + </para> + </remarks> + </member> + <member name="M:log4net.Util.LevelMappingEntry.ActivateOptions"> + <summary> + Initialize any options defined on this entry + </summary> + <remarks> + <para> + Should be overridden by any classes that need to initialise based on their options + </para> + </remarks> + </member> + <member name="P:log4net.Util.LevelMappingEntry.Level"> + <summary> + The level that is the key for this mapping + </summary> + <value> + The <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this mapping + </value> + <remarks> + <para> + Get or set the <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this + mapping subclass. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions"> + <summary> + Initialize the options for the object + </summary> + <remarks> + <para> + Combine the <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> together + and append the attributes. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"> + <summary> + The mapped foreground color for the specified level + </summary> + <remarks> + <para> + Required property. + The mapped foreground color for the specified level + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"> + <summary> + The mapped background color for the specified level + </summary> + <remarks> + <para> + Required property. + The mapped background color for the specified level + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes"> + <summary> + The color attributes for the specified level + </summary> + <remarks> + <para> + Required property. + The color attributes for the specified level + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor"> + <summary> + The combined <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/>, <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> and + <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes"/> suitable for setting the ansi terminal color. + </summary> + </member> + <member name="T:log4net.Appender.AppenderCollection"> + <summary> + A strongly-typed collection of <see cref="T:log4net.Appender.IAppender"/> objects. + </summary> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)"> + <summary> + Creates a read-only wrapper for a <c>AppenderCollection</c> instance. + </summary> + <param name="list">list to create a readonly wrapper arround</param> + <returns> + An <c>AppenderCollection</c> wrapper that is read-only. + </returns> + </member> + <member name="F:log4net.Appender.AppenderCollection.EmptyCollection"> + <summary> + An empty readonly static AppenderCollection + </summary> + </member> + <member name="M:log4net.Appender.AppenderCollection.#ctor"> + <summary> + Initializes a new instance of the <c>AppenderCollection</c> class + that is empty and has the default initial capacity. + </summary> + </member> + <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Int32)"> + <summary> + Initializes a new instance of the <c>AppenderCollection</c> class + that has the specified initial capacity. + </summary> + <param name="capacity"> + The number of elements that the new <c>AppenderCollection</c> is initially capable of storing. + </param> + </member> + <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)"> + <summary> + Initializes a new instance of the <c>AppenderCollection</c> class + that contains elements copied from the specified <c>AppenderCollection</c>. + </summary> + <param name="c">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param> + </member> + <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])"> + <summary> + Initializes a new instance of the <c>AppenderCollection</c> class + that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> array. + </summary> + <param name="a">The <see cref="T:log4net.Appender.IAppender"/> array whose elements are copied to the new list.</param> + </member> + <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)"> + <summary> + Initializes a new instance of the <c>AppenderCollection</c> class + that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> collection. + </summary> + <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements are copied to the new list.</param> + </member> + <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)"> + <summary> + Allow subclasses to avoid our default constructors + </summary> + <param name="tag"></param> + <exclude/> + </member> + <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])"> + <summary> + Copies the entire <c>AppenderCollection</c> to a one-dimensional + <see cref="T:log4net.Appender.IAppender"/> array. + </summary> + <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param> + </member> + <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)"> + <summary> + Copies the entire <c>AppenderCollection</c> to a one-dimensional + <see cref="T:log4net.Appender.IAppender"/> array, starting at the specified index of the target array. + </summary> + <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param> + <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param> + </member> + <member name="M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)"> + <summary> + Adds a <see cref="T:log4net.Appender.IAppender"/> to the end of the <c>AppenderCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to be added to the end of the <c>AppenderCollection</c>.</param> + <returns>The index at which the value has been added.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.Clear"> + <summary> + Removes all elements from the <c>AppenderCollection</c>. + </summary> + </member> + <member name="M:log4net.Appender.AppenderCollection.Clone"> + <summary> + Creates a shallow copy of the <see cref="T:log4net.Appender.AppenderCollection"/>. + </summary> + <returns>A new <see cref="T:log4net.Appender.AppenderCollection"/> with a shallow copy of the collection data.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)"> + <summary> + Determines whether a given <see cref="T:log4net.Appender.IAppender"/> is in the <c>AppenderCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to check for.</param> + <returns><c>true</c> if <paramref name="item"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)"> + <summary> + Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Appender.IAppender"/> + in the <c>AppenderCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to locate in the <c>AppenderCollection</c>.</param> + <returns> + The zero-based index of the first occurrence of <paramref name="item"/> + in the entire <c>AppenderCollection</c>, if found; otherwise, -1. + </returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)"> + <summary> + Inserts an element into the <c>AppenderCollection</c> at the specified index. + </summary> + <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param> + <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to insert.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)"> + <summary> + Removes the first occurrence of a specific <see cref="T:log4net.Appender.IAppender"/> from the <c>AppenderCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to remove from the <c>AppenderCollection</c>.</param> + <exception cref="T:System.ArgumentException"> + The specified <see cref="T:log4net.Appender.IAppender"/> was not found in the <c>AppenderCollection</c>. + </exception> + </member> + <member name="M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)"> + <summary> + Removes the element at the specified index of the <c>AppenderCollection</c>. + </summary> + <param name="index">The zero-based index of the element to remove.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Appender.AppenderCollection.GetEnumerator"> + <summary> + Returns an enumerator that can iterate through the <c>AppenderCollection</c>. + </summary> + <returns>An <see cref="T:log4net.Appender.AppenderCollection.Enumerator"/> for the entire <c>AppenderCollection</c>.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)"> + <summary> + Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>. + </summary> + <param name="x">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param> + <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])"> + <summary> + Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> array to the current <c>AppenderCollection</c>. + </summary> + <param name="x">The <see cref="T:log4net.Appender.IAppender"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param> + <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)"> + <summary> + Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> collection to the current <c>AppenderCollection</c>. + </summary> + <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param> + <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.TrimToSize"> + <summary> + Sets the capacity to the actual number of elements. + </summary> + </member> + <member name="M:log4net.Appender.AppenderCollection.ToArray"> + <summary> + Return the collection elements as an array + </summary> + <returns>the array</returns> + </member> + <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)"> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)"> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para> + </exception> + </member> + <member name="P:log4net.Appender.AppenderCollection.Count"> + <summary> + Gets the number of elements actually contained in the <c>AppenderCollection</c>. + </summary> + </member> + <member name="P:log4net.Appender.AppenderCollection.IsSynchronized"> + <summary> + Gets a value indicating whether access to the collection is synchronized (thread-safe). + </summary> + <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns> + </member> + <member name="P:log4net.Appender.AppenderCollection.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the collection. + </summary> + </member> + <member name="P:log4net.Appender.AppenderCollection.Item(System.Int32)"> + <summary> + Gets or sets the <see cref="T:log4net.Appender.IAppender"/> at the specified index. + </summary> + <param name="index">The zero-based index of the element to get or set.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para> + </exception> + </member> + <member name="P:log4net.Appender.AppenderCollection.IsFixedSize"> + <summary> + Gets a value indicating whether the collection has a fixed size. + </summary> + <value>true if the collection has a fixed size; otherwise, false. The default is false</value> + </member> + <member name="P:log4net.Appender.AppenderCollection.IsReadOnly"> + <summary> + Gets a value indicating whether the IList is read-only. + </summary> + <value>true if the collection is read-only; otherwise, false. The default is false</value> + </member> + <member name="P:log4net.Appender.AppenderCollection.Capacity"> + <summary> + Gets or sets the number of elements the <c>AppenderCollection</c> can contain. + </summary> + </member> + <member name="T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator"> + <summary> + Supports type-safe iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>. + </summary> + <exclude/> + </member> + <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext"> + <summary> + Advances the enumerator to the next element in the collection. + </summary> + <returns> + <c>true</c> if the enumerator was successfully advanced to the next element; + <c>false</c> if the enumerator has passed the end of the collection. + </returns> + <exception cref="T:System.InvalidOperationException"> + The collection was modified after the enumerator was created. + </exception> + </member> + <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset"> + <summary> + Sets the enumerator to its initial position, before the first element in the collection. + </summary> + </member> + <member name="P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current"> + <summary> + Gets the current element in the collection. + </summary> + </member> + <member name="T:log4net.Appender.AppenderCollection.Tag"> + <summary> + Type visible only to our subclasses + Used to access protected constructor + </summary> + <exclude/> + </member> + <member name="F:log4net.Appender.AppenderCollection.Tag.Default"> + <summary> + A value + </summary> + </member> + <member name="T:log4net.Appender.AppenderCollection.Enumerator"> + <summary> + Supports simple iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>. + </summary> + <exclude/> + </member> + <member name="M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)"> + <summary> + Initializes a new instance of the <c>Enumerator</c> class. + </summary> + <param name="tc"></param> + </member> + <member name="M:log4net.Appender.AppenderCollection.Enumerator.MoveNext"> + <summary> + Advances the enumerator to the next element in the collection. + </summary> + <returns> + <c>true</c> if the enumerator was successfully advanced to the next element; + <c>false</c> if the enumerator has passed the end of the collection. + </returns> + <exception cref="T:System.InvalidOperationException"> + The collection was modified after the enumerator was created. + </exception> + </member> + <member name="M:log4net.Appender.AppenderCollection.Enumerator.Reset"> + <summary> + Sets the enumerator to its initial position, before the first element in the collection. + </summary> + </member> + <member name="P:log4net.Appender.AppenderCollection.Enumerator.Current"> + <summary> + Gets the current element in the collection. + </summary> + </member> + <member name="T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection"> + <exclude/> + </member> + <member name="T:log4net.Appender.AspNetTraceAppender"> + <summary> + <para> + Appends log events to the ASP.NET <see cref="T:System.Web.TraceContext"/> system. + </para> + </summary> + <remarks> + <para> + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + </para> + <para> + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + </para> + <para> + The logging event is passed to the <see cref="M:System.Web.TraceContext.Write(System.String)"/> or + <see cref="M:System.Web.TraceContext.Warn(System.String)"/> method depending on the level of the logging event. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Appender.AspNetTraceAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.AspNetTraceAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + Write the logging event to the ASP.NET trace + </summary> + <param name="loggingEvent">the event to log</param> + <remarks> + <para> + Write the logging event to the ASP.NET trace + <c>HttpContext.Current.Trace</c> + (<see cref="T:System.Web.TraceContext"/>). + </para> + </remarks> + </member> + <member name="P:log4net.Appender.AspNetTraceAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.BufferingForwardingAppender"> + <summary> + Buffers events and then forwards them to attached appenders. + </summary> + <remarks> + <para> + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> for the + conditions that cause the buffer to be sent. + </para> + <para>The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Core.IAppenderAttachable"> + <summary> + Interface for attaching appenders to objects. + </summary> + <remarks> + <para> + Interface for attaching, removing and retrieving appenders. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)"> + <summary> + Attaches an appender. + </summary> + <param name="appender">The appender to add.</param> + <remarks> + <para> + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IAppenderAttachable.GetAppender(System.String)"> + <summary> + Gets an attached appender with the specified name. + </summary> + <param name="name">The name of the appender to get.</param> + <returns> + The appender with the name specified, or <c>null</c> if no appender with the + specified name is found. + </returns> + <remarks> + <para> + Returns an attached appender with the <paramref name="name"/> specified. + If no appender with the specified name is found <c>null</c> will be + returned. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IAppenderAttachable.RemoveAllAppenders"> + <summary> + Removes all attached appenders. + </summary> + <remarks> + <para> + Removes and closes all attached appenders + </para> + </remarks> + </member> + <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)"> + <summary> + Removes the specified appender from the list of attached appenders. + </summary> + <param name="appender">The appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + <para> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)"> + <summary> + Removes the appender with the specified name from the list of appenders. + </summary> + <param name="name">The name of the appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + <para> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </para> + </remarks> + </member> + <member name="P:log4net.Core.IAppenderAttachable.Appenders"> + <summary> + Gets all attached appenders. + </summary> + <value> + A collection of attached appenders. + </value> + <remarks> + <para> + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than <c>null</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.BufferingForwardingAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.OnClose"> + <summary> + Closes the appender and releases resources. + </summary> + <remarks> + <para> + Releases any resources allocated within the appender such as file handles, + network connections, etc. + </para> + <para> + It is a programming error to append to a closed appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])"> + <summary> + Send the events. + </summary> + <param name="events">The events that need to be send.</param> + <remarks> + <para> + Forwards the events to the attached appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)"> + <summary> + Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this + instance. + </summary> + <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param> + <remarks> + <para> + If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of + appenders, then it won't be added again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)"> + <summary> + Looks for the appender with the specified name. + </summary> + <param name="name">The name of the appender to lookup.</param> + <returns> + The appender with the specified name, or <c>null</c>. + </returns> + <remarks> + <para> + Get the named appender attached to this buffering appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders"> + <summary> + Removes all previously added appenders from this appender. + </summary> + <remarks> + <para> + This is useful when re-reading configuration information. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)"> + <summary> + Removes the specified appender from the list of appenders. + </summary> + <param name="appender">The appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </remarks> + </member> + <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)"> + <summary> + Removes the appender with the specified name from the list of appenders. + </summary> + <param name="name">The name of the appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </remarks> + </member> + <member name="F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl"> + <summary> + Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface + </summary> + </member> + <member name="P:log4net.Appender.BufferingForwardingAppender.Appenders"> + <summary> + Gets the appenders contained in this appender as an + <see cref="T:System.Collections.ICollection"/>. + </summary> + <remarks> + If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/> + is returned. + </remarks> + <returns> + A collection of the appenders in this appender. + </returns> + </member> + <member name="T:log4net.Appender.ConsoleAppender"> + <summary> + Appends logging events to the console. + </summary> + <remarks> + <para> + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + </para> + <para> + By default, all output is written to the console's standard output stream. + The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> property can be set to direct the output to the + error stream. + </para> + <para> + NOTE: This appender writes each message to the <c>System.Console.Out</c> or + <c>System.Console.Error</c> that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Appender.ConsoleAppender.ConsoleOut"> + <summary> + The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console + standard output stream. + </summary> + <remarks> + <para> + The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console + standard output stream. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.ConsoleAppender.ConsoleError"> + <summary> + The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console + standard error output stream. + </summary> + <remarks> + <para> + The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console + standard error output stream. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ConsoleAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class. + </summary> + <remarks> + The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write + to the standard output stream. + </remarks> + </member> + <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class + with the specified layout. + </summary> + <param name="layout">the layout to use for this appender</param> + <remarks> + The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write + to the standard output stream. + </remarks> + </member> + <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class + with the specified layout. + </summary> + <param name="layout">the layout to use for this appender</param> + <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param> + <remarks> + When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + </remarks> + </member> + <member name="M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the event to the console. + </para> + <para> + The format of the output will depend on the appender's layout. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.ConsoleAppender.Target"> + <summary> + Target is the value of the console output stream. + This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>. + </summary> + <value> + Target is the value of the console output stream. + This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>. + </value> + <remarks> + <para> + Target is the value of the console output stream. + This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.ConsoleAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.DebugAppender"> + <summary> + Appends log events to the <see cref="T:System.Diagnostics.Debug"/> system. + </summary> + <remarks> + <para> + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + <see cref="T:System.Diagnostics.Debug"/> class for details on configuring the + debug system. + </para> + <para> + Events are written using the <see cref="M:System.Diagnostics.Debug.Write(System.String,System.String)"/> + method. The event's logger name is passed as the value for the category name to the Write method. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.DebugAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/>. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/> + with a specified layout. + </summary> + <param name="layout">The layout to use with this appender.</param> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system. + If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is <c>true</c> then the <see cref="M:System.Diagnostics.Debug.Flush"/> + is called. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.DebugAppender.m_immediateFlush"> + <summary> + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + </summary> + <remarks> + <para> + Immediate flush is slower but ensures that each append request is + actually written. If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is set to + <c>false</c>, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + </para> + <para> + The default value is <c>true</c>.</para> + </remarks> + </member> + <member name="P:log4net.Appender.DebugAppender.ImmediateFlush"> + <summary> + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + </summary> + <remarks> + <para>The default behavior is to flush at the end of each + write. If the option is set to<c>false</c>, then the underlying + stream can defer writing to physical medium to a later time. + </para> + <para> + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.DebugAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.EventLogAppender"> + <summary> + Writes events to the system event log. + </summary> + <remarks> + <para> + The <c>EventID</c> of the event log entry can be + set using the <c>EventLogEventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>) + on the <see cref="T:log4net.Core.LoggingEvent"/>. + </para> + <para> + There is a limit of 32K characters for an event log message + </para> + <para> + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + </para> + <code lang="XML"> + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + </code> + <para> + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the <see cref="T:System.Diagnostics.EventLogEntryType"/> enum, i.e.: + <list type="bullet"> + <item><term>Error</term><description>an error event</description></item> + <item><term>Warning</term><description>a warning event</description></item> + <item><term>Information</term><description>an informational event</description></item> + </list> + </para> + </remarks> + <author>Aspi Havewala</author> + <author>Douglas de la Torre</author> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Thomas Voss</author> + </member> + <member name="M:log4net.Appender.EventLogAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class + with the specified <see cref="T:log4net.Layout.ILayout"/>. + </summary> + <param name="layout">The <see cref="T:log4net.Layout.ILayout"/> to use with this appender.</param> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)"> + <summary> + Add a mapping of level to <see cref="T:System.Diagnostics.EventLogEntryType"/> - done by the config file + </summary> + <param name="mapping">The mapping to add</param> + <remarks> + <para> + Add a <see cref="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType"/> mapping to this appender. + Each mapping defines the event log entry type for a level. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.EventLogAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)"> + <summary> + Create an event log source + </summary> + <remarks> + Uses different API calls under NET_2_0 + </remarks> + </member> + <member name="M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> + method. + </summary> + <param name="loggingEvent">the event to log</param> + <remarks> + <para>Writes the event to the system event log using the + <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>.</para> + + <para>If the event has an <c>EventID</c> property (see <see cref="P:log4net.Core.LoggingEvent.Properties"/>) + set then this integer will be used as the event log event id.</para> + + <para> + There is a limit of 32K characters for an event log message + </para> + </remarks> + </member> + <member name="M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)"> + <summary> + Get the equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="p"/> + </summary> + <param name="level">the Level to convert to an EventLogEntryType</param> + <returns>The equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="p"/></returns> + <remarks> + Because there are fewer applicable <see cref="T:System.Diagnostics.EventLogEntryType"/> + values to use in logging levels than there are in the + <see cref="T:log4net.Core.Level"/> this is a one way mapping. There is + a loss of information during the conversion. + </remarks> + </member> + <member name="F:log4net.Appender.EventLogAppender.m_logName"> + <summary> + The log name is the section in the event logs where the messages + are stored. + </summary> + </member> + <member name="F:log4net.Appender.EventLogAppender.m_applicationName"> + <summary> + Name of the application to use when logging. This appears in the + application column of the event log named by <see cref="F:log4net.Appender.EventLogAppender.m_logName"/>. + </summary> + </member> + <member name="F:log4net.Appender.EventLogAppender.m_machineName"> + <summary> + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + </summary> + </member> + <member name="F:log4net.Appender.EventLogAppender.m_levelMapping"> + <summary> + Mapping from level object to EventLogEntryType + </summary> + </member> + <member name="F:log4net.Appender.EventLogAppender.m_securityContext"> + <summary> + The security context to use for privileged calls + </summary> + </member> + <member name="P:log4net.Appender.EventLogAppender.LogName"> + <summary> + The name of the log where messages will be stored. + </summary> + <value> + The string name of the log where messages will be stored. + </value> + <remarks> + <para>This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the <c>Application</c> + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the <see cref="P:log4net.Appender.EventLogAppender.LogName"/> appropriately.</para> + <para>This should not be used to distinguish your event log messages + from those of other applications, the <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/> + property should be used to distinguish events. This property should be + used to group together events into a single log. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.EventLogAppender.ApplicationName"> + <summary> + Property used to set the Application name. This appears in the + event logs when logging. + </summary> + <value> + The string used to distinguish events from different sources. + </value> + <remarks> + Sets the event log source property. + </remarks> + </member> + <member name="P:log4net.Appender.EventLogAppender.MachineName"> + <summary> + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + </summary> + <value> + The string name of the machine holding the event log that + will be logged into. + </value> + <remarks> + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + </remarks> + </member> + <member name="P:log4net.Appender.EventLogAppender.SecurityContext"> + <summary> + Gets or sets the <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog. + </summary> + <value> + The <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog. + </value> + <remarks> + <para> + The system security context used to write to the EventLog. + </para> + <para> + Unless a <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> specified here for this appender + the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.EventLogAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType"> + <summary> + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + </summary> + <remarks> + <para> + Defines the mapping between a level and its event log entry type. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"> + <summary> + The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry + </summary> + <remarks> + <para> + Required property. + The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry + </para> + </remarks> + </member> + <member name="T:log4net.Appender.FileAppender"> + <summary> + Appends logging events to a file. + </summary> + <remarks> + <para> + Logging events are sent to the file specified by + the <see cref="P:log4net.Appender.FileAppender.File"/> property. + </para> + <para> + The file can be opened in either append or overwrite mode + by specifying the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the <see cref="P:log4net.Appender.FileAppender.Encoding"/> property. + </para> + <para> + The layout's <see cref="P:log4net.Layout.ILayout.Header"/> and <see cref="P:log4net.Layout.ILayout.Footer"/> + values will be written each time the file is opened and closed + respectively. If the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is <see langword="true"/> + then the file may contain multiple copies of the header and footer. + </para> + <para> + This appender will first try to open the file for writing when <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + </para> + <para> + The <see cref="T:log4net.Appender.FileAppender"/> supports pluggable file locking models via + the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> property. + The default behavior, implemented by <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative model, <see cref="T:log4net.Appender.FileAppender.MinimalLock"/>, only holds a + write lock while the appender is writing a logging event. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Rodrigo B. de Oliveira</author> + <author>Douglas de la Torre</author> + <author>Niall Daley</author> + </member> + <member name="T:log4net.Appender.TextWriterAppender"> + <summary> + Sends logging events to a <see cref="T:System.IO.TextWriter"/>. + </summary> + <remarks> + <para> + An Appender that writes to a <see cref="T:System.IO.TextWriter"/>. + </para> + <para> + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a <see cref="T:System.IO.TextWriter"/> to write to. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Douglas de la Torre</author> + </member> + <member name="M:log4net.Appender.TextWriterAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and + sets the output destination to a new <see cref="T:System.IO.StreamWriter"/> initialized + with the specified <see cref="T:System.IO.Stream"/>. + </summary> + <param name="layout">The layout to use with this appender.</param> + <param name="os">The <see cref="T:System.IO.Stream"/> to output to.</param> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and sets + the output destination to the specified <see cref="T:System.IO.StreamWriter"/>. + </summary> + <param name="layout">The layout to use with this appender</param> + <param name="writer">The <see cref="T:System.IO.TextWriter"/> to output to</param> + <remarks> + The <see cref="T:System.IO.TextWriter"/> must have been previously opened. + </remarks> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.PreAppendCheck"> + <summary> + This method determines if there is a sense in attempting to append. + </summary> + <remarks> + <para> + This method checked if an output target has been set and if a + layout has been set. + </para> + </remarks> + <returns><c>false</c> if any of the preconditions fail.</returns> + </member> + <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> + method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes a log statement to the output stream if the output stream exists + and is writable. + </para> + <para> + The format of the output will depend on the appender's layout. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])"/> + method. + </summary> + <param name="loggingEvents">The array of events to log.</param> + <remarks> + <para> + This method writes all the bulk logged events to the output writer + before flushing the stream. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.OnClose"> + <summary> + Close this appender instance. The underlying stream or writer is also closed. + </summary> + <remarks> + Closed appenders cannot be reused. + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter"> + <summary> + Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>. + </summary> + <remarks> + <para> + Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.CloseWriter"> + <summary> + Closes the underlying <see cref="T:System.IO.TextWriter"/>. + </summary> + <remarks> + <para> + Closes the underlying <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.Reset"> + <summary> + Clears internal references to the underlying <see cref="T:System.IO.TextWriter"/> + and other variables. + </summary> + <remarks> + <para> + Subclasses can override this method for an alternate closing behavior. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.WriteFooter"> + <summary> + Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property. + </summary> + <remarks> + <para> + Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.WriteHeader"> + <summary> + Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property. + </summary> + <remarks> + <para> + Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TextWriterAppender.PrepareWriter"> + <summary> + Called to allow a subclass to lazily initialize the writer + </summary> + <remarks> + <para> + This method is called when an event is logged and the <see cref="P:log4net.Appender.TextWriterAppender.Writer"/> or + <see cref="P:log4net.Appender.TextWriterAppender.QuietWriter"/> have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.TextWriterAppender.m_qtw"> + <summary> + This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events + will be written to. + </summary> + </member> + <member name="F:log4net.Appender.TextWriterAppender.m_immediateFlush"> + <summary> + Immediate flush means that the underlying <see cref="T:System.IO.TextWriter"/> + or output stream will be flushed at the end of each append operation. + </summary> + <remarks> + <para> + Immediate flush is slower but ensures that each append request is + actually written. If <see cref="P:log4net.Appender.TextWriterAppender.ImmediateFlush"/> is set to + <c>false</c>, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + </para> + <para> + The default value is <c>true</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.TextWriterAppender.ImmediateFlush"> + <summary> + Gets or set whether the appender will flush at the end + of each append operation. + </summary> + <value> + <para> + The default behavior is to flush at the end of each + append operation. + </para> + <para> + If this option is set to <c>false</c>, then the underlying + stream can defer persisting the logging event to a later + time. + </para> + </value> + <remarks> + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + </remarks> + </member> + <member name="P:log4net.Appender.TextWriterAppender.Writer"> + <summary> + Sets the <see cref="T:System.IO.TextWriter"/> where the log output will go. + </summary> + <remarks> + <para> + The specified <see cref="T:System.IO.TextWriter"/> must be open and writable. + </para> + <para> + The <see cref="T:System.IO.TextWriter"/> will be closed when the appender + instance is closed. + </para> + <para> + <b>Note:</b> Logging to an unopened <see cref="T:System.IO.TextWriter"/> will fail. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.TextWriterAppender.ErrorHandler"> + <summary> + Gets or set the <see cref="T:log4net.Core.IErrorHandler"/> and the underlying + <see cref="T:log4net.Util.QuietTextWriter"/>, if any, for this appender. + </summary> + <value> + The <see cref="T:log4net.Core.IErrorHandler"/> for this appender. + </value> + </member> + <member name="P:log4net.Appender.TextWriterAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.TextWriterAppender.QuietWriter"> + <summary> + Gets or sets the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events + will be written to. + </summary> + <value> + The <see cref="T:log4net.Util.QuietTextWriter"/> where logging events are written. + </value> + <remarks> + <para> + This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events + will be written to. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)"> + <summary> + Construct a new appender using the layout, file and append mode. + </summary> + <param name="layout">the layout to use with this appender</param> + <param name="filename">the full path to the file to write to</param> + <param name="append">flag to indicate if the file should be appended to</param> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)"> + <summary> + Construct a new appender using the layout and file specified. + The file will be appended to. + </summary> + <param name="layout">the layout to use with this appender</param> + <param name="filename">the full path to the file to write to</param> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.ActivateOptions"> + <summary> + Activate the options on the file appender. + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> must be called again. + </para> + <para> + This will cause the file to be opened. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.Reset"> + <summary> + Closes any previously opened file and calls the parent's <see cref="M:log4net.Appender.TextWriterAppender.Reset"/>. + </summary> + <remarks> + <para> + Resets the filename and the file stream. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.PrepareWriter"> + <summary> + Called to initialize the file writer + </summary> + <remarks> + <para> + Will be called for each logged message until the file is + successfully opened. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> + method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes a log statement to the output stream if the output stream exists + and is writable. + </para> + <para> + The format of the output will depend on the appender's layout. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])"/> + method. + </summary> + <param name="loggingEvents">The array of events to log.</param> + <remarks> + <para> + Acquires the output file locks once before writing all the events to + the stream. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.WriteFooter"> + <summary> + Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property. + </summary> + <remarks> + <para> + Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.WriteHeader"> + <summary> + Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property. + </summary> + <remarks> + <para> + Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.CloseWriter"> + <summary> + Closes the underlying <see cref="T:System.IO.TextWriter"/>. + </summary> + <remarks> + <para> + Closes the underlying <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.CloseFile"> + <summary> + Closes the previously opened file. + </summary> + <remarks> + <para> + Writes the <see cref="P:log4net.Layout.ILayout.Footer"/> to the file and then + closes the file. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)"> + <summary> + Sets and <i>opens</i> the file where the log output will go. The specified file must be writable. + </summary> + <param name="fileName">The path to the log file. Must be a fully qualified path.</param> + <param name="append">If true will append to fileName. Otherwise will truncate fileName</param> + <remarks> + <para> + Calls <see cref="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)"/> but guarantees not to throw an exception. + Errors are passed to the <see cref="P:log4net.Appender.TextWriterAppender.ErrorHandler"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)"> + <summary> + Sets and <i>opens</i> the file where the log output will go. The specified file must be writable. + </summary> + <param name="fileName">The path to the log file. Must be a fully qualified path.</param> + <param name="append">If true will append to fileName. Otherwise will truncate fileName</param> + <remarks> + <para> + If there was already an opened file, then the previous file + is closed first. + </para> + <para> + This method will ensure that the directory structure + for the <paramref name="fileName"/> specified exists. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)"> + <summary> + Sets the quiet writer used for file output + </summary> + <param name="fileStream">the file stream that has been opened for writing</param> + <remarks> + <para> + This implementation of <see cref="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)"/> creates a <see cref="T:System.IO.StreamWriter"/> + over the <paramref name="fileStream"/> and passes it to the + <see cref="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)"/> method. + </para> + <para> + This method can be overridden by sub classes that want to wrap the + <see cref="T:System.IO.Stream"/> in some way, for example to encrypt the output + data using a <c>System.Security.Cryptography.CryptoStream</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)"> + <summary> + Sets the quiet writer being used. + </summary> + <param name="writer">the writer over the file stream that has been opened for writing</param> + <remarks> + <para> + This method can be overridden by sub classes that want to + wrap the <see cref="T:System.IO.TextWriter"/> in some way. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)"> + <summary> + Convert a path into a fully qualified path. + </summary> + <param name="path">The path to convert.</param> + <returns>The fully qualified path.</returns> + <remarks> + <para> + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.FileAppender.m_appendToFile"> + <summary> + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + </summary> + </member> + <member name="F:log4net.Appender.FileAppender.m_fileName"> + <summary> + The name of the log file. + </summary> + </member> + <member name="F:log4net.Appender.FileAppender.m_encoding"> + <summary> + The encoding to use for the file stream. + </summary> + </member> + <member name="F:log4net.Appender.FileAppender.m_securityContext"> + <summary> + The security context to use for privileged calls + </summary> + </member> + <member name="F:log4net.Appender.FileAppender.m_stream"> + <summary> + The stream to log to. Has added locking semantics + </summary> + </member> + <member name="F:log4net.Appender.FileAppender.m_lockingModel"> + <summary> + The locking model to use + </summary> + </member> + <member name="P:log4net.Appender.FileAppender.File"> + <summary> + Gets or sets the path to the file that logging will be written to. + </summary> + <value> + The path to the file that logging will be written to. + </value> + <remarks> + <para> + If the path is relative it is taken as relative from + the application base directory. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.FileAppender.AppendToFile"> + <summary> + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + </summary> + <value> + Indicates whether the file should be appended to or overwritten. + </value> + <remarks> + <para> + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + </para> + The default value is true. + </remarks> + </member> + <member name="P:log4net.Appender.FileAppender.Encoding"> + <summary> + Gets or sets <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file. + </summary> + <value> + The <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file. + </value> + <remarks> + <para> + The default encoding set is <see cref="P:System.Text.Encoding.Default"/> + which is the encoding for the system's current ANSI code page. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.FileAppender.SecurityContext"> + <summary> + Gets or sets the <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file. + </summary> + <value> + The <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file. + </value> + <remarks> + <para> + Unless a <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> specified here for this appender + the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.FileAppender.LockingModel"> + <summary> + Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file. + </summary> + <value> + The <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to lock the file. + </value> + <remarks> + <para> + Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file. + </para> + <para> + There are two built in locking models, <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> and <see cref="T:log4net.Appender.FileAppender.MinimalLock"/>. + The former locks the file from the start of logging to the end and the + later lock only for the minimal amount of time when logging each message. + </para> + <para> + The default locking model is the <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.FileAppender.LockingStream"> + <summary> + Write only <see cref="T:System.IO.Stream"/> that uses the <see cref="T:log4net.Appender.FileAppender.LockingModelBase"/> + to manage access to an underlying resource. + </summary> + </member> + <member name="M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)"> + <summary> + True asynchronous writes are not supported, the implementation forces a synchronous write. + </summary> + </member> + <member name="T:log4net.Core.LogException"> + <summary> + Exception base type for log4net. + </summary> + <remarks> + <para> + This type extends <see cref="T:System.ApplicationException"/>. It + does not add any new functionality but does differentiate the + type of exception being thrown. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.LogException.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogException.#ctor(System.String)"> + <summary> + Constructor + </summary> + <param name="message">A message to include with the exception.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class with + the specified message. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogException.#ctor(System.String,System.Exception)"> + <summary> + Constructor + </summary> + <param name="message">A message to include with the exception.</param> + <param name="innerException">A nested exception to include.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class + with the specified message and inner exception. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Serialization constructor + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> + <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class + with serialized data. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.FileAppender.LockingModelBase"> + <summary> + Locking model base class + </summary> + <remarks> + <para> + Base class for the locking models available to the <see cref="T:log4net.Appender.FileAppender"/> derived loggers. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)"> + <summary> + Open the output file + </summary> + <param name="filename">The filename to use</param> + <param name="append">Whether to append to the file, or overwrite</param> + <param name="encoding">The encoding to use</param> + <remarks> + <para> + Open the file specified and prepare for logging. + No writes will be made until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called. + Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/>, + <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile"> + <summary> + Close the file + </summary> + <remarks> + <para> + Close the file. No further writes will be made. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"> + <summary> + Acquire the lock on the file + </summary> + <returns>A stream that is ready to be written to.</returns> + <remarks> + <para> + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/> + must be called to release the lock on the output file. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"> + <summary> + Release the lock on the file + </summary> + <remarks> + <para> + Release the lock on the file. No further writes will be made to the + stream until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called again. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender"> + <summary> + Gets or sets the <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel + </summary> + <value> + The <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel + </value> + <remarks> + <para> + The file appender this locking model is attached to and working on + behalf of. + </para> + <para> + The file appender is used to locate the security context and the error handler to use. + </para> + <para> + The value of this property will be set before <see cref="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)"/> is + called. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.FileAppender.ExclusiveLock"> + <summary> + Hold an exclusive lock on the output file + </summary> + <remarks> + <para> + Open the file once for writing and hold it open until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/> is called. + Maintains an exclusive lock on the file during this time. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)"> + <summary> + Open the file specified and prepare for logging. + </summary> + <param name="filename">The filename to use</param> + <param name="append">Whether to append to the file, or overwrite</param> + <param name="encoding">The encoding to use</param> + <remarks> + <para> + Open the file specified and prepare for logging. + No writes will be made until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/> is called. + Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/>, + <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"> + <summary> + Close the file + </summary> + <remarks> + <para> + Close the file. No further writes will be made. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"> + <summary> + Acquire the lock on the file + </summary> + <returns>A stream that is ready to be written to.</returns> + <remarks> + <para> + Does nothing. The lock is already taken + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock"> + <summary> + Release the lock on the file + </summary> + <remarks> + <para> + Does nothing. The lock will be released when the file is closed. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.FileAppender.MinimalLock"> + <summary> + Acquires the file lock for each write + </summary> + <remarks> + <para> + Opens the file once for each <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>/<see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> but allows + other processes to move/delete the log file whilst logging continues. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)"> + <summary> + Prepares to open the file when the first message is logged. + </summary> + <param name="filename">The filename to use</param> + <param name="append">Whether to append to the file, or overwrite</param> + <param name="encoding">The encoding to use</param> + <remarks> + <para> + Open the file specified and prepare for logging. + No writes will be made until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called. + Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>, + <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.MinimalLock.CloseFile"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.MinimalLock.CloseFile"> + <summary> + Close the file + </summary> + <remarks> + <para> + Close the file. No further writes will be made. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"> + <summary> + Acquire the lock on the file + </summary> + <returns>A stream that is ready to be written to.</returns> + <remarks> + <para> + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> + must be called to release the lock on the output file. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"> + <summary> + Release the lock on the file + </summary> + <remarks> + <para> + Release the lock on the file. No further writes will be made to the + stream until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called again. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.ForwardingAppender"> + <summary> + This appender forwards logging events to attached appenders. + </summary> + <remarks> + <para> + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Appender.ForwardingAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.ForwardingAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.OnClose"> + <summary> + Closes the appender and releases resources. + </summary> + <remarks> + <para> + Releases any resources allocated within the appender such as file handles, + network connections, etc. + </para> + <para> + It is a programming error to append to a closed appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + Forward the logging event to the attached appenders + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Delivers the logging event to all the attached appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])"> + <summary> + Forward the logging events to the attached appenders + </summary> + <param name="loggingEvents">The array of events to log.</param> + <remarks> + <para> + Delivers the logging events to all the attached appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)"> + <summary> + Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this + instance. + </summary> + <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param> + <remarks> + <para> + If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of + appenders, then it won't be added again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.GetAppender(System.String)"> + <summary> + Looks for the appender with the specified name. + </summary> + <param name="name">The name of the appender to lookup.</param> + <returns> + The appender with the specified name, or <c>null</c>. + </returns> + <remarks> + <para> + Get the named appender attached to this appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.RemoveAllAppenders"> + <summary> + Removes all previously added appenders from this appender. + </summary> + <remarks> + <para> + This is useful when re-reading configuration information. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)"> + <summary> + Removes the specified appender from the list of appenders. + </summary> + <param name="appender">The appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </remarks> + </member> + <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)"> + <summary> + Removes the appender with the specified name from the list of appenders. + </summary> + <param name="name">The name of the appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </remarks> + </member> + <member name="F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl"> + <summary> + Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface + </summary> + </member> + <member name="P:log4net.Appender.ForwardingAppender.Appenders"> + <summary> + Gets the appenders contained in this appender as an + <see cref="T:System.Collections.ICollection"/>. + </summary> + <remarks> + If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/> + is returned. + </remarks> + <returns> + A collection of the appenders in this appender. + </returns> + </member> + <member name="T:log4net.Appender.LocalSyslogAppender"> + <summary> + Logs events to a local syslog service. + </summary> + <remarks> + <note> + This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>. + If these functions are not available on the local system then this appender will not work! + </note> + <para> + The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + </para> + <para> + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> to log via UDP. + </para> + <para> + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The facilities list is predefined + and cannot be extended. + </para> + <para> + An identifier is specified with each log message. This can be specified + by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>). + </para> + </remarks> + <author>Rob Lyon</author> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class. + </summary> + <remarks> + This instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class is set up to write + to a local syslog service. + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)"> + <summary> + Add a mapping of level to severity + </summary> + <param name="mapping">The mapping to add</param> + <remarks> + <para> + Adds a <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/> to this appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set. + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the event to a remote syslog daemon. + </para> + <para> + The format of the output will depend on the appender's layout. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.OnClose"> + <summary> + Close the syslog when the appender is closed + </summary> + <remarks> + <para> + Close the syslog when the appender is closed + </para> + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)"> + <summary> + Translates a log4net level to a syslog severity. + </summary> + <param name="level">A log4net level.</param> + <returns>A syslog severity.</returns> + <remarks> + <para> + Translates a log4net level to a syslog severity. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)"> + <summary> + Generate a syslog priority. + </summary> + <param name="facility">The syslog facility.</param> + <param name="severity">The syslog severity.</param> + <returns>A syslog priority.</returns> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.m_facility"> + <summary> + The facility. The default facility is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>. + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.m_identity"> + <summary> + The message identity + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity"> + <summary> + Marshaled handle to the identity string. We have to hold on to the + string as the <c>openlog</c> and <c>syslog</c> APIs just hold the + pointer to the ident and dereference it for each log message. + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.m_levelMapping"> + <summary> + Mapping from level object to syslog severity + </summary> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)"> + <summary> + Open connection to system logger. + </summary> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)"> + <summary> + Generate a log message. + </summary> + <remarks> + <para> + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to <c>"%s"</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.LocalSyslogAppender.closelog"> + <summary> + Close descriptor used to write to system logger. + </summary> + </member> + <member name="P:log4net.Appender.LocalSyslogAppender.Identity"> + <summary> + Message identity + </summary> + <remarks> + <para> + An identifier is specified with each log message. This can be specified + by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>). + </para> + </remarks> + </member> + <member name="P:log4net.Appender.LocalSyslogAppender.Facility"> + <summary> + Syslog facility + </summary> + <remarks> + Set to one of the <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The list of + facilities is predefined and cannot be extended. The default value + is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>. + </remarks> + </member> + <member name="P:log4net.Appender.LocalSyslogAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.LocalSyslogAppender.SyslogSeverity"> + <summary> + syslog severities + </summary> + <remarks> + <para> + The log4net Level maps to a syslog severity using the + <see cref="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)"/> method and the <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/> + class. The severity is set on <see cref="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity"/>. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency"> + <summary> + system is unusable + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert"> + <summary> + action must be taken immediately + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical"> + <summary> + critical conditions + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error"> + <summary> + error conditions + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning"> + <summary> + warning conditions + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice"> + <summary> + normal but significant condition + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational"> + <summary> + informational + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug"> + <summary> + debug-level messages + </summary> + </member> + <member name="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"> + <summary> + syslog facilities + </summary> + <remarks> + <para> + The syslog facility defines which subsystem the logging comes from. + This is set on the <see cref="P:log4net.Appender.LocalSyslogAppender.Facility"/> property. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel"> + <summary> + kernel messages + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"> + <summary> + random user-level messages + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail"> + <summary> + mail system + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons"> + <summary> + system daemons + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization"> + <summary> + security/authorization messages + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog"> + <summary> + messages generated internally by syslogd + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer"> + <summary> + line printer subsystem + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News"> + <summary> + network news subsystem + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp"> + <summary> + UUCP subsystem + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock"> + <summary> + clock (cron/at) daemon + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2"> + <summary> + security/authorization messages (private) + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp"> + <summary> + ftp daemon + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp"> + <summary> + NTP subsystem + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit"> + <summary> + log audit + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert"> + <summary> + log alert + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2"> + <summary> + clock daemon + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7"> + <summary> + reserved for local use + </summary> + </member> + <member name="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"> + <summary> + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + </summary> + <remarks> + <para> + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity"> + <summary> + The mapped syslog severity for the specified level + </summary> + <remarks> + <para> + Required property. + The mapped syslog severity for the specified level + </para> + </remarks> + </member> + <member name="T:log4net.Appender.MemoryAppender"> + <summary> + Stores logging events in an array. + </summary> + <remarks> + <para> + The memory appender stores all the logging events + that are appended in an in-memory array. + </para> + <para> + Use the <see cref="M:log4net.Appender.MemoryAppender.GetEvents"/> method to get + the current list of events that have been appended. + </para> + <para> + Use the <see cref="M:log4net.Appender.MemoryAppender.Clear"/> method to clear the + current list of events. + </para> + </remarks> + <author>Julian Biddle</author> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Appender.MemoryAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.MemoryAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.MemoryAppender.GetEvents"> + <summary> + Gets the events that have been logged. + </summary> + <returns>The events that have been logged</returns> + <remarks> + <para> + Gets the events that have been logged. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">the event to log</param> + <remarks> + <para>Stores the <paramref name="loggingEvent"/> in the events list.</para> + </remarks> + </member> + <member name="M:log4net.Appender.MemoryAppender.Clear"> + <summary> + Clear the list of events + </summary> + <remarks> + Clear the list of events + </remarks> + </member> + <member name="F:log4net.Appender.MemoryAppender.m_eventsList"> + <summary> + The list of events that have been appended. + </summary> + </member> + <member name="F:log4net.Appender.MemoryAppender.m_fixFlags"> + <summary> + Value indicating which fields in the event should be fixed + </summary> + <remarks> + By default all fields are fixed + </remarks> + </member> + <member name="P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData"> + <summary> + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + </summary> + <value> + <c>true</c> if the appender should only fix part of the logging event + data, otherwise <c>false</c>. The default is <c>false</c>. + </value> + <remarks> + <para> + Setting this property to <c>true</c> will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + </para> + <para> + See <see cref="M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)"/> for more information. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.MemoryAppender.Fix"> + <summary> + Gets or sets the fields that will be fixed in the event + </summary> + <remarks> + <para> + The logging event needs to have certain thread specific values + captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/> + for details. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.RemoteSyslogAppender"> + <summary> + Logs events to a remote syslog daemon. + </summary> + <remarks> + <para> + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + </para> + <para> + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + </para> + <para> + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + </para> + <para> + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The facilities list is predefined + and cannot be extended. + </para> + <para> + An identifier is specified with each log message. This can be specified + by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>). + </para> + </remarks> + <author>Rob Lyon</author> + <author>Nicko Cadell</author> + </member> + <member name="T:log4net.Appender.UdpAppender"> + <summary> + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an <see cref="T:System.Net.Sockets.UdpClient"/>. + </summary> + <remarks> + <para> + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + </para> + <para> + To view the logging results, a custom application can be developed that listens for logging + events. + </para> + <para> + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the <see cref="P:log4net.Appender.UdpAppender.Encoding"/> + property to specify the encoding to use. + </para> + </remarks> + <example> + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + <code lang="C#"> + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + </code> + <code lang="Visual Basic"> + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + </code> + <para> + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + </para> + <code lang="XML" escaped="true"> + <appender name="UdpAppender" type="log4net.Appender.UdpAppender"> + <remoteAddress value="224.0.0.1"/> + <remotePort value="8080"/> + <layout type="log4net.Layout.PatternLayout" value="%-5level %logger [%ndc] - %message%newline"/> + </appender> + </code> + </example> + <author>Gert Driesen</author> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.UdpAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.UdpAppender"/> class. + </summary> + <remarks> + The default constructor initializes all fields to their default values. + </remarks> + </member> + <member name="M:log4net.Appender.UdpAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set. + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> must be called again. + </para> + <para> + The appender will be ignored if no <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was specified or + an invalid remote or local TCP port number was specified. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was not specified.</exception> + <exception cref="T:System.ArgumentOutOfRangeException">The TCP port number assigned to <see cref="P:log4net.Appender.UdpAppender.LocalPort"/> or <see cref="P:log4net.Appender.UdpAppender.RemotePort"/> is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception> + </member> + <member name="M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Sends the event using an UDP datagram. + </para> + <para> + Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.UdpAppender.OnClose"> + <summary> + Closes the UDP connection and releases all resources associated with + this <see cref="T:log4net.Appender.UdpAppender"/> instance. + </summary> + <remarks> + <para> + Disables the underlying <see cref="T:System.Net.Sockets.UdpClient"/> and releases all managed + and unmanaged resources associated with the <see cref="T:log4net.Appender.UdpAppender"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.UdpAppender.InitializeClientConnection"> + <summary> + Initializes the underlying <see cref="T:System.Net.Sockets.UdpClient"/> connection. + </summary> + <remarks> + <para> + The underlying <see cref="T:System.Net.Sockets.UdpClient"/> is initialized and binds to the + port number from which you intend to communicate. + </para> + <para> + Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.UdpAppender.m_remoteAddress"> + <summary> + The IP address of the remote host or multicast group to which + the logging event will be sent. + </summary> + </member> + <member name="F:log4net.Appender.UdpAppender.m_remotePort"> + <summary> + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + </summary> + </member> + <member name="F:log4net.Appender.UdpAppender.m_remoteEndPoint"> + <summary> + The cached remote endpoint to which the logging events will be sent. + </summary> + </member> + <member name="F:log4net.Appender.UdpAppender.m_localPort"> + <summary> + The TCP port number from which the <see cref="T:System.Net.Sockets.UdpClient"/> will communicate. + </summary> + </member> + <member name="F:log4net.Appender.UdpAppender.m_client"> + <summary> + The <see cref="T:System.Net.Sockets.UdpClient"/> instance that will be used for sending the + logging events. + </summary> + </member> + <member name="F:log4net.Appender.UdpAppender.m_encoding"> + <summary> + The encoding to use for the packet. + </summary> + </member> + <member name="P:log4net.Appender.UdpAppender.RemoteAddress"> + <summary> + Gets or sets the IP address of the remote host or multicast group to which + the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event. + </summary> + <value> + The IP address of the remote host or multicast group to which the logging event + will be sent. + </value> + <remarks> + <para> + Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + </para> + <para> + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class <b>D</b> IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + </para> + <para> + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + </para> + <para> + <list type="table"> + <listheader> + <term>IP Address</term> + <description>Description</description> + </listheader> + <item> + <term>224.0.0.1</term> + <description> + <para> + Sends a message to all system on the subnet. + </para> + </description> + </item> + <item> + <term>224.0.0.2</term> + <description> + <para> + Sends a message to all routers on the subnet. + </para> + </description> + </item> + <item> + <term>224.0.0.12</term> + <description> + <para> + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + </para> + </description> + </item> + </list> + </para> + <para> + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the <A href="http://www.iana.org/assignments/multicast-addresses">IANA web site</A>. + </para> + <para> + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.UdpAppender.RemotePort"> + <summary> + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event. + </summary> + <value> + An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/> + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + </value> + <remarks> + The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will send messages to this TCP port number + on the remote host or multicast group. + </remarks> + <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception> + </member> + <member name="P:log4net.Appender.UdpAppender.LocalPort"> + <summary> + Gets or sets the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate. + </summary> + <value> + An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/> + indicating the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate. + </value> + <remarks> + <para> + The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will bind to this port for sending messages. + </para> + <para> + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + </para> + </remarks> + <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception> + </member> + <member name="P:log4net.Appender.UdpAppender.Encoding"> + <summary> + Gets or sets <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets. + </summary> + <value> + The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets. + </value> + <remarks> + <para> + The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.UdpAppender.Client"> + <summary> + Gets or sets the underlying <see cref="T:System.Net.Sockets.UdpClient"/>. + </summary> + <value> + The underlying <see cref="T:System.Net.Sockets.UdpClient"/>. + </value> + <remarks> + <see cref="T:log4net.Appender.UdpAppender"/> creates a <see cref="T:System.Net.Sockets.UdpClient"/> to send logging events + over a network. Classes deriving from <see cref="T:log4net.Appender.UdpAppender"/> can use this + property to get or set this <see cref="T:System.Net.Sockets.UdpClient"/>. Use the underlying <see cref="T:System.Net.Sockets.UdpClient"/> + returned from <see cref="P:log4net.Appender.UdpAppender.Client"/> if you require access beyond that which + <see cref="T:log4net.Appender.UdpAppender"/> provides. + </remarks> + </member> + <member name="P:log4net.Appender.UdpAppender.RemoteEndPoint"> + <summary> + Gets or sets the cached remote endpoint to which the logging events should be sent. + </summary> + <value> + The cached remote endpoint to which the logging events will be sent. + </value> + <remarks> + The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method will initialize the remote endpoint + with the values of the <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> and <see cref="P:log4net.Appender.UdpAppender.RemotePort"/> + properties. + </remarks> + </member> + <member name="P:log4net.Appender.UdpAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort"> + <summary> + Syslog port 514 + </summary> + </member> + <member name="M:log4net.Appender.RemoteSyslogAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class. + </summary> + <remarks> + This instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class is set up to write + to a remote syslog daemon. + </remarks> + </member> + <member name="M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)"> + <summary> + Add a mapping of level to severity + </summary> + <param name="mapping">The mapping to add</param> + <remarks> + <para> + Add a <see cref="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity"/> mapping to this appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + This method is called by the <see cref="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the event to a remote syslog daemon. + </para> + <para> + The format of the output will depend on the appender's layout. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RemoteSyslogAppender.ActivateOptions"> + <summary> + Initialize the options for this appender + </summary> + <remarks> + <para> + Initialize the level to syslog severity mappings set on this appender. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)"> + <summary> + Translates a log4net level to a syslog severity. + </summary> + <param name="level">A log4net level.</param> + <returns>A syslog severity.</returns> + <remarks> + <para> + Translates a log4net level to a syslog severity. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)"> + <summary> + Generate a syslog priority. + </summary> + <param name="facility">The syslog facility.</param> + <param name="severity">The syslog severity.</param> + <returns>A syslog priority.</returns> + <remarks> + <para> + Generate a syslog priority. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.m_facility"> + <summary> + The facility. The default facility is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>. + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.m_identity"> + <summary> + The message identity + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.m_levelMapping"> + <summary> + Mapping from level object to syslog severity + </summary> + </member> + <member name="P:log4net.Appender.RemoteSyslogAppender.Identity"> + <summary> + Message identity + </summary> + <remarks> + <para> + An identifier is specified with each log message. This can be specified + by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>). + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RemoteSyslogAppender.Facility"> + <summary> + Syslog facility + </summary> + <remarks> + Set to one of the <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The list of + facilities is predefined and cannot be extended. The default value + is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>. + </remarks> + </member> + <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity"> + <summary> + syslog severities + </summary> + <remarks> + <para> + The syslog severities. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency"> + <summary> + system is unusable + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert"> + <summary> + action must be taken immediately + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical"> + <summary> + critical conditions + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error"> + <summary> + error conditions + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning"> + <summary> + warning conditions + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice"> + <summary> + normal but significant condition + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational"> + <summary> + informational + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug"> + <summary> + debug-level messages + </summary> + </member> + <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"> + <summary> + syslog facilities + </summary> + <remarks> + <para> + The syslog facilities + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel"> + <summary> + kernel messages + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"> + <summary> + random user-level messages + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail"> + <summary> + mail system + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons"> + <summary> + system daemons + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization"> + <summary> + security/authorization messages + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog"> + <summary> + messages generated internally by syslogd + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer"> + <summary> + line printer subsystem + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News"> + <summary> + network news subsystem + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp"> + <summary> + UUCP subsystem + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock"> + <summary> + clock (cron/at) daemon + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2"> + <summary> + security/authorization messages (private) + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp"> + <summary> + ftp daemon + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp"> + <summary> + NTP subsystem + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit"> + <summary> + log audit + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert"> + <summary> + log alert + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2"> + <summary> + clock daemon + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6"> + <summary> + reserved for local use + </summary> + </member> + <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7"> + <summary> + reserved for local use + </summary> + </member> + <member name="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity"> + <summary> + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + </summary> + <remarks> + <para> + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity"> + <summary> + The mapped syslog severity for the specified level + </summary> + <remarks> + <para> + Required property. + The mapped syslog severity for the specified level + </para> + </remarks> + </member> + <member name="T:log4net.Appender.RemotingAppender"> + <summary> + Delivers logging events to a remote logging sink. + </summary> + <remarks> + <para> + This Appender is designed to deliver events to a remote sink. + That is any object that implements the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/> + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders <see cref="P:log4net.Appender.RemotingAppender.Sink"/> property.</para> + <para> + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure.</para> + <para> + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>), + if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/> + objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/> + thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then + the events will block in the thread pool manager until a thread is available.</para> + <para> + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless.</para> + <para> + If this appender is being closed because the <see cref="F:System.AppDomain.ProcessExit"/> + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a <see cref="F:System.AppDomain.ProcessExit"/> + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + <see cref="M:log4net.Core.LoggerManager.Shutdown"/> for details on how to shutdown + log4net programmatically.</para> + </remarks> + <seealso cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Daniel Cazzulino</author> + </member> + <member name="M:log4net.Appender.RemotingAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.RemotingAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RemotingAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])"> + <summary> + Send the contents of the buffer to the remote sink. + </summary> + <remarks> + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>), + if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/> + objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/> + thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then + the events will block in the thread pool manager until a thread is available. + </remarks> + <param name="events">The events to send.</param> + </member> + <member name="M:log4net.Appender.RemotingAppender.OnClose"> + <summary> + Override base class close. + </summary> + <remarks> + <para> + This method waits while there are queued work items. The events are + sent asynchronously using <see cref="T:System.Threading.ThreadPool"/> work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent.</para> + <para> + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless.</para> + <para> + If the appender is being closed because the <see cref="F:System.AppDomain.ProcessExit"/> + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a <see cref="F:System.AppDomain.ProcessExit"/> + event handler is allowed to run for.</para> + </remarks> + </member> + <member name="M:log4net.Appender.RemotingAppender.BeginAsyncSend"> + <summary> + A work item is being queued into the thread pool + </summary> + </member> + <member name="M:log4net.Appender.RemotingAppender.EndAsyncSend"> + <summary> + A work item from the thread pool has completed + </summary> + </member> + <member name="M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)"> + <summary> + Send the contents of the buffer to the remote sink. + </summary> + <remarks> + This method is designed to be used with the <see cref="T:System.Threading.ThreadPool"/>. + This method expects to be passed an array of <see cref="T:log4net.Core.LoggingEvent"/> + objects in the state param. + </remarks> + <param name="state">the logging events to send</param> + </member> + <member name="F:log4net.Appender.RemotingAppender.m_sinkUrl"> + <summary> + The URL of the remote sink. + </summary> + </member> + <member name="F:log4net.Appender.RemotingAppender.m_sinkObj"> + <summary> + The local proxy (.NET remoting) for the remote logging sink. + </summary> + </member> + <member name="F:log4net.Appender.RemotingAppender.m_queuedCallbackCount"> + <summary> + The number of queued callbacks currently waiting or executing + </summary> + </member> + <member name="F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent"> + <summary> + Event used to signal when there are no queued work items + </summary> + <remarks> + This event is set when there are no queued work items. In this + state it is safe to close the appender. + </remarks> + </member> + <member name="P:log4net.Appender.RemotingAppender.Sink"> + <summary> + Gets or sets the URL of the well-known object that will accept + the logging events. + </summary> + <value> + The well-known URL of the remote sink. + </value> + <remarks> + <para> + The URL of the remoting sink that will accept logging events. + The sink must implement the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/> + interface. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"> + <summary> + Interface used to deliver <see cref="T:log4net.Core.LoggingEvent"/> objects to a remote sink. + </summary> + <remarks> + This interface must be implemented by a remoting sink + if the <see cref="T:log4net.Appender.RemotingAppender"/> is to be used + to deliver logging events to the sink. + </remarks> + </member> + <member name="M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])"> + <summary> + Delivers logging events to the remote sink + </summary> + <param name="events">Array of events to log.</param> + <remarks> + <para> + Delivers logging events to the remote sink + </para> + </remarks> + </member> + <member name="T:log4net.Appender.RollingFileAppender"> + <summary> + Appender that rolls log files based on size or date or both. + </summary> + <remarks> + <para> + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the <see cref="P:log4net.Appender.RollingFileAppender.RollingStyle"/> property. + When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Size"/> the log file will be rolled + once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>. + When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Date"/> the log file will be rolled + once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property + is crossed. + When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/> the log file will be + rolled once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>. + When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + </para> + <para> + A of few additional optional features have been added: + <list type="bullet"> + <item>Attach date pattern for current log file <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/></item> + <item>Backup number increments for newer files <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/></item> + <item>Infinite number of backups by file size <see cref="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups"/></item> + </list> + </para> + + <note> + <para> + For large or infinite numbers of backup files a <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + </para> + <para> + When Date/Time based rolling is used setting <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> + to <see langword="true"/> will reduce the number of file renamings to few or none. + </para> + </note> + + <note type="caution"> + <para> + Changing <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> or <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + </para> + </note> + + <para> + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + </para> + + <para> + The <see cref="T:log4net.Appender.RollingFileAppender"/> extends the <see cref="T:log4net.Appender.FileAppender"/> and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + </para> + <para> + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + </para> + + <note type="caution"> + <para> + A maximum number of backup files when rolling on date/time boundaries is not supported. + </para> + </note> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Aspi Havewala</author> + <author>Douglas de la Torre</author> + <author>Edward Smit</author> + </member> + <member name="M:log4net.Appender.RollingFileAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.RollingFileAppender"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)"> + <summary> + Sets the quiet writer being used. + </summary> + <remarks> + This method can be overridden by sub classes. + </remarks> + <param name="writer">the writer to set</param> + </member> + <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + Write out a logging event. + </summary> + <param name="loggingEvent">the event to write to file.</param> + <remarks> + <para> + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])"> + <summary> + Write out an array of logging events. + </summary> + <param name="loggingEvents">the events to write to file.</param> + <remarks> + <para> + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend"> + <summary> + Performs any required rolling before outputting the next event + </summary> + <remarks> + <para> + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)"> + <summary> + Creates and opens the file for logging. If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> + is false then the fully qualified name is determined and used. + </summary> + <param name="fileName">the name of the file to open</param> + <param name="append">true to append to existing file</param> + <remarks> + <para>This method will ensure that the directory structure + for the <paramref name="fileName"/> specified exists.</para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)"> + <summary> + Get the current output file name + </summary> + <param name="fileName">the base file name</param> + <returns>the output file name</returns> + <remarks> + The output file name is based on the base fileName specified. + If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups"> + <summary> + Determines curSizeRollBackups (only within the current roll point) + </summary> + </member> + <member name="M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)"> + <summary> + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + </summary> + <param name="baseFileName"></param> + <returns></returns> + </member> + <member name="M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)"> + <summary> + Builds a list of filenames for all files matching the base filename plus a file + pattern. + </summary> + <param name="baseFilePath"></param> + <returns></returns> + </member> + <member name="M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing"> + <summary> + Initiates a roll over if needed for crossing a date boundary since the last run. + </summary> + </member> + <member name="M:log4net.Appender.RollingFileAppender.ExistingInit"> + <summary> + Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>. + </summary> + <remarks> + <para> + Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>. + The following is done + <list type="bullet"> + <item>determine curSizeRollBackups (only within the current roll point)</item> + <item>initiates a roll over if needed for crossing a date boundary since the last run.</item> + </list> + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)"> + <summary> + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + </summary> + <param name="baseFile"></param> + <param name="curFileName"></param> + </member> + <member name="M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)"> + <summary> + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + </summary> + <param name="baseFile"></param> + <param name="arrayFiles"></param> + </member> + <member name="M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)"> + <summary> + Calculates the RollPoint for the datePattern supplied. + </summary> + <param name="datePattern">the date pattern to calculate the check period for</param> + <returns>The RollPoint that is most accurate for the date pattern supplied</returns> + <remarks> + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> must be called again. + </para> + <para> + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls <see cref="M:log4net.Appender.RollingFileAppender.ExistingInit"/> to initialize + the current number of backups. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)"> + <summary> + Rollover the file(s) to date/time tagged file(s). + </summary> + <param name="fileIsOpen">set to true if the file to be rolled is currently open</param> + <remarks> + <para> + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)"> + <summary> + Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>. + </summary> + <param name="fromFile">Name of existing file to roll.</param> + <param name="toFile">New name for file.</param> + <remarks> + <para> + Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>. It + also checks for existence of target file and deletes if it does. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.FileExists(System.String)"> + <summary> + Test if a file exists at a specified path + </summary> + <param name="path">the path to the file</param> + <returns>true if the file exists</returns> + <remarks> + <para> + Test if a file exists at a specified path + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)"> + <summary> + Deletes the specified file if it exists. + </summary> + <param name="fileName">The file to delete.</param> + <remarks> + <para> + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.RollOverSize"> + <summary> + Implements file roll base on file size. + </summary> + <remarks> + <para> + If the maximum number of size based backups is reached + (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If <c>countDirection</c> < 0, then files + {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>} + are renamed to {<c>File.2</c>, ..., + <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is + renamed <c>File.1</c> and closed. + </para> + <para> + A new file is created to receive further log output. + </para> + <para> + If <c>maxSizeRollBackups</c> is equal to zero, then the + <c>File</c> is truncated with no backup files created. + </para> + <para> + If <c>maxSizeRollBackups</c> < 0, then <c>File</c> is + renamed if needed and no files are deleted. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)"> + <summary> + Implements file roll. + </summary> + <param name="baseFileName">the base name to rename</param> + <remarks> + <para> + If the maximum number of size based backups is reached + (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If <c>countDirection</c> < 0, then files + {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>} + are renamed to {<c>File.2</c>, ..., + <c>File.curSizeRollBackups</c>}. + </para> + <para> + If <c>maxSizeRollBackups</c> is equal to zero, then the + <c>File</c> is truncated with no backup files created. + </para> + <para> + If <c>maxSizeRollBackups</c> < 0, then <c>File</c> is + renamed if needed and no files are deleted. + </para> + <para> + This is called by <see cref="M:log4net.Appender.RollingFileAppender.RollOverSize"/> to rename the files. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)"> + <summary> + Get the start time of the next window for the current rollpoint + </summary> + <param name="currentDateTime">the current date</param> + <param name="rollPoint">the type of roll point we are working with</param> + <returns>the start time for the next roll point an interval after the currentDateTime date</returns> + <remarks> + <para> + Returns the date of the next roll point after the currentDateTime date passed to the method. + </para> + <para> + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_dateTime"> + <summary> + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_datePattern"> + <summary> + The date pattern. By default, the pattern is set to <c>".yyyy-MM-dd"</c> + meaning daily rollover. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_scheduledFilename"> + <summary> + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_nextCheck"> + <summary> + The timestamp when we shall next recompute the filename. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_now"> + <summary> + Holds date of last roll over + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_rollPoint"> + <summary> + The type of rolling done + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_maxFileSize"> + <summary> + The default maximum file size is 10MB + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups"> + <summary> + There is zero backup files by default + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups"> + <summary> + How many sized based backups have been made so far + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_countDirection"> + <summary> + The rolling file count direction. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_rollingStyle"> + <summary> + The rolling mode used in this appender. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_rollDate"> + <summary> + Cache flag set if we are rolling by date. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_rollSize"> + <summary> + Cache flag set if we are rolling by size. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_staticLogFileName"> + <summary> + Value indicating whether to always log to the same file. + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.m_baseFileName"> + <summary> + FileName provided in configuration. Used for rolling properly + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.s_date1970"> + <summary> + The 1st of January 1970 in UTC + </summary> + </member> + <member name="P:log4net.Appender.RollingFileAppender.DatePattern"> + <summary> + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + </summary> + <value> + The date pattern to be used for generating file names when rolling + over on date. + </value> + <remarks> + <para> + Takes a string in the same format as expected by + <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/>. + </para> + <para> + This property determines the rollover schedule when rolling over + on date. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups"> + <summary> + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + </summary> + <value> + The maximum number of backup files that are kept before the oldest is + erased. + </value> + <remarks> + <para> + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/>. + </para> + <para> + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> is used. + </para> + <para> + The maximum applies to <b>each</b> time based group of files and + <b>not</b> the total. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.MaxFileSize"> + <summary> + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + </summary> + <value> + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + </value> + <remarks> + <para> + This property is equivalent to <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/> except + that it is required for differentiating the setter taking a + <see cref="T:System.Int64"/> argument from the setter taking a <see cref="T:System.String"/> + argument. + </para> + <para> + The default maximum file size is 10MB (10*1024*1024). + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.MaximumFileSize"> + <summary> + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + </summary> + <value> + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + </value> + <remarks> + <para> + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + </para> + <para> + For example, the value "10KB" will be interpreted as 10240 bytes. + </para> + <para> + The default maximum file size is 10MB. + </para> + <para> + If you have the option to set the maximum file size programmatically + consider using the <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/> property instead as this + allows you to set the size in bytes as a <see cref="T:System.Int64"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.CountDirection"> + <summary> + Gets or sets the rolling file count direction. + </summary> + <value> + The rolling file count direction. + </value> + <remarks> + <para> + Indicates if the current file is the lowest numbered file or the + highest numbered file. + </para> + <para> + By default newer files have lower numbers (<see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + </para> + <para> + <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> >= 0 to reduce + rollover costs. + </para> + <para>The default file count direction is -1.</para> + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.RollingStyle"> + <summary> + Gets or sets the rolling style. + </summary> + <value>The rolling style.</value> + <remarks> + <para> + The default rolling style is <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/>. + </para> + <para> + When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> this appender's + <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is set to <c>false</c>, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.StaticLogFileName"> + <summary> + Gets or sets a value indicating whether to always log to + the same file. + </summary> + <value> + <c>true</c> if always should be logged to the same file, otherwise <c>false</c>. + </value> + <remarks> + <para> + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + </para> + <para> + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + </para> + </remarks> + </member> + <member name="T:log4net.Appender.RollingFileAppender.RollingMode"> + <summary> + Style of rolling to use + </summary> + <remarks> + <para> + Style of rolling to use + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Once"> + <summary> + Roll files once per program execution + </summary> + <remarks> + <para> + Roll files once per program execution. + Well really once each time this appender is + configured. + </para> + <para> + Setting this option also sets <c>AppendToFile</c> to + <c>false</c> on the <c>RollingFileAppender</c>, otherwise + this appender would just be a normal file appender. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Size"> + <summary> + Roll files based only on the size of the file + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Date"> + <summary> + Roll files based only on the date + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"> + <summary> + Roll files based on both the size and date of the file + </summary> + </member> + <member name="T:log4net.Appender.RollingFileAppender.RollPoint"> + <summary> + The code assumes that the following 'time' constants are in a increasing sequence. + </summary> + <remarks> + <para> + The code assumes that the following 'time' constants are in a increasing sequence. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint"> + <summary> + Roll the log not based on the date + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute"> + <summary> + Roll the log for each minute + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour"> + <summary> + Roll the log for each hour + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay"> + <summary> + Roll the log twice a day (midday and midnight) + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay"> + <summary> + Roll the log each day (midnight) + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek"> + <summary> + Roll the log each week + </summary> + </member> + <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth"> + <summary> + Roll the log each month + </summary> + </member> + <member name="T:log4net.Appender.RollingFileAppender.IDateTime"> + <summary> + This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>. + </summary> + <remarks> + This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>. + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + </remarks> + </member> + <member name="P:log4net.Appender.RollingFileAppender.IDateTime.Now"> + <summary> + Gets the <i>current</i> time. + </summary> + <value>The <i>current</i> time.</value> + <remarks> + <para> + Gets the <i>current</i> time. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.RollingFileAppender.DefaultDateTime"> + <summary> + Default implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time. + </summary> + </member> + <member name="P:log4net.Appender.RollingFileAppender.DefaultDateTime.Now"> + <summary> + Gets the <b>current</b> time. + </summary> + <value>The <b>current</b> time.</value> + <remarks> + <para> + Gets the <b>current</b> time. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.SmtpAppender"> + <summary> + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + </summary> + <remarks> + <para> + The number of logging events delivered in this e-mail depend on + the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The + <see cref="T:log4net.Appender.SmtpAppender"/> keeps only the last + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + </para> + <note type="caution"> + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + </note> + <para> + Authentication is supported by setting the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property to + either <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> or <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>. + If using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> authentication then the <see cref="P:log4net.Appender.SmtpAppender.Username"/> + and <see cref="P:log4net.Appender.SmtpAppender.Password"/> properties must also be set. + </para> + <para> + To set the SMTP server port use the <see cref="P:log4net.Appender.SmtpAppender.Port"/> property. The default port is 25. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Appender.SmtpAppender.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])"> + <summary> + Sends the contents of the cyclic buffer as an e-mail message. + </summary> + <param name="events">The logging events to send.</param> + </member> + <member name="M:log4net.Appender.SmtpAppender.SendEmail(System.String)"> + <summary> + Send the email message + </summary> + <param name="messageBody">the body text to include in the mail</param> + </member> + <member name="P:log4net.Appender.SmtpAppender.To"> + <summary> + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + </summary> + <value> + A semicolon-delimited list of e-mail addresses. + </value> + <remarks> + <para> + A semicolon-delimited list of recipient e-mail addresses. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.From"> + <summary> + Gets or sets the e-mail address of the sender. + </summary> + <value> + The e-mail address of the sender. + </value> + <remarks> + <para> + The e-mail address of the sender. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.Subject"> + <summary> + Gets or sets the subject line of the e-mail message. + </summary> + <value> + The subject line of the e-mail message. + </value> + <remarks> + <para> + The subject line of the e-mail message. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.SmtpHost"> + <summary> + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + </summary> + <value> + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + </value> + <remarks> + <para> + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.LocationInfo"> + <summary> + Obsolete + </summary> + <remarks> + Use the BufferingAppenderSkeleton Fix methods instead + </remarks> + <remarks> + <para> + Obsolete property. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.Authentication"> + <summary> + The mode to use to authentication with the SMTP server + </summary> + <remarks> + <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note> + <para> + Valid Authentication mode values are: <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>, + <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, and <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>. + The default value is <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>. When using + <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> you must specify the <see cref="P:log4net.Appender.SmtpAppender.Username"/> + and <see cref="P:log4net.Appender.SmtpAppender.Password"/> to use to authenticate. + When using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/> the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.Username"> + <summary> + The username to use to authenticate with the SMTP server + </summary> + <remarks> + <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note> + <para> + A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when + <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, + otherwise the username will be ignored. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.Password"> + <summary> + The password to use to authenticate with the SMTP server + </summary> + <remarks> + <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note> + <para> + A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when + <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, + otherwise the password will be ignored. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.Port"> + <summary> + The port on which the SMTP server is listening + </summary> + <remarks> + <note type="caution">Server Port is only available on the MS .NET 1.1 runtime.</note> + <para> + The port on which the SMTP server is listening. The default + port is <c>25</c>. The Port can only be changed when running on + the MS .NET 1.1 runtime. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.Priority"> + <summary> + Gets or sets the priority of the e-mail message + </summary> + <value> + One of the <see cref="T:System.Web.Mail.MailPriority"/> values. + </value> + <remarks> + <para> + Sets the priority of the e-mails generated by this + appender. The default priority is <see cref="F:System.Web.Mail.MailPriority.Normal"/>. + </para> + <para> + If you are using this appender to report errors then + you may want to set the priority to <see cref="F:System.Web.Mail.MailPriority.High"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.SmtpAppender.SmtpAuthentication"> + <summary> + Values for the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property. + </summary> + <remarks> + <para> + SMTP authentication modes. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"> + <summary> + No authentication + </summary> + </member> + <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"> + <summary> + Basic authentication. + </summary> + <remarks> + Requires a username and password to be supplied + </remarks> + </member> + <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"> + <summary> + Integrated authentication + </summary> + <remarks> + Uses the Windows credentials from the current thread or process to authenticate. + </remarks> + </member> + <member name="T:log4net.Appender.SmtpPickupDirAppender"> + <summary> + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>. This allows services such + as the IIS SMTP agent to manage sending the messages. + </summary> + <remarks> + <para> + The configuration for this appender is identical to that of the <c>SMTPAppender</c>, + except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify + <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>. + </para> + <para> + The number of logging events delivered in this e-mail depend on + the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The + <see cref="T:log4net.Appender.SmtpPickupDirAppender"/> keeps only the last + <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + </para> + </remarks> + <author>Niall Daley</author> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.SmtpPickupDirAppender.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])"> + <summary> + Sends the contents of the cyclic buffer as an e-mail message. + </summary> + <param name="events">The logging events to send.</param> + <remarks> + <para> + Sends the contents of the cyclic buffer as an e-mail message. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"> + <summary> + Activate the options on this appender. + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)"> + <summary> + Convert a path into a fully qualified path. + </summary> + <param name="path">The path to convert.</param> + <returns>The fully qualified path.</returns> + <remarks> + <para> + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.SmtpPickupDirAppender.m_securityContext"> + <summary> + The security context to use for privileged calls + </summary> + </member> + <member name="P:log4net.Appender.SmtpPickupDirAppender.To"> + <summary> + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + </summary> + <value> + A semicolon-delimited list of e-mail addresses. + </value> + <remarks> + <para> + A semicolon-delimited list of e-mail addresses. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpPickupDirAppender.From"> + <summary> + Gets or sets the e-mail address of the sender. + </summary> + <value> + The e-mail address of the sender. + </value> + <remarks> + <para> + The e-mail address of the sender. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpPickupDirAppender.Subject"> + <summary> + Gets or sets the subject line of the e-mail message. + </summary> + <value> + The subject line of the e-mail message. + </value> + <remarks> + <para> + The subject line of the e-mail message. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"> + <summary> + Gets or sets the path to write the messages to. + </summary> + <remarks> + <para> + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"> + <summary> + Gets or sets the <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory. + </summary> + <value> + The <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory. + </value> + <remarks> + <para> + Unless a <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> specified here for this appender + the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.TelnetAppender"> + <summary> + Appender that allows clients to connect via Telnet to receive log messages + </summary> + <remarks> + <para> + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + </para> + <para> + The default <see cref="P:log4net.Appender.TelnetAppender.Port"/> is 23 (the telnet port). + </para> + </remarks> + <author>Keith Long</author> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Appender.TelnetAppender.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.OnClose"> + <summary> + Overrides the parent method to close the socket handler + </summary> + <remarks> + <para> + Closes all the outstanding connections. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.ActivateOptions"> + <summary> + Initialize the appender based on the options set. + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> must be called again. + </para> + <para> + Create the socket handler and wait for connections + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + Writes the logging event to each connected client. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the logging event to each connected client. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.TelnetAppender.Port"> + <summary> + Gets or sets the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections. + </summary> + <value> + An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/> + indicating the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections. + </value> + <remarks> + <para> + The default value is 23 (the telnet port). + </para> + </remarks> + <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> + or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception> + </member> + <member name="P:log4net.Appender.TelnetAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.TelnetAppender.SocketHandler"> + <summary> + Helper class to manage connected clients + </summary> + <remarks> + <para> + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)"> + <summary> + Opens a new server port on <paramref ref="port"/> + </summary> + <param name="port">the local port to listen on for connections</param> + <remarks> + <para> + Creates a socket handler on the specified local server port. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)"> + <summary> + Sends a string message to each of the connected clients + </summary> + <param name="message">the text to send</param> + <remarks> + <para> + Sends a string message to each of the connected clients + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)"> + <summary> + Add a client to the internal clients list + </summary> + <param name="client">client to add</param> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)"> + <summary> + Remove a client from the internal clients list + </summary> + <param name="client">client to remove</param> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)"> + <summary> + Callback used to accept a connection on the server socket + </summary> + <param name="asyncResult">The result of the asynchronous operation</param> + <remarks> + <para> + On connection adds to the list of connections + if there are two many open connections you will be disconnected + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Dispose"> + <summary> + Close all network connections + </summary> + <remarks> + <para> + Make sure we close all network connections + </para> + </remarks> + </member> + <member name="P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections"> + <summary> + Test if this handler has active connections + </summary> + <value> + <c>true</c> if this handler has active connections + </value> + <remarks> + <para> + This property will be <c>true</c> while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient"> + <summary> + Class that represents a client connected to this handler + </summary> + <remarks> + <para> + Class that represents a client connected to this handler + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)"> + <summary> + Create this <see cref="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient"/> for the specified <see cref="T:System.Net.Sockets.Socket"/> + </summary> + <param name="socket">the client's socket</param> + <remarks> + <para> + Opens a stream writer on the socket. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)"> + <summary> + Write a string to the client + </summary> + <param name="message">string to send</param> + <remarks> + <para> + Write a string to the client + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose"> + <summary> + Cleanup the clients connection + </summary> + <remarks> + <para> + Close the socket connection. + </para> + </remarks> + </member> + <member name="T:log4net.Appender.TraceAppender"> + <summary> + Appends log events to the <see cref="T:System.Diagnostics.Trace"/> system. + </summary> + <remarks> + <para> + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + <see cref="T:System.Diagnostics.Trace"/> class for details on configuring the + trace system. + </para> + <para> + Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c> + method. The event's logger name is passed as the value for the category name to the Write method. + </para> + <para> + <b>Compact Framework</b><br/> + The Compact Framework does not support the <see cref="T:System.Diagnostics.Trace"/> + class for any operation except <c>Assert</c>. When using the Compact Framework this + appender will write to the <see cref="T:System.Diagnostics.Debug"/> system rather than + the Trace system. This appender will therefore behave like the <see cref="T:log4net.Appender.DebugAppender"/>. + </para> + </remarks> + <author>Douglas de la Torre</author> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Appender.TraceAppender.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/>. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/> + with a specified layout. + </summary> + <param name="layout">The layout to use with this appender.</param> + <remarks> + <para> + Obsolete constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)"> + <summary> + Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system. + </para> + </remarks> + </member> + <member name="F:log4net.Appender.TraceAppender.m_immediateFlush"> + <summary> + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + </summary> + <remarks> + <para> + Immediate flush is slower but ensures that each append request is + actually written. If <see cref="P:log4net.Appender.TraceAppender.ImmediateFlush"/> is set to + <c>false</c>, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + </para> + <para> + The default value is <c>true</c>.</para> + </remarks> + </member> + <member name="P:log4net.Appender.TraceAppender.ImmediateFlush"> + <summary> + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + </summary> + <remarks> + <para>The default behavior is to flush at the end of each + write. If the option is set to<c>false</c>, then the underlying + stream can defer writing to physical medium to a later time. + </para> + <para> + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + </para> + </remarks> + </member> + <member name="P:log4net.Appender.TraceAppender.RequiresLayout"> + <summary> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </summary> + <value><c>true</c></value> + <remarks> + <para> + This appender requires a <see cref="N:log4net.Layout"/> to be set. + </para> + </remarks> + </member> + <member name="T:log4net.Config.AliasDomainAttribute"> + <summary> + Assembly level attribute that specifies a domain to alias to this assembly's repository. + </summary> + <remarks> + <para> + <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b> + </para> + <para> + An assembly's logger repository is defined by its <see cref="T:log4net.Config.DomainAttribute"/>, + however this can be overridden by an assembly loaded before the target assembly. + </para> + <para> + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + </para> + <para> + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Config.AliasRepositoryAttribute"> + <summary> + Assembly level attribute that specifies a repository to alias to this assembly's repository. + </summary> + <remarks> + <para> + An assembly's logger repository is defined by its <see cref="T:log4net.Config.RepositoryAttribute"/>, + however this can be overridden by an assembly loaded before the target assembly. + </para> + <para> + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + </para> + <para> + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with + the specified repository to alias to this assembly's repository. + </summary> + <param name="name">The repository to alias to this assemby's repository.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with + the specified repository to alias to this assembly's repository. + </para> + </remarks> + </member> + <member name="P:log4net.Config.AliasRepositoryAttribute.Name"> + <summary> + Gets or sets the repository to alias to this assemby's repository. + </summary> + <value> + The repository to alias to this assemby's repository. + </value> + <remarks> + <para> + The name of the repository to alias to this assemby's repository. + </para> + </remarks> + </member> + <member name="M:log4net.Config.AliasDomainAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.AliasDomainAttribute"/> class with + the specified domain to alias to this assembly's repository. + </summary> + <param name="name">The domain to alias to this assemby's repository.</param> + <remarks> + <para> + Obsolete. Use <see cref="T:log4net.Config.AliasRepositoryAttribute"/> instead of <see cref="T:log4net.Config.AliasDomainAttribute"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Config.BasicConfigurator"> + <summary> + Use this class to quickly configure a <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>. + </summary> + <remarks> + <para> + Allows very simple programmatic configuration of log4net. + </para> + <para> + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + </para> + <para> + Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore + they would require that the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method + be called after the appenders properties have been configured. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.BasicConfigurator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.BasicConfigurator"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to prevent instantiation of this class. + </para> + </remarks> + </member> + <member name="M:log4net.Config.BasicConfigurator.Configure"> + <summary> + Initializes the log4net system with a default configuration. + </summary> + <remarks> + <para> + Initializes the log4net logging system using a <see cref="T:log4net.Appender.ConsoleAppender"/> + that will write to <c>Console.Out</c>. The log messages are + formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object + with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/> + layout style. + </para> + </remarks> + </member> + <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)"> + <summary> + Initializes the log4net system using the specified appender. + </summary> + <param name="appender">The appender to use to log all logging events.</param> + <remarks> + <para> + Initializes the log4net system using the specified appender. + </para> + </remarks> + </member> + <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)"> + <summary> + Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> with a default configuration. + </summary> + <param name="repository">The repository to configure.</param> + <remarks> + <para> + Initializes the specified repository using a <see cref="T:log4net.Appender.ConsoleAppender"/> + that will write to <c>Console.Out</c>. The log messages are + formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object + with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/> + layout style. + </para> + </remarks> + </member> + <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)"> + <summary> + Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender. + </summary> + <param name="repository">The repository to configure.</param> + <param name="appender">The appender to use to log all logging events.</param> + <remarks> + <para> + Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender. + </para> + </remarks> + </member> + <member name="T:log4net.Config.ConfiguratorAttribute"> + <summary> + Base class for all log4net configuration attributes. + </summary> + <remarks> + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)"> + <summary> + Constructor used by subclasses. + </summary> + <param name="priority">the ordering priority for this configurator</param> + <remarks> + <para> + The <paramref name="priority"/> is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + </para> + </remarks> + </member> + <member name="M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly. + </summary> + <param name="sourceAssembly">The assembly that this attribute was defined on.</param> + <param name="targetRepository">The repository to configure.</param> + <remarks> + <para> + Abstract method implemented by a subclass. When this method is called + the subclass should configure the <paramref name="targetRepository"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)"> + <summary> + Compare this instance to another ConfiguratorAttribute + </summary> + <param name="obj">the object to compare to</param> + <returns>see <see cref="M:System.IComparable.CompareTo(System.Object)"/></returns> + <remarks> + <para> + Compares the priorities of the two <see cref="T:log4net.Config.ConfiguratorAttribute"/> instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + </para> + </remarks> + </member> + <member name="T:log4net.Config.DomainAttribute"> + <summary> + Assembly level attribute that specifies the logging domain for the assembly. + </summary> + <remarks> + <para> + <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b> + </para> + <para> + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name + of the domain that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/> + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a <see cref="P:log4net.Config.RepositoryAttribute.Name"/> is not specified + then the assembly will be part of the default shared logging domain. + </para> + <para> + This attribute can only be specified on the assembly and may only be used + once per assembly. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Config.RepositoryAttribute"> + <summary> + Assembly level attribute that specifies the logging repository for the assembly. + </summary> + <remarks> + <para> + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name + of the repository that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/> + specifies the type of the <see cref="T:log4net.Repository.ILoggerRepository"/> object + to create for the assembly. If this attribute is not specified or a <see cref="P:log4net.Config.RepositoryAttribute.Name"/> + is not specified then the assembly will be part of the default shared logging repository. + </para> + <para> + This attribute can only be specified on the assembly and may only be used + once per assembly. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.RepositoryAttribute.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Config.RepositoryAttribute.#ctor(System.String)"> + <summary> + Initialize a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class + with the name of the repository. + </summary> + <param name="name">The name of the repository.</param> + <remarks> + <para> + Initialize the attribute with the name for the assembly's repository. + </para> + </remarks> + </member> + <member name="P:log4net.Config.RepositoryAttribute.Name"> + <summary> + Gets or sets the name of the logging repository. + </summary> + <value> + The string name to use as the name of the repository associated with this + assembly. + </value> + <remarks> + <para> + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + </para> + </remarks> + </member> + <member name="P:log4net.Config.RepositoryAttribute.RepositoryType"> + <summary> + Gets or sets the type of repository to create for this assembly. + </summary> + <value> + The type of repository to create for this assembly. + </value> + <remarks> + <para> + The type of the repository to create for the assembly. + The type must implement the <see cref="T:log4net.Repository.ILoggerRepository"/> + interface. + </para> + <para> + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/> of the first assembly to call into the + repository. + </para> + </remarks> + </member> + <member name="M:log4net.Config.DomainAttribute.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class. + </summary> + <remarks> + <para> + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + </para> + </remarks> + </member> + <member name="M:log4net.Config.DomainAttribute.#ctor(System.String)"> + <summary> + Initialize a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class + with the name of the domain. + </summary> + <param name="name">The name of the domain.</param> + <remarks> + <para> + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + </para> + </remarks> + </member> + <member name="T:log4net.Config.DOMConfigurator"> + <summary> + Use this class to initialize the log4net environment using an Xml tree. + </summary> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.DOMConfigurator.#ctor"> + <summary> + Private constructor + </summary> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure"> + <summary> + Automatically configures the log4net system based on the + application's configuration settings. + </summary> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + <c>log4net</c> that contains the configuration data. + </remarks> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)"> + <summary> + Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings + stored in the application's configuration file. + </summary> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + <c>log4net</c> that contains the configuration data. + </remarks> + <param name="repository">The repository to configure.</param> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)"> + <summary> + Configures log4net using a <c>log4net</c> element + </summary> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + Loads the log4net configuration from the XML element + supplied as <paramref name="element"/>. + </remarks> + <param name="element">The element to parse.</param> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML + element. + </summary> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + Loads the log4net configuration from the XML element + supplied as <paramref name="element"/>. + </remarks> + <param name="repository">The repository to configure.</param> + <param name="element">The element to parse.</param> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)"> + <summary> + Configures log4net using the specified configuration file. + </summary> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the log4net configuration data. + </para> + <para> + The log4net configuration file can possible be specified in the application's + configuration file (either <c>MyAppName.exe.config</c> for a + normal application on <c>Web.config</c> for an ASP.NET application). + </para> + <example> + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + </example> + <code lang="C#"> + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + </code> + <para> + In the <c>.config</c> file, the path to the log4net can be specified like this : + </para> + <code lang="XML" escaped="true"> + <configuration> + <appSettings> + <add key="log4net-config-file" value="log.config"/> + </appSettings> + </configuration> + </code> + </remarks> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)"> + <summary> + Configures log4net using the specified configuration file. + </summary> + <param name="configStream">A stream to load the XML configuration from.</param> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + The configuration data must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the log4net configuration data. + </para> + <para> + Note that this method will NOT close the stream parameter. + </para> + </remarks> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration + file. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The log4net configuration file can possible be specified in the application's + configuration file (either <c>MyAppName.exe.config</c> for a + normal application on <c>Web.config</c> for an ASP.NET application). + </para> + <example> + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + </example> + <code lang="C#"> + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + </code> + <para> + In the <c>.config</c> file, the path to the log4net can be specified like this : + </para> + <code lang="XML" escaped="true"> + <configuration> + <appSettings> + <add key="log4net-config-file" value="log.config"/> + </appSettings> + </configuration> + </code> + </remarks> + </member> + <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration + file. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configStream">The stream to load the XML configuration from.</param> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + The configuration data must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + Note that this method will NOT close the stream parameter. + </para> + </remarks> + </member> + <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)"> + <summary> + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + </summary> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/> + and depends on the behavior of that class. + </para> + <para> + For more information on how to configure log4net using + a separate configuration file, see <see cref="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)"/>. + </para> + </remarks> + <seealso cref="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)"/> + </member> + <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b> + </para> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/> + and depends on the behavior of that class. + </para> + <para> + For more information on how to configure log4net using + a separate configuration file, see <see cref="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)"/>. + </para> + </remarks> + <seealso cref="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)"/> + </member> + <member name="T:log4net.Config.DOMConfiguratorAttribute"> + <summary> + Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>. + </summary> + <remarks> + <para> + <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b> + </para> + <para> + This attribute may only be used at the assembly scope and can only + be used once per assembly. + </para> + <para> + Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/> + without calling one of the <see cref="M:log4net.Config.XmlConfigurator.Configure"/> + methods. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Config.XmlConfiguratorAttribute"> + <summary> + Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>. + </summary> + <remarks> + <para> + This attribute may only be used at the assembly scope and can only + be used once per assembly. + </para> + <para> + Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/> + without calling one of the <see cref="M:log4net.Config.XmlConfigurator.Configure"/> + methods. + </para> + <para> + If neither of the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> + properties are set the configuration is loaded from the application's .config file. + If set the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property takes priority over the + <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property. The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>. + The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>. + For example in a console application setting the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> to + <c>config</c> has the same effect as not specifying the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or + <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> properties. + </para> + <para> + The <see cref="P:log4net.Config.XmlConfiguratorAttribute.Watch"/> property can be set to cause the <see cref="T:log4net.Config.XmlConfigurator"/> + to watch the configuration file for changes. + </para> + <note> + <para> + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + <see cref="T:log4net.Core.LoggerManager"/> methods is made from the assembly with the configuration + attributes. + </para> + <para> + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the <see cref="M:log4net.Config.XmlConfigurator.Configure"/> method directly. + </para> + </note> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.XmlConfiguratorAttribute.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly. + </summary> + <param name="sourceAssembly">The assembly that this attribute was defined on.</param> + <param name="targetRepository">The repository to configure.</param> + <remarks> + <para> + Configure the repository using the <see cref="T:log4net.Config.XmlConfigurator"/>. + The <paramref name="targetRepository"/> specified must extend the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> + class otherwise the <see cref="T:log4net.Config.XmlConfigurator"/> will not be able to + configure it. + </para> + </remarks> + <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="repository"/> does not extend <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.</exception> + </member> + <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Attempt to load configuration from the local file system + </summary> + <param name="sourceAssembly">The assembly that this attribute was defined on.</param> + <param name="targetRepository">The repository to configure.</param> + </member> + <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Configure the specified repository using a <see cref="T:System.IO.FileInfo"/> + </summary> + <param name="targetRepository">The repository to configure.</param> + <param name="configFile">the FileInfo pointing to the config file</param> + </member> + <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Attempt to load configuration from a URI + </summary> + <param name="sourceAssembly">The assembly that this attribute was defined on.</param> + <param name="targetRepository">The repository to configure.</param> + </member> + <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"> + <summary> + Gets or sets the filename of the configuration file. + </summary> + <value> + The filename of the configuration file. + </value> + <remarks> + <para> + If specified, this is the name of the configuration file to use with + the <see cref="T:log4net.Config.XmlConfigurator"/>. This file path is relative to the + <b>application base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>). + </para> + <para> + The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"> + <summary> + Gets or sets the extension of the configuration file. + </summary> + <value> + The extension of the configuration file. + </value> + <remarks> + <para> + If specified this is the extension for the configuration file. + The path to the config file is built by using the <b>application + base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>), + the <b>assembly file name</b> and the config file extension. + </para> + <para> + If the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> is set to <c>MyExt</c> then + possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or + <c>MyClassLibrary.dll.MyExt</c>. + </para> + <para> + The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Config.XmlConfiguratorAttribute.Watch"> + <summary> + Gets or sets a value indicating whether to watch the configuration file. + </summary> + <value> + <c>true</c> if the configuration should be watched, <c>false</c> otherwise. + </value> + <remarks> + <para> + If this flag is specified and set to <c>true</c> then the framework + will watch the configuration file and will reload the config each time + the file is modified. + </para> + <para> + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + </para> + <note> + Watching configuration is not supported on the SSCLI. + </note> + </remarks> + </member> + <member name="T:log4net.Config.Log4NetConfigurationSectionHandler"> + <summary> + Class to register for the log4net section of the configuration file + </summary> + <remarks> + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + </remarks> + <example> + Example of registering the log4net section handler : + <code lang="XML" escaped="true"> + <configuration> + <configSections> + <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> + </configSections> + <log4net> + log4net configuration XML goes here + </log4net> + </configuration> + </code> + </example> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> class. + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)"> + <summary> + Parses the configuration section. + </summary> + <param name="parent">The configuration settings in a corresponding parent configuration section.</param> + <param name="configContext">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param> + <param name="section">The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</param> + <returns>The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</returns> + <remarks> + <para> + Returns the <see cref="T:System.Xml.XmlNode"/> containing the configuration data, + </para> + </remarks> + </member> + <member name="T:log4net.Config.PluginAttribute"> + <summary> + Assembly level attribute that specifies a plugin to attach to + the repository. + </summary> + <remarks> + <para> + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + <see cref="T:log4net.Plugin.IPlugin"/> interface. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Plugin.IPluginFactory"> + <summary> + Interface used to create plugins. + </summary> + <remarks> + <para> + Interface used to create a plugin. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Plugin.IPluginFactory.CreatePlugin"> + <summary> + Creates the plugin object. + </summary> + <returns>the new plugin instance</returns> + <remarks> + <para> + Create and return a new plugin instance. + </para> + </remarks> + </member> + <member name="M:log4net.Config.PluginAttribute.#ctor(System.String)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class + with the specified type. + </summary> + <param name="typeName">The type name of plugin to create.</param> + <remarks> + <para> + Create the attribute with the plugin type specified. + </para> + <para> + Where possible use the constructor that takes a <see cref="T:System.Type"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Config.PluginAttribute.#ctor(System.Type)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class + with the specified type. + </summary> + <param name="type">The type of plugin to create.</param> + <remarks> + <para> + Create the attribute with the plugin type specified. + </para> + </remarks> + </member> + <member name="M:log4net.Config.PluginAttribute.CreatePlugin"> + <summary> + Creates the plugin object defined by this attribute. + </summary> + <remarks> + <para> + Creates the instance of the <see cref="T:log4net.Plugin.IPlugin"/> object as + specified by this attribute. + </para> + </remarks> + <returns>The plugin object.</returns> + </member> + <member name="M:log4net.Config.PluginAttribute.ToString"> + <summary> + Returns a representation of the properties of this object. + </summary> + <remarks> + <para> + Overrides base class <see cref="M:System.Object.ToString"/> method to + return a representation of the properties of this object. + </para> + </remarks> + <returns>A representation of the properties of this object</returns> + </member> + <member name="P:log4net.Config.PluginAttribute.Type"> + <summary> + Gets or sets the type for the plugin. + </summary> + <value> + The type for the plugin. + </value> + <remarks> + <para> + The type for the plugin. + </para> + </remarks> + </member> + <member name="P:log4net.Config.PluginAttribute.TypeName"> + <summary> + Gets or sets the type name for the plugin. + </summary> + <value> + The type name for the plugin. + </value> + <remarks> + <para> + The type name for the plugin. + </para> + <para> + Where possible use the <see cref="P:log4net.Config.PluginAttribute.Type"/> property instead. + </para> + </remarks> + </member> + <member name="T:log4net.Config.SecurityContextProviderAttribute"> + <summary> + Assembly level attribute to configure the <see cref="T:log4net.Core.SecurityContextProvider"/>. + </summary> + <remarks> + <para> + This attribute may only be used at the assembly scope and can only + be used once per assembly. + </para> + <para> + Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/> + without calling one of the <see cref="M:log4net.Config.XmlConfigurator.Configure"/> + methods. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)"> + <summary> + Construct provider attribute with type specified + </summary> + <param name="providerType">the type of the provider to use</param> + <remarks> + <para> + The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/> + class. + </para> + </remarks> + </member> + <member name="M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Configures the SecurityContextProvider + </summary> + <param name="sourceAssembly">The assembly that this attribute was defined on.</param> + <param name="targetRepository">The repository to configure.</param> + <remarks> + <para> + Creates a provider instance from the <see cref="P:log4net.Config.SecurityContextProviderAttribute.ProviderType"/> specified. + Sets this as the default security context provider <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Config.SecurityContextProviderAttribute.ProviderType"> + <summary> + Gets or sets the type of the provider to use. + </summary> + <value> + the type of the provider to use. + </value> + <remarks> + <para> + The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/> + class. + </para> + </remarks> + </member> + <member name="T:log4net.Config.XmlConfigurator"> + <summary> + Use this class to initialize the log4net environment using an Xml tree. + </summary> + <remarks> + <para> + Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Config.XmlConfigurator.#ctor"> + <summary> + Private constructor + </summary> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure"> + <summary> + Automatically configures the log4net system based on the + application's configuration settings. + </summary> + <remarks> + <para> + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + <c>log4net</c> that contains the configuration data. + </para> + <para> + To use this method to configure log4net you must specify + the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section + handler for the <c>log4net</c> configuration section. See the + <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example. + </para> + </remarks> + <seealso cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)"> + <summary> + Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings + stored in the application's configuration file. + </summary> + <remarks> + <para> + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + <c>log4net</c> that contains the configuration data. + </para> + <para> + To use this method to configure log4net you must specify + the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section + handler for the <c>log4net</c> configuration section. See the + <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example. + </para> + </remarks> + <param name="repository">The repository to configure.</param> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)"> + <summary> + Configures log4net using a <c>log4net</c> element + </summary> + <remarks> + <para> + Loads the log4net configuration from the XML element + supplied as <paramref name="element"/>. + </para> + </remarks> + <param name="element">The element to parse.</param> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML + element. + </summary> + <remarks> + Loads the log4net configuration from the XML element + supplied as <paramref name="element"/>. + </remarks> + <param name="repository">The repository to configure.</param> + <param name="element">The element to parse.</param> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)"> + <summary> + Configures log4net using the specified configuration file. + </summary> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the log4net configuration data. + </para> + <para> + The log4net configuration file can possible be specified in the application's + configuration file (either <c>MyAppName.exe.config</c> for a + normal application on <c>Web.config</c> for an ASP.NET application). + </para> + <para> + The first element matching <c><configuration></c> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the <c>log4net</c> element otherwise .NET will + complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example: + <code lang="XML" escaped="true"> + <configSections> + <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> + </configSections> + </code> + </para> + <example> + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + </example> + <code lang="C#"> + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + </code> + <para> + In the <c>.config</c> file, the path to the log4net can be specified like this : + </para> + <code lang="XML" escaped="true"> + <configuration> + <appSettings> + <add key="log4net-config-file" value="log.config"/> + </appSettings> + </configuration> + </code> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(System.Uri)"> + <summary> + Configures log4net using the specified configuration URI. + </summary> + <param name="configUri">A URI to load the XML configuration from.</param> + <remarks> + <para> + The configuration data must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the log4net configuration data. + </para> + <para> + The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)"> + <summary> + Configures log4net using the specified configuration data stream. + </summary> + <param name="configStream">A stream to load the XML configuration from.</param> + <remarks> + <para> + The configuration data must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the log4net configuration data. + </para> + <para> + Note that this method will NOT close the stream parameter. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration + file. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The log4net configuration file can possible be specified in the application's + configuration file (either <c>MyAppName.exe.config</c> for a + normal application on <c>Web.config</c> for an ASP.NET application). + </para> + <para> + The first element matching <c><configuration></c> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the <c>log4net</c> element otherwise .NET will + complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example: + <code lang="XML" escaped="true"> + <configSections> + <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> + </configSections> + </code> + </para> + <example> + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + </example> + <code lang="C#"> + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + </code> + <para> + In the <c>.config</c> file, the path to the log4net can be specified like this : + </para> + <code lang="XML" escaped="true"> + <configuration> + <appSettings> + <add key="log4net-config-file" value="log.config"/> + </appSettings> + </configuration> + </code> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration + URI. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configUri">A URI to load the XML configuration from.</param> + <remarks> + <para> + The configuration data must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration + file. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configStream">The stream to load the XML configuration from.</param> + <remarks> + <para> + The configuration data must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + Note that this method will NOT close the stream parameter. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)"> + <summary> + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + </summary> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/> + and depends on the behavior of that class. + </para> + <para> + For more information on how to configure log4net using + a separate configuration file, see <see cref="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)"/>. + </para> + </remarks> + <seealso cref="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)"/> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configFile">The XML file to load the configuration from.</param> + <remarks> + <para> + The configuration file must be valid XML. It must contain + at least one element called <c>log4net</c> that holds + the configuration data. + </para> + <para> + The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/> + and depends on the behavior of that class. + </para> + <para> + For more information on how to configure log4net using + a separate configuration file, see <see cref="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)"/>. + </para> + </remarks> + <seealso cref="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)"/> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)"> + <summary> + Configures the specified repository using a <c>log4net</c> element. + </summary> + <param name="repository">The hierarchy to configure.</param> + <param name="element">The element to parse.</param> + <remarks> + <para> + Loads the log4net configuration from the XML element + supplied as <paramref name="element"/>. + </para> + <para> + This method is ultimately called by one of the Configure methods + to load the configuration from an <see cref="T:System.Xml.XmlElement"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"> + <summary> + Class used to watch config files. + </summary> + <remarks> + <para> + Uses the <see cref="T:System.IO.FileSystemWatcher"/> to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> time before delivering + the event notification. If any further <see cref="T:System.IO.FileSystemWatcher"/> + change notifications arrive while the timer is waiting it + is reset and waits again for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> to + elapse. + </para> + </remarks> + </member> + <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"> + <summary> + The default amount of time to wait after receiving notification + before reloading the config file. + </summary> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.StartWatching(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Watch a specified config file used to configure a repository + </summary> + <param name="repository">The repository to configure.</param> + <param name="configFile">The configuration file to watch.</param> + <remarks> + <para> + Watch a specified config file used to configure a repository + </para> + </remarks> + </member> + <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile"> + <summary> + Holds the FileInfo used to configure the XmlConfigurator + </summary> + </member> + <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository"> + <summary> + Holds the repository being configured. + </summary> + </member> + <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer"> + <summary> + The timer used to compress the notification events. + </summary> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class. + </summary> + <param name="repository">The repository to configure.</param> + <param name="configFile">The configuration file to watch.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)"> + <summary> + Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>. + </summary> + <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param> + <param name="e">The argument indicates the file that caused the event to be fired.</param> + <remarks> + <para> + This handler reloads the configuration from the file when the event is fired. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)"> + <summary> + Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>. + </summary> + <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param> + <param name="e">The argument indicates the file that caused the event to be fired.</param> + <remarks> + <para> + This handler reloads the configuration from the file when the event is fired. + </para> + </remarks> + </member> + <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)"> + <summary> + Called by the timer when the configuration has been updated. + </summary> + <param name="state">null</param> + </member> + <member name="T:log4net.Core.CompactRepositorySelector"> + <summary> + The implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface suitable + for use with the compact framework + </summary> + <remarks> + <para> + This <see cref="T:log4net.Core.IRepositorySelector"/> implementation is a simple + mapping between repository name and <see cref="T:log4net.Repository.ILoggerRepository"/> + object. + </para> + <para> + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the <c>DefaultRepositorySelector</c> + this selector does not examine the calling assembly for attributes. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="T:log4net.Core.IRepositorySelector"> + <summary> + Interface used by the <see cref="T:log4net.LogManager"/> to select the <see cref="T:log4net.Repository.ILoggerRepository"/>. + </summary> + <remarks> + <para> + The <see cref="T:log4net.LogManager"/> uses a <see cref="T:log4net.Core.IRepositorySelector"/> + to specify the policy for selecting the correct <see cref="T:log4net.Repository.ILoggerRepository"/> + to return to the caller. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)"> + <summary> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly. + </summary> + <param name="assembly">The assembly to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/></param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly.</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly. + </para> + <para> + How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/> + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.String)"> + <summary> + Gets the named <see cref="T:log4net.Repository.ILoggerRepository"/>. + </summary> + <param name="repositoryName">The name to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns> + <remarks> + Lookup a named <see cref="T:log4net.Repository.ILoggerRepository"/>. This is the repository created by + calling <see cref="M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)"/>. + </remarks> + </member> + <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)"> + <summary> + Creates a new repository for the assembly specified. + </summary> + <param name="assembly">The assembly to use to create the domain to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <returns>The repository created.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the domain + specified such that a call to <see cref="M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + <para> + How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/> + is made is not defined. The implementation may choose any method for + this association. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)"> + <summary> + Creates a new repository with the name specified. + </summary> + <param name="repositoryName">The name to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <returns>The repository created.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the name + specified such that a call to <see cref="M:log4net.Core.IRepositorySelector.GetRepository(System.String)"/> with the + same name will return the same repository instance. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)"> + <summary> + Test if a named repository exists + </summary> + <param name="repositoryName">the named repository to check</param> + <returns><c>true</c> if the repository exists</returns> + <remarks> + <para> + Test if a named repository exists. Use <see cref="M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)"/> + to create a new repository and <see cref="M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)"/> to retrieve + a repository. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IRepositorySelector.GetAllRepositories"> + <summary> + Gets an array of all currently defined repositories. + </summary> + <returns> + An array of the <see cref="T:log4net.Repository.ILoggerRepository"/> instances created by + this <see cref="T:log4net.Core.IRepositorySelector"/>.</returns> + <remarks> + <para> + Gets an array of all of the repositories created by this selector. + </para> + </remarks> + </member> + <member name="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"> + <summary> + Event to notify that a logger repository has been created. + </summary> + <value> + Event to notify that a logger repository has been created. + </value> + <remarks> + <para> + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which + holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)"> + <summary> + Create a new repository selector + </summary> + <param name="defaultRepositoryType">the type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param> + <remarks> + <para> + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException">throw if <paramref name="defaultRepositoryType"/> is null</exception> + <exception cref="T:System.ArgumentOutOfRangeException">throw if <paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/></exception> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)"> + <summary> + Get the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly + </summary> + <param name="assembly">not used</param> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/></returns> + <remarks> + <para> + The <paramref name="assembly"/> argument is not used. This selector does not create a + separate repository for each assembly. + </para> + <para> + As a named repository is not specified the default repository is + returned. The default repository is named <c>log4net-default-repository</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)"> + <summary> + Get the named <see cref="T:log4net.Repository.ILoggerRepository"/> + </summary> + <param name="repositoryName">the name of the repository to lookup</param> + <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns> + <remarks> + <para> + Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>. The default + repository is <c>log4net-default-repository</c>. Other repositories + must be created using the <see cref="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)"/>. + If the named repository does not exist an exception is thrown. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception> + <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> does not exist</exception> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)"> + <summary> + Create a new repository for the assembly specified + </summary> + <param name="assembly">not used</param> + <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param> + <returns>the repository created</returns> + <remarks> + <para> + The <paramref name="assembly"/> argument is not used. This selector does not create a + separate repository for each assembly. + </para> + <para> + If the <paramref name="repositoryType"/> is <c>null</c> then the + default repository type specified to the constructor is used. + </para> + <para> + As a named repository is not specified the default repository is + returned. The default repository is named <c>log4net-default-repository</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)"> + <summary> + Create a new repository for the repository specified + </summary> + <param name="repositoryName">the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/></param> + <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>. + If this param is null then the default repository type is used.</param> + <returns>the repository created</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)"/> with the + same repository specified will return the same repository instance. + </para> + <para> + If the named repository already exists an exception will be thrown. + </para> + <para> + If <paramref name="repositoryType"/> is <c>null</c> then the default + repository type specified to the constructor is used. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception> + <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> already exists</exception> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)"> + <summary> + Test if a named repository exists + </summary> + <param name="repositoryName">the named repository to check</param> + <returns><c>true</c> if the repository exists</returns> + <remarks> + <para> + Test if a named repository exists. Use <see cref="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)"/> + to create a new repository and <see cref="M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)"/> to retrieve + a repository. + </para> + </remarks> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.GetAllRepositories"> + <summary> + Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects + </summary> + <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns> + <remarks> + <para> + Gets an array of all of the repositories created by this selector. + </para> + </remarks> + </member> + <member name="M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)"> + <summary> + Notify the registered listeners that the repository has been created + </summary> + <param name="repository">The repository that has been created</param> + <remarks> + <para> + Raises the <event cref="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">LoggerRepositoryCreatedEvent</event> + event. + </para> + </remarks> + </member> + <member name="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent"> + <summary> + Event to notify that a logger repository has been created. + </summary> + <value> + Event to notify that a logger repository has been created. + </value> + <remarks> + <para> + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which + holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Core.DefaultRepositorySelector"> + <summary> + The default implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface. + </summary> + <remarks> + <para> + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)"> + <summary> + Creates a new repository selector. + </summary> + <param name="defaultRepositoryType">The type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param> + <remarks> + <para> + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException"><paramref name="defaultRepositoryType"/> is <see langword="null"/>.</exception> + <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)"> + <summary> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly. + </summary> + <param name="repositoryAssembly">The assembly use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <remarks> + <para> + The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and the repository + to create can be overridden by specifying the <see cref="T:log4net.Config.RepositoryAttribute"/> + attribute on the <paramref name="repositoryAssembly"/>. + </para> + <para> + The default values are to use the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> + implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the + <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository. + </para> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically configured using + any <see cref="T:log4net.Config.ConfiguratorAttribute"/> attributes defined on + the <paramref name="repositoryAssembly"/>. + </para> + </remarks> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly</returns> + <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)"> + <summary> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository. + </summary> + <param name="repositoryName">The repository to use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.</returns> + <remarks> + <para> + Returns the named repository. If <paramref name="repositoryName"/> is <c>null</c> + a <see cref="T:System.ArgumentNullException"/> is thrown. If the repository + does not exist a <see cref="T:log4net.Core.LogException"/> is thrown. + </para> + <para> + Use <see cref="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)"/> to create a repository. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception> + <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> does not exist.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)"> + <summary> + Create a new repository for the assembly specified + </summary> + <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <returns>The repository created.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + <para> + The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and + the repository to create can be overridden by specifying the + <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the + <paramref name="repositoryAssembly"/>. The default values are to use the + <paramref name="repositoryType"/> implementation of the + <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the + <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository. + </para> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically + configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/> + attributes defined on the <paramref name="repositoryAssembly"/>. + </para> + <para> + If a repository for the <paramref name="repositoryAssembly"/> already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in <paramref name="repositoryType"/>. + Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the + assembly may be used to override the repository type specified in + <paramref name="repositoryType"/>. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)"> + <summary> + Creates a new repository for the assembly specified. + </summary> + <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <param name="repositoryName">The name to assign to the created repository</param> + <param name="readAssemblyAttributes">Set to <c>true</c> to read and apply the assembly attributes</param> + <returns>The repository created.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + <para> + The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and + the repository to create can be overridden by specifying the + <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the + <paramref name="repositoryAssembly"/>. The default values are to use the + <paramref name="repositoryType"/> implementation of the + <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the + <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository. + </para> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically + configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/> + attributes defined on the <paramref name="repositoryAssembly"/>. + </para> + <para> + If a repository for the <paramref name="repositoryAssembly"/> already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in <paramref name="repositoryType"/>. + Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the + assembly may be used to override the repository type specified in + <paramref name="repositoryType"/>. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)"> + <summary> + Creates a new repository for the specified repository. + </summary> + <param name="repositoryName">The repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param> + <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>. + If this param is <see langword="null"/> then the default repository type is used.</param> + <returns>The new repository.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)"/> with the + same repository specified will return the same repository instance. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception> + <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> already exists.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)"> + <summary> + Test if a named repository exists + </summary> + <param name="repositoryName">the named repository to check</param> + <returns><c>true</c> if the repository exists</returns> + <remarks> + <para> + Test if a named repository exists. Use <see cref="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)"/> + to create a new repository and <see cref="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)"/> to retrieve + a repository. + </para> + </remarks> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.GetAllRepositories"> + <summary> + Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects + </summary> + <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns> + <remarks> + <para> + Gets an array of all of the repositories created by this selector. + </para> + </remarks> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)"> + <summary> + Aliases a repository to an existing repository. + </summary> + <param name="repositoryAlias">The repository to alias.</param> + <param name="repositoryTarget">The repository that the repository is aliased to.</param> + <remarks> + <para> + The repository specified will be aliased to the repository when created. + The repository must not already exist. + </para> + <para> + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + </para> + </remarks> + <exception cref="T:System.ArgumentNullException"> + <para><paramref name="repositoryAlias"/> is <see langword="null"/>.</para> + <para>-or-</para> + <para><paramref name="repositoryTarget"/> is <see langword="null"/>.</para> + </exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)"> + <summary> + Notifies the registered listeners that the repository has been created. + </summary> + <param name="repository">The repository that has been created.</param> + <remarks> + <para> + Raises the <see cref="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent"/> event. + </para> + </remarks> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)"> + <summary> + Gets the repository name and repository type for the specified assembly. + </summary> + <param name="assembly">The assembly that has a <see cref="T:log4net.Config.RepositoryAttribute"/>.</param> + <param name="repositoryName">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param> + <param name="repositoryType">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param> + <exception cref="T:System.ArgumentNullException"><paramref name="assembly"/> is <see langword="null"/>.</exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Configures the repository using information from the assembly. + </summary> + <param name="assembly">The assembly containing <see cref="T:log4net.Config.ConfiguratorAttribute"/> + attributes which define the configuration for the repository.</param> + <param name="repository">The repository to configure.</param> + <exception cref="T:System.ArgumentNullException"> + <para><paramref name="assembly"/> is <see langword="null"/>.</para> + <para>-or-</para> + <para><paramref name="repository"/> is <see langword="null"/>.</para> + </exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Loads the attribute defined plugins on the assembly. + </summary> + <param name="assembly">The assembly that contains the attributes.</param> + <param name="repository">The repository to add the plugins to.</param> + <exception cref="T:System.ArgumentNullException"> + <para><paramref name="assembly"/> is <see langword="null"/>.</para> + <para>-or-</para> + <para><paramref name="repository"/> is <see langword="null"/>.</para> + </exception> + </member> + <member name="M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)"> + <summary> + Loads the attribute defined aliases on the assembly. + </summary> + <param name="assembly">The assembly that contains the attributes.</param> + <param name="repository">The repository to alias to.</param> + <exception cref="T:System.ArgumentNullException"> + <para><paramref name="assembly"/> is <see langword="null"/>.</para> + <para>-or-</para> + <para><paramref name="repository"/> is <see langword="null"/>.</para> + </exception> + </member> + <member name="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent"> + <summary> + Event to notify that a logger repository has been created. + </summary> + <value> + Event to notify that a logger repository has been created. + </value> + <remarks> + <para> + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which + holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Core.ErrorCode"> + <summary> + Defined error codes that can be passed to the <see cref="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)"/> method. + </summary> + <remarks> + <para> + Values passed to the <see cref="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)"/> method. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Core.ErrorCode.GenericFailure"> + <summary> + A general error + </summary> + </member> + <member name="F:log4net.Core.ErrorCode.WriteFailure"> + <summary> + Error while writing output + </summary> + </member> + <member name="F:log4net.Core.ErrorCode.FlushFailure"> + <summary> + Failed to flush file + </summary> + </member> + <member name="F:log4net.Core.ErrorCode.CloseFailure"> + <summary> + Failed to close file + </summary> + </member> + <member name="F:log4net.Core.ErrorCode.FileOpenFailure"> + <summary> + Unable to open output file + </summary> + </member> + <member name="F:log4net.Core.ErrorCode.MissingLayout"> + <summary> + No layout specified + </summary> + </member> + <member name="F:log4net.Core.ErrorCode.AddressParseFailure"> + <summary> + Failed to parse address + </summary> + </member> + <member name="T:log4net.Core.IErrorHandler"> + <summary> + Appenders may delegate their error handling to an <see cref="T:log4net.Core.IErrorHandler"/>. + </summary> + <remarks> + <para> + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)"> + <summary> + Handles the error and information about the error condition is passed as + a parameter. + </summary> + <param name="message">The message associated with the error.</param> + <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param> + <param name="errorCode">The error code associated with the error.</param> + <remarks> + <para> + Handles the error and information about the error condition is passed as + a parameter. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)"> + <summary> + Prints the error message passed as a parameter. + </summary> + <param name="message">The message associated with the error.</param> + <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param> + <remarks> + <para> + See <see cref="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.IErrorHandler.Error(System.String)"> + <summary> + Prints the error message passed as a parameter. + </summary> + <param name="message">The message associated with the error.</param> + <remarks> + <para> + See <see cref="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Core.IFixingRequired"> + <summary> + Interface for objects that require fixing. + </summary> + <remarks> + <para> + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method. + </para> + <para> + When objects that implement this interface are stored + in the context properties maps <see cref="T:log4net.GlobalContext"/> + <see cref="P:log4net.GlobalContext.Properties"/> and <see cref="T:log4net.ThreadContext"/> + <see cref="P:log4net.ThreadContext.Properties"/> are fixed + (see <see cref="P:log4net.Core.LoggingEvent.Fix"/>) the <see cref="M:log4net.Core.IFixingRequired.GetFixedObject"/> + method will be called. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Core.IFixingRequired.GetFixedObject"> + <summary> + Get a portable version of this object + </summary> + <returns>the portable instance of this object</returns> + <remarks> + <para> + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + </para> + </remarks> + </member> + <member name="T:log4net.Core.ILogger"> + <summary> + Interface that all loggers implement + </summary> + <remarks> + <para> + This interface supports logging events and testing if a level + is enabled for logging. + </para> + <para> + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)"> + <summary> + This generic form is intended to be used by wrappers. + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <param name="level">The level of the message to be logged.</param> + <param name="message">The message object to log.</param> + <param name="exception">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param> + <remarks> + <para> + Generates a logging event for the specified <paramref name="level"/> using + the <paramref name="message"/> and <paramref name="exception"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)"> + <summary> + This is the most generic printing method that is intended to be used + by wrappers. + </summary> + <param name="logEvent">The event being logged.</param> + <remarks> + <para> + Logs the specified logging event through this logger. + </para> + </remarks> + </member> + <member name="M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)"> + <summary> + Checks if this logger is enabled for a given <see cref="T:log4net.Core.Level"/> passed as parameter. + </summary> + <param name="level">The level to check.</param> + <returns> + <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>. + </returns> + <remarks> + <para> + Test if this logger is going to log events of the specified <paramref name="level"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Core.ILogger.Name"> + <summary> + Gets the name of the logger. + </summary> + <value> + The name of the logger. + </value> + <remarks> + <para> + The name of this logger + </para> + </remarks> + </member> + <member name="P:log4net.Core.ILogger.Repository"> + <summary> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this + <c>Logger</c> instance is attached to. + </summary> + <value> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that this logger belongs to. + </value> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this + <c>Logger</c> instance is attached to. + </para> + </remarks> + </member> + <member name="T:log4net.Core.ILoggerWrapper"> + <summary> + Base interface for all wrappers + </summary> + <remarks> + <para> + Base interface for all wrappers. + </para> + <para> + All wrappers must implement this interface. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="P:log4net.Core.ILoggerWrapper.Logger"> + <summary> + Get the implementation behind this wrapper object. + </summary> + <value> + The <see cref="T:log4net.Core.ILogger"/> object that in implementing this object. + </value> + <remarks> + <para> + The <see cref="T:log4net.Core.ILogger"/> object that in implementing this + object. The <c>Logger</c> object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LoggerRepositoryCreationEventHandler"> + <summary> + Delegate used to handle logger repository creation event notifications + </summary> + <param name="sender">The <see cref="T:log4net.Core.IRepositorySelector"/> which created the repository.</param> + <param name="e">The <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> event args + that holds the <see cref="T:log4net.Repository.ILoggerRepository"/> instance that has been created.</param> + <remarks> + <para> + Delegate used to handle logger repository creation event notifications. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LoggerRepositoryCreationEventArgs"> + <summary> + Provides data for the <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/> event. + </summary> + <remarks> + <para> + A <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/> + event is raised every time a <see cref="T:log4net.Repository.ILoggerRepository"/> is created. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository"> + <summary> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created + </summary> + </member> + <member name="M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)"> + <summary> + Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified + </summary> + <param name="repository">the <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created</param> + <remarks> + <para> + Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository"> + <summary> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created + </summary> + <value> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created + </value> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created + </para> + </remarks> + </member> + <member name="T:log4net.Core.ITriggeringEventEvaluator"> + <summary> + Test if an <see cref="T:log4net.Core.LoggingEvent"/> triggers an action + </summary> + <remarks> + <para> + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + </para> + <para> + The action or behavior triggered is defined by the implementation. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"> + <summary> + Test if this event triggers the action + </summary> + <param name="loggingEvent">The event to check</param> + <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns> + <remarks> + <para> + Return <c>true</c> if this event triggers the action + </para> + </remarks> + </member> + <member name="T:log4net.Core.Level"> + <summary> + Defines the default set of levels recognized by the system. + </summary> + <remarks> + <para> + Each <see cref="T:log4net.Core.LoggingEvent"/> has an associated <see cref="T:log4net.Core.Level"/>. + </para> + <para> + Levels have a numeric <see cref="P:log4net.Core.Level.Value"/> that defines the relative + ordering between levels. Two Levels with the same <see cref="P:log4net.Core.Level.Value"/> + are deemed to be equivalent. + </para> + <para> + The levels that are recognized by log4net are set for each <see cref="T:log4net.Repository.ILoggerRepository"/> + and each repository can have different levels defined. The levels are stored + in the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> on the repository. Levels are + looked up by name from the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. + </para> + <para> + When logging at level INFO the actual level used is not <see cref="F:log4net.Core.Level.Info"/> but + the value of <c>LoggerRepository.LevelMap["INFO"]</c>. The default value for this is + <see cref="F:log4net.Core.Level.Info"/>, but this can be changed by reconfiguring the level map. + </para> + <para> + Each level has a <see cref="P:log4net.Core.Level.DisplayName"/> in addition to its <see cref="P:log4net.Core.Level.Name"/>. The + <see cref="P:log4net.Core.Level.DisplayName"/> is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + </para> + <para> + Some of the predefined levels recognized by the system are: + </para> + <list type="bullet"> + <item> + <description><see cref="F:log4net.Core.Level.Off"/>.</description> + </item> + <item> + <description><see cref="F:log4net.Core.Level.Fatal"/>.</description> + </item> + <item> + <description><see cref="F:log4net.Core.Level.Error"/>.</description> + </item> + <item> + <description><see cref="F:log4net.Core.Level.Warn"/>.</description> + </item> + <item> + <description><see cref="F:log4net.Core.Level.Info"/>.</description> + </item> + <item> + <description><see cref="F:log4net.Core.Level.Debug"/>.</description> + </item> + <item> + <description><see cref="F:log4net.Core.Level.All"/>.</description> + </item> + </list> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)"> + <summary> + Constructor + </summary> + <param name="level">Integer value for this level, higher values represent more severe levels.</param> + <param name="levelName">The string name of this level.</param> + <param name="displayName">The display name for this level. This may be localized or otherwise different from the name</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with + the specified level name and value. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String)"> + <summary> + Constructor + </summary> + <param name="level">Integer value for this level, higher values represent more severe levels.</param> + <param name="levelName">The string name of this level.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with + the specified level name and value. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.ToString"> + <summary> + Returns the <see cref="T:System.String"/> representation of the current + <see cref="T:log4net.Core.Level"/>. + </summary> + <returns> + A <see cref="T:System.String"/> representation of the current <see cref="T:log4net.Core.Level"/>. + </returns> + <remarks> + <para> + Returns the level <see cref="P:log4net.Core.Level.Name"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.Equals(System.Object)"> + <summary> + Compares levels. + </summary> + <param name="o">The object to compare against.</param> + <returns><c>true</c> if the objects are equal.</returns> + <remarks> + <para> + Compares the levels of <see cref="T:log4net.Core.Level"/> instances, and + defers to base class if the target object is not a <see cref="T:log4net.Core.Level"/> + instance. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.GetHashCode"> + <summary> + Returns a hash code + </summary> + <returns>A hash code for the current <see cref="T:log4net.Core.Level"/>.</returns> + <remarks> + <para> + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + </para> + <para> + Returns the hash code of the level <see cref="P:log4net.Core.Level.Value"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.CompareTo(System.Object)"> + <summary> + Compares this instance to a specified object and returns an + indication of their relative values. + </summary> + <param name="r">A <see cref="T:log4net.Core.Level"/> instance or <see langword="null"/> to compare with this instance.</param> + <returns> + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + <list type="table"> + <listheader> + <term>Value</term> + <description>Meaning</description> + </listheader> + <item> + <term>Less than zero</term> + <description>This instance is less than <paramref name="r"/>.</description> + </item> + <item> + <term>Zero</term> + <description>This instance is equal to <paramref name="r"/>.</description> + </item> + <item> + <term>Greater than zero</term> + <description> + <para>This instance is greater than <paramref name="r"/>.</para> + <para>-or-</para> + <para><paramref name="r"/> is <see langword="null"/>.</para> + </description> + </item> + </list> + </returns> + <remarks> + <para> + <paramref name="r"/> must be an instance of <see cref="T:log4net.Core.Level"/> + or <see langword="null"/>; otherwise, an exception is thrown. + </para> + </remarks> + <exception cref="T:System.ArgumentException"><paramref name="r"/> is not a <see cref="T:log4net.Core.Level"/>.</exception> + </member> + <member name="M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> + is greater than another specified <see cref="T:log4net.Core.Level"/>. + </summary> + <param name="l">A <see cref="T:log4net.Core.Level"/></param> + <param name="r">A <see cref="T:log4net.Core.Level"/></param> + <returns> + <c>true</c> if <paramref name="l"/> is greater than + <paramref name="r"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> + is less than another specified <see cref="T:log4net.Core.Level"/>. + </summary> + <param name="l">A <see cref="T:log4net.Core.Level"/></param> + <param name="r">A <see cref="T:log4net.Core.Level"/></param> + <returns> + <c>true</c> if <paramref name="l"/> is less than + <paramref name="r"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> + is greater than or equal to another specified <see cref="T:log4net.Core.Level"/>. + </summary> + <param name="l">A <see cref="T:log4net.Core.Level"/></param> + <param name="r">A <see cref="T:log4net.Core.Level"/></param> + <returns> + <c>true</c> if <paramref name="l"/> is greater than or equal to + <paramref name="r"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> + is less than or equal to another specified <see cref="T:log4net.Core.Level"/>. + </summary> + <param name="l">A <see cref="T:log4net.Core.Level"/></param> + <param name="r">A <see cref="T:log4net.Core.Level"/></param> + <returns> + <c>true</c> if <paramref name="l"/> is less than or equal to + <paramref name="r"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/> + objects have the same value. + </summary> + <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param> + <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param> + <returns> + <c>true</c> if the value of <paramref name="l"/> is the same as the + value of <paramref name="r"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/> + objects have different values. + </summary> + <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param> + <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param> + <returns> + <c>true</c> if the value of <paramref name="l"/> is different from + the value of <paramref name="r"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)"> + <summary> + Compares two specified <see cref="T:log4net.Core.Level"/> instances. + </summary> + <param name="l">The first <see cref="T:log4net.Core.Level"/> to compare.</param> + <param name="r">The second <see cref="T:log4net.Core.Level"/> to compare.</param> + <returns> + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + <list type="table"> + <listheader> + <term>Value</term> + <description>Meaning</description> + </listheader> + <item> + <term>Less than zero</term> + <description><paramref name="l"/> is less than <paramref name="r"/>.</description> + </item> + <item> + <term>Zero</term> + <description><paramref name="l"/> is equal to <paramref name="r"/>.</description> + </item> + <item> + <term>Greater than zero</term> + <description><paramref name="l"/> is greater than <paramref name="r"/>.</description> + </item> + </list> + </returns> + <remarks> + <para> + Compares two levels. + </para> + </remarks> + </member> + <member name="F:log4net.Core.Level.Off"> + <summary> + The <see cref="F:log4net.Core.Level.Off"/> level designates a higher level than all the rest. + </summary> + </member> + <member name="F:log4net.Core.Level.Emergency"> + <summary> + The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events. + System unusable, emergencies. + </summary> + </member> + <member name="F:log4net.Core.Level.Fatal"> + <summary> + The <see cref="F:log4net.Core.Level.Fatal"/> level designates very severe error events + that will presumably lead the application to abort. + </summary> + </member> + <member name="F:log4net.Core.Level.Alert"> + <summary> + The <see cref="F:log4net.Core.Level.Alert"/> level designates very severe error events. + Take immediate action, alerts. + </summary> + </member> + <member name="F:log4net.Core.Level.Critical"> + <summary> + The <see cref="F:log4net.Core.Level.Critical"/> level designates very severe error events. + Critical condition, critical. + </summary> + </member> + <member name="F:log4net.Core.Level.Severe"> + <summary> + The <see cref="F:log4net.Core.Level.Severe"/> level designates very severe error events. + </summary> + </member> + <member name="F:log4net.Core.Level.Error"> + <summary> + The <see cref="F:log4net.Core.Level.Error"/> level designates error events that might + still allow the application to continue running. + </summary> + </member> + <member name="F:log4net.Core.Level.Warn"> + <summary> + The <see cref="F:log4net.Core.Level.Warn"/> level designates potentially harmful + situations. + </summary> + </member> + <member name="F:log4net.Core.Level.Notice"> + <summary> + The <see cref="F:log4net.Core.Level.Notice"/> level designates informational messages + that highlight the progress of the application at the highest level. + </summary> + </member> + <member name="F:log4net.Core.Level.Info"> + <summary> + The <see cref="F:log4net.Core.Level.Info"/> level designates informational messages that + highlight the progress of the application at coarse-grained level. + </summary> + </member> + <member name="F:log4net.Core.Level.Debug"> + <summary> + The <see cref="F:log4net.Core.Level.Debug"/> level designates fine-grained informational + events that are most useful to debug an application. + </summary> + </member> + <member name="F:log4net.Core.Level.Fine"> + <summary> + The <see cref="F:log4net.Core.Level.Fine"/> level designates fine-grained informational + events that are most useful to debug an application. + </summary> + </member> + <member name="F:log4net.Core.Level.Trace"> + <summary> + The <see cref="F:log4net.Core.Level.Trace"/> level designates fine-grained informational + events that are most useful to debug an application. + </summary> + </member> + <member name="F:log4net.Core.Level.Finer"> + <summary> + The <see cref="F:log4net.Core.Level.Finer"/> level designates fine-grained informational + events that are most useful to debug an application. + </summary> + </member> + <member name="F:log4net.Core.Level.Verbose"> + <summary> + The <see cref="F:log4net.Core.Level.Verbose"/> level designates fine-grained informational + events that are most useful to debug an application. + </summary> + </member> + <member name="F:log4net.Core.Level.Finest"> + <summary> + The <see cref="F:log4net.Core.Level.Finest"/> level designates fine-grained informational + events that are most useful to debug an application. + </summary> + </member> + <member name="F:log4net.Core.Level.All"> + <summary> + The <see cref="F:log4net.Core.Level.All"/> level designates the lowest level possible. + </summary> + </member> + <member name="P:log4net.Core.Level.Name"> + <summary> + Gets the name of this level. + </summary> + <value> + The name of this level. + </value> + <remarks> + <para> + Gets the name of this level. + </para> + </remarks> + </member> + <member name="P:log4net.Core.Level.Value"> + <summary> + Gets the value of this level. + </summary> + <value> + The value of this level. + </value> + <remarks> + <para> + Gets the value of this level. + </para> + </remarks> + </member> + <member name="P:log4net.Core.Level.DisplayName"> + <summary> + Gets the display name of this level. + </summary> + <value> + The display name of this level. + </value> + <remarks> + <para> + Gets the display name of this level. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LevelCollection"> + <summary> + A strongly-typed collection of <see cref="T:log4net.Core.Level"/> objects. + </summary> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)"> + <summary> + Creates a read-only wrapper for a <c>LevelCollection</c> instance. + </summary> + <param name="list">list to create a readonly wrapper arround</param> + <returns> + A <c>LevelCollection</c> wrapper that is read-only. + </returns> + </member> + <member name="M:log4net.Core.LevelCollection.#ctor"> + <summary> + Initializes a new instance of the <c>LevelCollection</c> class + that is empty and has the default initial capacity. + </summary> + </member> + <member name="M:log4net.Core.LevelCollection.#ctor(System.Int32)"> + <summary> + Initializes a new instance of the <c>LevelCollection</c> class + that has the specified initial capacity. + </summary> + <param name="capacity"> + The number of elements that the new <c>LevelCollection</c> is initially capable of storing. + </param> + </member> + <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)"> + <summary> + Initializes a new instance of the <c>LevelCollection</c> class + that contains elements copied from the specified <c>LevelCollection</c>. + </summary> + <param name="c">The <c>LevelCollection</c> whose elements are copied to the new collection.</param> + </member> + <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])"> + <summary> + Initializes a new instance of the <c>LevelCollection</c> class + that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> array. + </summary> + <param name="a">The <see cref="T:log4net.Core.Level"/> array whose elements are copied to the new list.</param> + </member> + <member name="M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)"> + <summary> + Initializes a new instance of the <c>LevelCollection</c> class + that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> collection. + </summary> + <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements are copied to the new list.</param> + </member> + <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)"> + <summary> + Allow subclasses to avoid our default constructors + </summary> + <param name="tag"></param> + </member> + <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])"> + <summary> + Copies the entire <c>LevelCollection</c> to a one-dimensional + <see cref="T:log4net.Core.Level"/> array. + </summary> + <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param> + </member> + <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)"> + <summary> + Copies the entire <c>LevelCollection</c> to a one-dimensional + <see cref="T:log4net.Core.Level"/> array, starting at the specified index of the target array. + </summary> + <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param> + <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param> + </member> + <member name="M:log4net.Core.LevelCollection.Add(log4net.Core.Level)"> + <summary> + Adds a <see cref="T:log4net.Core.Level"/> to the end of the <c>LevelCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Core.Level"/> to be added to the end of the <c>LevelCollection</c>.</param> + <returns>The index at which the value has been added.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.Clear"> + <summary> + Removes all elements from the <c>LevelCollection</c>. + </summary> + </member> + <member name="M:log4net.Core.LevelCollection.Clone"> + <summary> + Creates a shallow copy of the <see cref="T:log4net.Core.LevelCollection"/>. + </summary> + <returns>A new <see cref="T:log4net.Core.LevelCollection"/> with a shallow copy of the collection data.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)"> + <summary> + Determines whether a given <see cref="T:log4net.Core.Level"/> is in the <c>LevelCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Core.Level"/> to check for.</param> + <returns><c>true</c> if <paramref name="item"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)"> + <summary> + Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Core.Level"/> + in the <c>LevelCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Core.Level"/> to locate in the <c>LevelCollection</c>.</param> + <returns> + The zero-based index of the first occurrence of <paramref name="item"/> + in the entire <c>LevelCollection</c>, if found; otherwise, -1. + </returns> + </member> + <member name="M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)"> + <summary> + Inserts an element into the <c>LevelCollection</c> at the specified index. + </summary> + <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param> + <param name="item">The <see cref="T:log4net.Core.Level"/> to insert.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)"> + <summary> + Removes the first occurrence of a specific <see cref="T:log4net.Core.Level"/> from the <c>LevelCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Core.Level"/> to remove from the <c>LevelCollection</c>.</param> + <exception cref="T:System.ArgumentException"> + The specified <see cref="T:log4net.Core.Level"/> was not found in the <c>LevelCollection</c>. + </exception> + </member> + <member name="M:log4net.Core.LevelCollection.RemoveAt(System.Int32)"> + <summary> + Removes the element at the specified index of the <c>LevelCollection</c>. + </summary> + <param name="index">The zero-based index of the element to remove.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Core.LevelCollection.GetEnumerator"> + <summary> + Returns an enumerator that can iterate through the <c>LevelCollection</c>. + </summary> + <returns>An <see cref="T:log4net.Core.LevelCollection.Enumerator"/> for the entire <c>LevelCollection</c>.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)"> + <summary> + Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>. + </summary> + <param name="x">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param> + <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])"> + <summary> + Adds the elements of a <see cref="T:log4net.Core.Level"/> array to the current <c>LevelCollection</c>. + </summary> + <param name="x">The <see cref="T:log4net.Core.Level"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param> + <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)"> + <summary> + Adds the elements of a <see cref="T:log4net.Core.Level"/> collection to the current <c>LevelCollection</c>. + </summary> + <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param> + <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns> + </member> + <member name="M:log4net.Core.LevelCollection.TrimToSize"> + <summary> + Sets the capacity to the actual number of elements. + </summary> + </member> + <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)"> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)"> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para> + </exception> + </member> + <member name="P:log4net.Core.LevelCollection.Count"> + <summary> + Gets the number of elements actually contained in the <c>LevelCollection</c>. + </summary> + </member> + <member name="P:log4net.Core.LevelCollection.IsSynchronized"> + <summary> + Gets a value indicating whether access to the collection is synchronized (thread-safe). + </summary> + <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value> + </member> + <member name="P:log4net.Core.LevelCollection.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the collection. + </summary> + </member> + <member name="P:log4net.Core.LevelCollection.Item(System.Int32)"> + <summary> + Gets or sets the <see cref="T:log4net.Core.Level"/> at the specified index. + </summary> + <param name="index">The zero-based index of the element to get or set.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para> + </exception> + </member> + <member name="P:log4net.Core.LevelCollection.IsFixedSize"> + <summary> + Gets a value indicating whether the collection has a fixed size. + </summary> + <value>true if the collection has a fixed size; otherwise, false. The default is false</value> + </member> + <member name="P:log4net.Core.LevelCollection.IsReadOnly"> + <summary> + Gets a value indicating whether the IList is read-only. + </summary> + <value>true if the collection is read-only; otherwise, false. The default is false</value> + </member> + <member name="P:log4net.Core.LevelCollection.Capacity"> + <summary> + Gets or sets the number of elements the <c>LevelCollection</c> can contain. + </summary> + </member> + <member name="T:log4net.Core.LevelCollection.ILevelCollectionEnumerator"> + <summary> + Supports type-safe iteration over a <see cref="T:log4net.Core.LevelCollection"/>. + </summary> + </member> + <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext"> + <summary> + Advances the enumerator to the next element in the collection. + </summary> + <returns> + <c>true</c> if the enumerator was successfully advanced to the next element; + <c>false</c> if the enumerator has passed the end of the collection. + </returns> + <exception cref="T:System.InvalidOperationException"> + The collection was modified after the enumerator was created. + </exception> + </member> + <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset"> + <summary> + Sets the enumerator to its initial position, before the first element in the collection. + </summary> + </member> + <member name="P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current"> + <summary> + Gets the current element in the collection. + </summary> + </member> + <member name="T:log4net.Core.LevelCollection.Tag"> + <summary> + Type visible only to our subclasses + Used to access protected constructor + </summary> + </member> + <member name="F:log4net.Core.LevelCollection.Tag.Default"> + <summary> + A value + </summary> + </member> + <member name="T:log4net.Core.LevelCollection.Enumerator"> + <summary> + Supports simple iteration over a <see cref="T:log4net.Core.LevelCollection"/>. + </summary> + </member> + <member name="M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)"> + <summary> + Initializes a new instance of the <c>Enumerator</c> class. + </summary> + <param name="tc"></param> + </member> + <member name="M:log4net.Core.LevelCollection.Enumerator.MoveNext"> + <summary> + Advances the enumerator to the next element in the collection. + </summary> + <returns> + <c>true</c> if the enumerator was successfully advanced to the next element; + <c>false</c> if the enumerator has passed the end of the collection. + </returns> + <exception cref="T:System.InvalidOperationException"> + The collection was modified after the enumerator was created. + </exception> + </member> + <member name="M:log4net.Core.LevelCollection.Enumerator.Reset"> + <summary> + Sets the enumerator to its initial position, before the first element in the collection. + </summary> + </member> + <member name="P:log4net.Core.LevelCollection.Enumerator.Current"> + <summary> + Gets the current element in the collection. + </summary> + </member> + <member name="T:log4net.Core.LevelEvaluator"> + <summary> + An evaluator that triggers at a threshold level + </summary> + <remarks> + <para> + This evaluator will trigger if the level of the event + passed to <see cref="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"/> + is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/> + level. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Core.LevelEvaluator.m_threshold"> + <summary> + The threshold for triggering + </summary> + </member> + <member name="M:log4net.Core.LevelEvaluator.#ctor"> + <summary> + Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold. + </summary> + <remarks> + <para> + Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold. + </para> + <para> + This evaluator will trigger if the level of the event + passed to <see cref="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"/> + is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/> + level. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)"> + <summary> + Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold. + </summary> + <param name="threshold">the threshold to trigger at</param> + <remarks> + <para> + Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold. + </para> + <para> + This evaluator will trigger if the level of the event + passed to <see cref="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"/> + is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/> + level. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"> + <summary> + Is this <paramref name="loggingEvent"/> the triggering event? + </summary> + <param name="loggingEvent">The event to check</param> + <returns>This method returns <c>true</c>, if the event level + is equal or higher than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>. + Otherwise it returns <c>false</c></returns> + <remarks> + <para> + This evaluator will trigger if the level of the event + passed to <see cref="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"/> + is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/> + level. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LevelEvaluator.Threshold"> + <summary> + the threshold to trigger at + </summary> + <value> + The <see cref="T:log4net.Core.Level"/> that will cause this evaluator to trigger + </value> + <remarks> + <para> + This evaluator will trigger if the level of the event + passed to <see cref="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)"/> + is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/> + level. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LevelMap"> + <summary> + Mapping between string name and Level object + </summary> + <remarks> + <para> + Mapping between string name and <see cref="T:log4net.Core.Level"/> object. + This mapping is held separately for each <see cref="T:log4net.Repository.ILoggerRepository"/>. + The level name is case insensitive. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Core.LevelMap.m_mapName2Level"> + <summary> + Mapping from level name to Level object. The + level name is case insensitive + </summary> + </member> + <member name="M:log4net.Core.LevelMap.#ctor"> + <summary> + Construct the level map + </summary> + <remarks> + <para> + Construct the level map. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LevelMap.Clear"> + <summary> + Clear the internal maps of all levels + </summary> + <remarks> + <para> + Clear the internal maps of all levels + </para> + </remarks> + </member> + <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32)"> + <summary> + Create a new Level and add it to the map + </summary> + <param name="name">the string to display for the Level</param> + <param name="value">the level value to give to the Level</param> + <remarks> + <para> + Create a new Level and add it to the map + </para> + </remarks> + <seealso cref="M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)"/> + </member> + <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)"> + <summary> + Create a new Level and add it to the map + </summary> + <param name="name">the string to display for the Level</param> + <param name="value">the level value to give to the Level</param> + <param name="displayName">the display name to give to the Level</param> + <remarks> + <para> + Create a new Level and add it to the map + </para> + </remarks> + </member> + <member name="M:log4net.Core.LevelMap.Add(log4net.Core.Level)"> + <summary> + Add a Level to the map + </summary> + <param name="level">the Level to add</param> + <remarks> + <para> + Add a Level to the map + </para> + </remarks> + </member> + <member name="M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)"> + <summary> + Lookup a named level from the map + </summary> + <param name="defaultLevel">the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added</param> + <returns>the level in the map with the name specified</returns> + <remarks> + <para> + Lookup a named level from the map. The name of the level to lookup is taken + from the <see cref="P:log4net.Core.Level.Name"/> property of the <paramref name="defaultLevel"/> + argument. + </para> + <para> + If no level with the specified name is found then the + <paramref name="defaultLevel"/> argument is added to the level map + and returned. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LevelMap.Item(System.String)"> + <summary> + Lookup a <see cref="T:log4net.Core.Level"/> by name + </summary> + <param name="name">The name of the Level to lookup</param> + <returns>a Level from the map with the name specified</returns> + <remarks> + <para> + Returns the <see cref="T:log4net.Core.Level"/> from the + map with the name specified. If the no level is + found then <c>null</c> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LevelMap.AllLevels"> + <summary> + Return all possible levels as a list of Level objects. + </summary> + <returns>all possible levels as a list of Level objects</returns> + <remarks> + <para> + Return all possible levels as a list of Level objects. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LocationInfo"> + <summary> + The internal representation of caller location information. + </summary> + <remarks> + <para> + This class uses the <c>System.Diagnostics.StackTrace</c> class to generate + a call stack. The caller's information is then extracted from this stack. + </para> + <para> + The <c>System.Diagnostics.StackTrace</c> class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + </para> + <para> + The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds: + </para> + <para> + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + </para> + <para> + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Core.LocationInfo.NA"> + <summary> + When location information is not available the constant + <c>NA</c> is returned. Current value of this string + constant is <b>?</b>. + </summary> + </member> + <member name="M:log4net.Core.LocationInfo.#ctor(System.Type)"> + <summary> + Constructor + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LocationInfo"/> + class based on the current thread. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)"> + <summary> + Constructor + </summary> + <param name="className">The fully qualified class name.</param> + <param name="methodName">The method name.</param> + <param name="fileName">The file name.</param> + <param name="lineNumber">The line number of the method within the file.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LocationInfo"/> + class with the specified data. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LocationInfo.ClassName"> + <summary> + Gets the fully qualified class name of the caller making the logging + request. + </summary> + <value> + The fully qualified class name of the caller making the logging + request. + </value> + <remarks> + <para> + Gets the fully qualified class name of the caller making the logging + request. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LocationInfo.FileName"> + <summary> + Gets the file name of the caller. + </summary> + <value> + The file name of the caller. + </value> + <remarks> + <para> + Gets the file name of the caller. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LocationInfo.LineNumber"> + <summary> + Gets the line number of the caller. + </summary> + <value> + The line number of the caller. + </value> + <remarks> + <para> + Gets the line number of the caller. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LocationInfo.MethodName"> + <summary> + Gets the method name of the caller. + </summary> + <value> + The method name of the caller. + </value> + <remarks> + <para> + Gets the method name of the caller. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LocationInfo.FullInfo"> + <summary> + Gets all available caller information + </summary> + <value> + All available caller information, in the format + <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c> + </value> + <remarks> + <para> + Gets all available caller information, in the format + <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c> + </para> + </remarks> + </member> + <member name="T:log4net.Core.LoggerManager"> + <summary> + Static manager that controls the creation of repositories + </summary> + <remarks> + <para> + Static manager that controls the creation of repositories + </para> + <para> + This class is used by the wrapper managers (e.g. <see cref="T:log4net.LogManager"/>) + to provide access to the <see cref="T:log4net.Core.ILogger"/> objects. + </para> + <para> + This manager also holds the <see cref="T:log4net.Core.IRepositorySelector"/> that is used to + lookup and create repositories. The selector can be set either programmatically using + the <see cref="P:log4net.Core.LoggerManager.RepositorySelector"/> property, or by setting the <c>log4net.RepositorySelector</c> + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.LoggerManager.#ctor"> + <summary> + Private constructor to prevent instances. Only static methods should be used. + </summary> + <remarks> + <para> + Private constructor to prevent instances. Only static methods should be used. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.#cctor"> + <summary> + Hook the shutdown event + </summary> + <remarks> + <para> + On the full .NET runtime, the static constructor hooks up the + <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. + These are used to shutdown the log4net system as the application exits. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.RegisterAppDomainEvents"> + <summary> + Register for ProcessExit and DomainUnload events on the AppDomain + </summary> + <remarks> + <para> + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)"> + <summary> + Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <param name="repository">the repository to lookup in</param> + <returns>Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the <paramref name="repository"/> argument. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)"> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns> + </member> + <member name="M:log4net.Core.LoggerManager.GetRepository(System.String)"> + <summary> + Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <param name="repository">the repository to lookup in</param> + <returns>Return the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the <paramref name="repository"/> argument. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)"> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns> + <remarks> + <para> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.Exists(System.String,System.String)"> + <summary> + Returns the named logger if it exists. + </summary> + <param name="repository">The repository to lookup in.</param> + <param name="name">The fully qualified logger name to look for.</param> + <returns> + The logger found, or <c>null</c> if the named logger does not exist in the + specified repository. + </returns> + <remarks> + <para> + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + <c>null</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)"> + <summary> + Returns the named logger if it exists. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <param name="name">The fully qualified logger name to look for.</param> + <returns> + The logger found, or <c>null</c> if the named logger does not exist in the + specified assembly's repository. + </returns> + <remarks> + <para> + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + <c>null</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)"> + <summary> + Returns all the currently defined loggers in the specified repository. + </summary> + <param name="repository">The repository to lookup in.</param> + <returns>All the defined loggers.</returns> + <remarks> + <para> + The root logger is <b>not</b> included in the returned array. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)"> + <summary> + Returns all the currently defined loggers in the specified assembly's repository. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <returns>All the defined loggers.</returns> + <remarks> + <para> + The root logger is <b>not</b> included in the returned array. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)"> + <summary> + Retrieves or creates a named logger. + </summary> + <param name="repository">The repository to lookup in.</param> + <param name="name">The name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + <remarks> + <para> + Retrieves a logger named as the <paramref name="name"/> + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + </para> + <para> + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)"> + <summary> + Retrieves or creates a named logger. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <param name="name">The name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + <remarks> + <para> + Retrieves a logger named as the <paramref name="name"/> + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + </para> + <para> + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)"> + <summary> + Shorthand for <see cref="M:log4net.LogManager.GetLogger(System.String)"/>. + </summary> + <param name="repository">The repository to lookup in.</param> + <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + <remarks> + <para> + Gets the logger for the fully qualified name of the type specified. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)"> + <summary> + Shorthand for <see cref="M:log4net.LogManager.GetLogger(System.String)"/>. + </summary> + <param name="repositoryAssembly">the assembly to use to lookup the repository</param> + <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + <remarks> + <para> + Gets the logger for the fully qualified name of the type specified. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.Shutdown"> + <summary> + Shuts down the log4net system. + </summary> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in all the + default repositories. + </para> + <para> + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para> + The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.ShutdownRepository(System.String)"> + <summary> + Shuts down the repository for the repository specified. + </summary> + <param name="repository">The repository to shutdown.</param> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in the + repository for the <paramref name="repository"/> specified. + </para> + <para> + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para> + The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)"> + <summary> + Shuts down the repository for the repository specified. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the <paramref name="repositoryAssembly"/> specified. + </para> + <para> + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para> + The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.ResetConfiguration(System.String)"> + <summary> + Resets all values contained in this repository instance to their defaults. + </summary> + <param name="repository">The repository to reset.</param> + <remarks> + <para> + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to <c>null</c>, + sets their additivity flag to <c>true</c> and sets the level + of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover, + message disabling is set its default "off" value. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)"> + <summary> + Resets all values contained in this repository instance to their defaults. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param> + <remarks> + <para> + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to <c>null</c>, + sets their additivity flag to <c>true</c> and sets the level + of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover, + message disabling is set its default "off" value. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.CreateDomain(System.String)"> + <summary> + Creates a repository with the specified name. + </summary> + <param name="repository">The name of the repository, this must be unique amongst repositories.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a + <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object. + </para> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An <see cref="T:System.Exception"/> will be thrown if the repository already exists. + </para> + </remarks> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.Core.LoggerManager.CreateRepository(System.String)"> + <summary> + Creates a repository with the specified name. + </summary> + <param name="repository">The name of the repository, this must be unique amongst repositories.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a + <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object. + </para> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An <see cref="T:System.Exception"/> will be thrown if the repository already exists. + </para> + </remarks> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)"> + <summary> + Creates a repository with the specified name and repository type. + </summary> + <param name="repository">The name of the repository, this must be unique to the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + </para> + </remarks> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)"> + <summary> + Creates a repository with the specified name and repository type. + </summary> + <param name="repository">The name of the repository, this must be unique to the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + </para> + </remarks> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)"> + <summary> + Creates a repository for the specified assembly and repository type. + </summary> + <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)"> + <summary> + Creates a repository for the specified assembly and repository type. + </summary> + <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetAllRepositories"> + <summary> + Gets an array of all currently defined repositories. + </summary> + <returns>An array of all the known <see cref="T:log4net.Repository.ILoggerRepository"/> objects.</returns> + <remarks> + <para> + Gets an array of all currently defined repositories. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.GetVersionInfo"> + <summary> + Internal method to get pertinent version info. + </summary> + <returns>A string of version info.</returns> + </member> + <member name="M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)"> + <summary> + Called when the <see cref="F:System.AppDomain.DomainUnload"/> event fires + </summary> + <param name="sender">the <see cref="T:System.AppDomain"/> that is exiting</param> + <param name="e">null</param> + <remarks> + <para> + Called when the <see cref="F:System.AppDomain.DomainUnload"/> event fires. + </para> + <para> + When the event is triggered the log4net system is <see cref="M:log4net.Core.LoggerManager.Shutdown"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)"> + <summary> + Called when the <see cref="F:System.AppDomain.ProcessExit"/> event fires + </summary> + <param name="sender">the <see cref="T:System.AppDomain"/> that is exiting</param> + <param name="e">null</param> + <remarks> + <para> + Called when the <see cref="F:System.AppDomain.ProcessExit"/> event fires. + </para> + <para> + When the event is triggered the log4net system is <see cref="M:log4net.Core.LoggerManager.Shutdown"/>. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggerManager.s_repositorySelector"> + <summary> + Initialize the default repository selector + </summary> + </member> + <member name="P:log4net.Core.LoggerManager.RepositorySelector"> + <summary> + Gets or sets the repository selector used by the <see cref="T:log4net.LogManager"/>. + </summary> + <value> + The repository selector used by the <see cref="T:log4net.LogManager"/>. + </value> + <remarks> + <para> + The repository selector (<see cref="T:log4net.Core.IRepositorySelector"/>) is used by + the <see cref="T:log4net.LogManager"/> to create and select repositories + (<see cref="T:log4net.Repository.ILoggerRepository"/>). + </para> + <para> + The caller to <see cref="T:log4net.LogManager"/> supplies either a string name + or an assembly (if not supplied the assembly is inferred using + <see cref="M:System.Reflection.Assembly.GetCallingAssembly"/>). + </para> + <para> + This context is used by the selector to lookup a specific repository. + </para> + <para> + For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>; + for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default + repository. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LoggerWrapperImpl"> + <summary> + Implementation of the <see cref="T:log4net.Core.ILoggerWrapper"/> interface. + </summary> + <remarks> + <para> + This class should be used as the base for all wrapper implementations. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)"> + <summary> + Constructs a new wrapper for the specified logger. + </summary> + <param name="logger">The logger to wrap.</param> + <remarks> + <para> + Constructs a new wrapper for the specified logger. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggerWrapperImpl.m_logger"> + <summary> + The logger that this object is wrapping + </summary> + </member> + <member name="P:log4net.Core.LoggerWrapperImpl.Logger"> + <summary> + Gets the implementation behind this wrapper object. + </summary> + <value> + The <see cref="T:log4net.Core.ILogger"/> object that this object is implementing. + </value> + <remarks> + <para> + The <c>Logger</c> object may not be the same object as this object + because of logger decorators. + </para> + <para> + This gets the actual underlying objects that is used to process + the log events. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LoggingEventData"> + <summary> + Portable data structure used by <see cref="T:log4net.Core.LoggingEvent"/> + </summary> + <remarks> + <para> + Portable data structure used by <see cref="T:log4net.Core.LoggingEvent"/> + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Core.LoggingEventData.LoggerName"> + <summary> + The logger name. + </summary> + <remarks> + <para> + The logger name. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.Level"> + <summary> + Level of logging event. + </summary> + <remarks> + <para> + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.Message"> + <summary> + The application supplied message. + </summary> + <remarks> + <para> + The application supplied message of logging event. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.ThreadName"> + <summary> + The name of thread + </summary> + <remarks> + <para> + The name of thread in which this logging event was generated + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.TimeStamp"> + <summary> + The time the event was logged + </summary> + <remarks> + <para> + The TimeStamp is stored in the local time zone for this computer. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.LocationInfo"> + <summary> + Location information for the caller. + </summary> + <remarks> + <para> + Location information for the caller. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.UserName"> + <summary> + String representation of the user + </summary> + <remarks> + <para> + String representation of the user's windows name, + like DOMAIN\username + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.Identity"> + <summary> + String representation of the identity. + </summary> + <remarks> + <para> + String representation of the current thread's principal identity. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.ExceptionString"> + <summary> + The string representation of the exception + </summary> + <remarks> + <para> + The string representation of the exception + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.Domain"> + <summary> + String representation of the AppDomain. + </summary> + <remarks> + <para> + String representation of the AppDomain. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEventData.Properties"> + <summary> + Additional event specific properties + </summary> + <remarks> + <para> + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + </para> + </remarks> + </member> + <member name="T:log4net.Core.FixFlags"> + <summary> + Flags passed to the <see cref="P:log4net.Core.LoggingEvent.Fix"/> property + </summary> + <remarks> + <para> + Flags passed to the <see cref="P:log4net.Core.LoggingEvent.Fix"/> property + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Core.FixFlags.Mdc"> + <summary> + Fix the MDC + </summary> + </member> + <member name="F:log4net.Core.FixFlags.Ndc"> + <summary> + Fix the NDC + </summary> + </member> + <member name="F:log4net.Core.FixFlags.Message"> + <summary> + Fix the rendered message + </summary> + </member> + <member name="F:log4net.Core.FixFlags.ThreadName"> + <summary> + Fix the thread name + </summary> + </member> + <member name="F:log4net.Core.FixFlags.LocationInfo"> + <summary> + Fix the callers location information + </summary> + <remarks> + CAUTION: Very slow to generate + </remarks> + </member> + <member name="F:log4net.Core.FixFlags.UserName"> + <summary> + Fix the callers windows user name + </summary> + <remarks> + CAUTION: Slow to generate + </remarks> + </member> + <member name="F:log4net.Core.FixFlags.Domain"> + <summary> + Fix the domain friendly name + </summary> + </member> + <member name="F:log4net.Core.FixFlags.Identity"> + <summary> + Fix the callers principal name + </summary> + <remarks> + CAUTION: May be slow to generate + </remarks> + </member> + <member name="F:log4net.Core.FixFlags.Exception"> + <summary> + Fix the exception text + </summary> + </member> + <member name="F:log4net.Core.FixFlags.Properties"> + <summary> + Fix the event properties + </summary> + </member> + <member name="F:log4net.Core.FixFlags.None"> + <summary> + No fields fixed + </summary> + </member> + <member name="F:log4net.Core.FixFlags.All"> + <summary> + All fields fixed + </summary> + </member> + <member name="F:log4net.Core.FixFlags.Partial"> + <summary> + Partial fields fixed + </summary> + <remarks> + <para> + This set of partial fields gives good performance. The following fields are fixed: + </para> + <list type="bullet"> + <item><description><see cref="F:log4net.Core.FixFlags.Message"/></description></item> + <item><description><see cref="F:log4net.Core.FixFlags.ThreadName"/></description></item> + <item><description><see cref="F:log4net.Core.FixFlags.Exception"/></description></item> + <item><description><see cref="F:log4net.Core.FixFlags.Domain"/></description></item> + <item><description><see cref="F:log4net.Core.FixFlags.Properties"/></description></item> + </list> + </remarks> + </member> + <member name="T:log4net.Core.LoggingEvent"> + <summary> + The internal representation of logging events. + </summary> + <remarks> + <para> + When an affirmative decision is made to log then a + <see cref="T:log4net.Core.LoggingEvent"/> instance is created. This instance + is passed around to the different log4net components. + </para> + <para> + This class is of concern to those wishing to extend log4net. + </para> + <para> + Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/> + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/>. There is a performance penalty + for incurred by calling <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/> but it + is essential to maintaining data consistency. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Douglas de la Torre</author> + <author>Daniel Cazzulino</author> + </member> + <member name="F:log4net.Core.LoggingEvent.HostNameProperty"> + <summary> + The key into the Properties map for the host name value. + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.IdentityProperty"> + <summary> + The key into the Properties map for the thread identity value. + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.UserNameProperty"> + <summary> + The key into the Properties map for the user name value. + </summary> + </member> + <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class + from the supplied parameters. + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <param name="repository">The repository this event is logged in.</param> + <param name="loggerName">The name of the logger of this event.</param> + <param name="level">The level of this event.</param> + <param name="message">The message of this event.</param> + <param name="exception">The exception for this event.</param> + <remarks> + <para> + Except <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/>, <see cref="P:log4net.Core.LoggingEvent.Level"/> and <see cref="P:log4net.Core.LoggingEvent.LoggerName"/>, + all fields of <c>LoggingEvent</c> are filled when actually needed. Call + <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/> to cache all data locally + to prevent inconsistencies. + </para> + <para>This method is called by the log4net framework + to create a logging event. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class + using specific data. + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <param name="repository">The repository this event is logged in.</param> + <param name="data">Data used to initialize the logging event.</param> + <param name="fixedData">The fields in the <paranref name="data"/> struct that have already been fixed.</param> + <remarks> + <para> + This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/> + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + </para> + <para> + Use the <see cref="M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)"/> method to obtain an + instance of the <see cref="T:log4net.Core.LoggingEventData"/> class. + </para> + <para> + The <paramref name="fixedData"/> parameter should be used to specify which fields in the + <paramref name="data"/> struct have been preset. Fields not specified in the <paramref name="fixedData"/> + will be captured from the environment if requested or fixed. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class + using specific data. + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <param name="repository">The repository this event is logged in.</param> + <param name="data">Data used to initialize the logging event.</param> + <remarks> + <para> + This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/> + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + </para> + <para> + Use the <see cref="M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)"/> method to obtain an + instance of the <see cref="T:log4net.Core.LoggingEventData"/> class. + </para> + <para> + This constructor sets this objects <see cref="P:log4net.Core.LoggingEvent.Fix"/> flags to <see cref="F:log4net.Core.FixFlags.All"/>, + this assumes that all the data relating to this event is passed in via the <paramref name="data"/> + parameter and no other data should be captured from the environment. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class + using specific data. + </summary> + <param name="data">Data used to initialize the logging event.</param> + <remarks> + <para> + This constructor is provided to allow a <see cref="T:log4net.Core.LoggingEvent"/> + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + </para> + <para> + Use the <see cref="M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)"/> method to obtain an + instance of the <see cref="T:log4net.Core.LoggingEventData"/> class. + </para> + <para> + This constructor sets this objects <see cref="P:log4net.Core.LoggingEvent.Fix"/> flags to <see cref="F:log4net.Core.FixFlags.All"/>, + this assumes that all the data relating to this event is passed in via the <paramref name="data"/> + parameter and no other data should be captured from the environment. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Serialization constructor + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param> + <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.LoggingEvent"/> class + with serialized data. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)"> + <summary> + Ensure that the repository is set. + </summary> + <param name="repository">the value for the repository</param> + </member> + <member name="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)"> + <summary> + Write the rendered message to a TextWriter + </summary> + <param name="writer">the writer to write the message to</param> + <remarks> + <para> + Unlike the <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property, however if the message is + to be accessed multiple times then the property will be more efficient. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided. + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param> + <param name="context">The destination for this serialization.</param> + <remarks> + <para> + The data in this event must be fixed before it can be serialized. + </para> + <para> + The <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/> method must be called during the + <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method call if this event + is to be used outside that method. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.GetLoggingEventData"> + <summary> + Gets the portable data for this <see cref="T:log4net.Core.LoggingEvent"/>. + </summary> + <returns>The <see cref="T:log4net.Core.LoggingEventData"/> for this event.</returns> + <remarks> + <para> + A new <see cref="T:log4net.Core.LoggingEvent"/> can be constructed using a + <see cref="T:log4net.Core.LoggingEventData"/> instance. + </para> + <para> + Does a <see cref="F:log4net.Core.FixFlags.Partial"/> fix of the data + in the logging event before returning the event data. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)"> + <summary> + Gets the portable data for this <see cref="T:log4net.Core.LoggingEvent"/>. + </summary> + <param name="fixFlags">The set of data to ensure is fixed in the LoggingEventData</param> + <returns>The <see cref="T:log4net.Core.LoggingEventData"/> for this event.</returns> + <remarks> + <para> + A new <see cref="T:log4net.Core.LoggingEvent"/> can be constructed using a + <see cref="T:log4net.Core.LoggingEventData"/> instance. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.GetExceptionStrRep"> + <summary> + Returns this event's exception's rendered using the + <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </summary> + <returns> + This event's exception's rendered using the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </returns> + <remarks> + <para> + <b>Obsolete. Use <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/> instead.</b> + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.GetExceptionString"> + <summary> + Returns this event's exception's rendered using the + <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </summary> + <returns> + This event's exception's rendered using the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </returns> + <remarks> + <para> + Returns this event's exception's rendered using the + <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.FixVolatileData"> + <summary> + Fix instance fields that hold volatile data. + </summary> + <remarks> + <para> + Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/> + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/>. There is a performance penalty + incurred by calling <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/> but it + is essential to maintaining data consistency. + </para> + <para> + Calling <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/> is equivalent to + calling <see cref="M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)"/> passing the parameter + <c>false</c>. + </para> + <para> + See <see cref="M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)"/> for more + information. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)"> + <summary> + Fixes instance fields that hold volatile data. + </summary> + <param name="fastButLoose">Set to <c>true</c> to not fix data that takes a long time to fix.</param> + <remarks> + <para> + Some of the values in instances of <see cref="T:log4net.Core.LoggingEvent"/> + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/>. There is a performance penalty + for incurred by calling <see cref="M:log4net.Core.LoggingEvent.FixVolatileData"/> but it + is essential to maintaining data consistency. + </para> + <para> + The <paramref name="fastButLoose"/> param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the <paramref name="fastButLoose"/> param + to <c>true</c>. This setting will ignore the <see cref="P:log4net.Core.LoggingEvent.LocationInformation"/> + and <see cref="P:log4net.Core.LoggingEvent.UserName"/> settings. + </para> + <para> + Set <paramref name="fastButLoose"/> to <c>false</c> to ensure that all + settings are fixed. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)"> + <summary> + Fix the fields specified by the <see cref="T:log4net.Core.FixFlags"/> parameter + </summary> + <param name="flags">the fields to fix</param> + <remarks> + <para> + Only fields specified in the <paramref name="flags"/> will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"> + <summary> + Lookup a composite property in this event + </summary> + <param name="key">the key for the property to lookup</param> + <returns>the value for the property</returns> + <remarks> + <para> + This event has composite properties that combine together properties from + several different contexts in the following order: + <list type="definition"> + <item> + <term>this events properties</term> + <description> + This event has <see cref="P:log4net.Core.LoggingEvent.Properties"/> that can be set. These + properties are specific to this event only. + </description> + </item> + <item> + <term>the thread properties</term> + <description> + The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current + thread. These properties are shared by all events logged on this thread. + </description> + </item> + <item> + <term>the global properties</term> + <description> + The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These + properties are shared by all the threads in the AppDomain. + </description> + </item> + </list> + </para> + </remarks> + </member> + <member name="M:log4net.Core.LoggingEvent.GetProperties"> + <summary> + Get all the composite properties in this event + </summary> + <returns>the <see cref="T:log4net.Util.PropertiesDictionary"/> containing all the properties</returns> + <remarks> + <para> + See <see cref="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"/> for details of the composite properties + stored by the event. + </para> + <para> + This method returns a single <see cref="T:log4net.Util.PropertiesDictionary"/> containing all the + properties defined for this event. + </para> + </remarks> + </member> + <member name="F:log4net.Core.LoggingEvent.m_data"> + <summary> + The internal logging event data. + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.m_compositeProperties"> + <summary> + The internal logging event data. + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.m_eventProperties"> + <summary> + The internal logging event data. + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType"> + <summary> + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.m_message"> + <summary> + The application supplied message of logging event. + </summary> + </member> + <member name="F:log4net.Core.LoggingEvent.m_thrownException"> + <summary> + The exception that was thrown. + </summary> + <remarks> + This is not serialized. The string representation + is serialized instead. + </remarks> + </member> + <member name="F:log4net.Core.LoggingEvent.m_repository"> + <summary> + The repository that generated the logging event + </summary> + <remarks> + This is not serialized. + </remarks> + </member> + <member name="F:log4net.Core.LoggingEvent.m_fixFlags"> + <summary> + The fix state for this event + </summary> + <remarks> + These flags indicate which fields have been fixed. + Not serialized. + </remarks> + </member> + <member name="F:log4net.Core.LoggingEvent.m_cacheUpdatable"> + <summary> + Indicated that the internal cache is updateable (ie not fixed) + </summary> + <remarks> + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.StartTime"> + <summary> + Gets the time when the current process started. + </summary> + <value> + This is the time when this process started. + </value> + <remarks> + <para> + The TimeStamp is stored in the local time zone for this computer. + </para> + <para> + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + </para> + <para> + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.Level"> + <summary> + Gets the <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event. + </summary> + <value> + The <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event. + </value> + <remarks> + <para> + Gets the <see cref="P:log4net.Core.LoggingEvent.Level"/> of the logging event. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.TimeStamp"> + <summary> + Gets the time of the logging event. + </summary> + <value> + The time of the logging event. + </value> + <remarks> + <para> + The TimeStamp is stored in the local time zone for this computer. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.LoggerName"> + <summary> + Gets the name of the logger that logged the event. + </summary> + <value> + The name of the logger that logged the event. + </value> + <remarks> + <para> + Gets the name of the logger that logged the event. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.LocationInformation"> + <summary> + Gets the location information for this logging event. + </summary> + <value> + The location information for this logging event. + </value> + <remarks> + <para> + The collected information is cached for future use. + </para> + <para> + See the <see cref="T:log4net.Core.LocationInfo"/> class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.MessageObject"> + <summary> + Gets the message object used to initialize this event. + </summary> + <value> + The message object used to initialize this event. + </value> + <remarks> + <para> + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + <see cref="P:log4net.Core.LoggingEvent.RenderedMessage"/> property must be used + not this property. + </para> + <para> + If there is no defined message object for this event then + null will be returned. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.ExceptionObject"> + <summary> + Gets the exception object used to initialize this event. + </summary> + <value> + The exception object used to initialize this event. + </value> + <remarks> + <para> + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/> method must be used + not this property. + </para> + <para> + If there is no defined exception object for this event then + null will be returned. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.Repository"> + <summary> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that this event was created in. + </summary> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that this event was created in. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.RenderedMessage"> + <summary> + Gets the message, rendered through the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </summary> + <value> + The message rendered through the <see cref="P:log4net.Repository.ILoggerRepository.RendererMap"/>. + </value> + <remarks> + <para> + The collected information is cached for future use. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.ThreadName"> + <summary> + Gets the name of the current thread. + </summary> + <value> + The name of the current thread, or the thread ID when + the name is not available. + </value> + <remarks> + <para> + The collected information is cached for future use. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.UserName"> + <summary> + Gets the name of the current user. + </summary> + <value> + The name of the current user, or <c>NOT AVAILABLE</c> when the + underlying runtime has no support for retrieving the name of the + current user. + </value> + <remarks> + <para> + Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of + the current windows user. + </para> + <para> + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + </para> + <para> + However, the <c>WindowsIdentity.GetCurrent()</c> call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + </para> + <para> + Timing for these operations: + </para> + <list type="table"> + <listheader> + <term>Method</term> + <description>Results</description> + </listheader> + <item> + <term><c>WindowsIdentity.GetCurrent()</c></term> + <description>10000 loops, 00:00:00.2031250 seconds</description> + </item> + <item> + <term><c>WindowsIdentity.GetCurrent().Name</c></term> + <description>10000 loops, 00:00:08.0468750 seconds</description> + </item> + </list> + <para> + This means we could speed things up almost 40 times by caching the + value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since + this takes (8.04-0.20) = 7.84375 seconds. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.Identity"> + <summary> + Gets the identity of the current thread principal. + </summary> + <value> + The string name of the identity of the current thread principal. + </value> + <remarks> + <para> + Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get + the name of the current thread principal. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.Domain"> + <summary> + Gets the AppDomain friendly name. + </summary> + <value> + The AppDomain friendly name. + </value> + <remarks> + <para> + Gets the AppDomain friendly name. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.Properties"> + <summary> + Additional event specific properties. + </summary> + <value> + Additional event specific properties. + </value> + <remarks> + <para> + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + </para> + <para> + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using <see cref="M:log4net.Core.LoggingEvent.LookupProperty(System.String)"/> + and <see cref="M:log4net.Core.LoggingEvent.GetProperties"/>. + </para> + <para> + Once the properties have been fixed <see cref="P:log4net.Core.LoggingEvent.Fix"/> this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LoggingEvent.Fix"> + <summary> + The fixed fields in this event + </summary> + <value> + The set of fields that are fixed in this event + </value> + <remarks> + <para> + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + </para> + </remarks> + </member> + <member name="T:log4net.Core.LogImpl"> + <summary> + Implementation of <see cref="T:log4net.ILog"/> wrapper interface. + </summary> + <remarks> + <para> + This implementation of the <see cref="T:log4net.ILog"/> interface + forwards to the <see cref="T:log4net.Core.ILogger"/> held by the base class. + </para> + <para> + This logger has methods to allow the caller to log at the following + levels: + </para> + <list type="definition"> + <item> + <term>DEBUG</term> + <description> + The <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> and <see cref="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])"/> methods log messages + at the <c>DEBUG</c> level. That is the level with that name defined in the + repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value + for this level is <see cref="F:log4net.Core.Level.Debug"/>. The <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> + property tests if this level is enabled for logging. + </description> + </item> + <item> + <term>INFO</term> + <description> + The <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> and <see cref="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])"/> methods log messages + at the <c>INFO</c> level. That is the level with that name defined in the + repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value + for this level is <see cref="F:log4net.Core.Level.Info"/>. The <see cref="P:log4net.Core.LogImpl.IsInfoEnabled"/> + property tests if this level is enabled for logging. + </description> + </item> + <item> + <term>WARN</term> + <description> + The <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> and <see cref="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])"/> methods log messages + at the <c>WARN</c> level. That is the level with that name defined in the + repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value + for this level is <see cref="F:log4net.Core.Level.Warn"/>. The <see cref="P:log4net.Core.LogImpl.IsWarnEnabled"/> + property tests if this level is enabled for logging. + </description> + </item> + <item> + <term>ERROR</term> + <description> + The <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> and <see cref="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])"/> methods log messages + at the <c>ERROR</c> level. That is the level with that name defined in the + repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value + for this level is <see cref="F:log4net.Core.Level.Error"/>. The <see cref="P:log4net.Core.LogImpl.IsErrorEnabled"/> + property tests if this level is enabled for logging. + </description> + </item> + <item> + <term>FATAL</term> + <description> + The <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> and <see cref="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])"/> methods log messages + at the <c>FATAL</c> level. That is the level with that name defined in the + repositories <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>. The default value + for this level is <see cref="F:log4net.Core.Level.Fatal"/>. The <see cref="P:log4net.Core.LogImpl.IsFatalEnabled"/> + property tests if this level is enabled for logging. + </description> + </item> + </list> + <para> + The values for these levels and their semantic meanings can be changed by + configuring the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> for the repository. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.ILog"> + <summary> + The ILog interface is use by application to log messages into + the log4net framework. + </summary> + <remarks> + <para> + Use the <see cref="T:log4net.LogManager"/> to obtain logger instances + that implement this interface. The <see cref="M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)"/> + static method is used to get logger instances. + </para> + <para> + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + </para> + <para> + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + </para> + </remarks> + <example>Simple example of logging messages + <code lang="C#"> + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + </code> + </example> + <seealso cref="T:log4net.LogManager"/> + <seealso cref="M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.ILog.Debug(System.Object)"> + <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <param name="message">The message object to log.</param> + <remarks> + <para> + This method first checks if this logger is <c>DEBUG</c> + enabled by comparing the level of this logger with the + <see cref="F:log4net.Core.Level.Debug"/> level. If this logger is + <c>DEBUG</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + </para> + <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.Debug(System.Object,System.Exception)"> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Debug"/> level including + the stack trace of the <see cref="T:System.Exception"/> passed + as a parameter. + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + See the <see cref="M:log4net.ILog.Debug(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.DebugFormat(System.String,System.Object[])"> + <overloads>Log a formatted string with the <see cref="F:log4net.Core.Level.Debug"/> level.</overloads> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.DebugFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Debug(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.ILog.Info(System.Object)"> + <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads> + <summary> + Logs a message object with the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <remarks> + <para> + This method first checks if this logger is <c>INFO</c> + enabled by comparing the level of this logger with the + <see cref="F:log4net.Core.Level.Info"/> level. If this logger is + <c>INFO</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + <param name="message">The message object to log.</param> + <seealso cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.Info(System.Object,System.Exception)"> + <summary> + Logs a message object with the <c>INFO</c> level including + the stack trace of the <see cref="T:System.Exception"/> passed + as a parameter. + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + See the <see cref="M:log4net.ILog.Info(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.InfoFormat(System.String,System.Object[])"> + <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level.</overloads> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Info(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.InfoFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Info(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsInfoEnabled"/> + </member> + <member name="M:log4net.ILog.Warn(System.Object)"> + <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <remarks> + <para> + This method first checks if this logger is <c>WARN</c> + enabled by comparing the level of this logger with the + <see cref="F:log4net.Core.Level.Warn"/> level. If this logger is + <c>WARN</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + <param name="message">The message object to log.</param> + <seealso cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.Warn(System.Object,System.Exception)"> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Warn"/> level including + the stack trace of the <see cref="T:System.Exception"/> passed + as a parameter. + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + See the <see cref="M:log4net.ILog.Warn(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.WarnFormat(System.String,System.Object[])"> + <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level.</overloads> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.WarnFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsWarnEnabled"/> + </member> + <member name="M:log4net.ILog.Error(System.Object)"> + <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads> + <summary> + Logs a message object with the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <param name="message">The message object to log.</param> + <remarks> + <para> + This method first checks if this logger is <c>ERROR</c> + enabled by comparing the level of this logger with the + <see cref="F:log4net.Core.Level.Error"/> level. If this logger is + <c>ERROR</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.Error(System.Object,System.Exception)"> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Error"/> level including + the stack trace of the <see cref="T:System.Exception"/> passed + as a parameter. + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + See the <see cref="M:log4net.ILog.Error(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object[])"> + <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level.</overloads> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Error(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Error(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsErrorEnabled"/> + </member> + <member name="M:log4net.ILog.Fatal(System.Object)"> + <overloads>Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <remarks> + <para> + This method first checks if this logger is <c>FATAL</c> + enabled by comparing the level of this logger with the + <see cref="F:log4net.Core.Level.Fatal"/> level. If this logger is + <c>FATAL</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para><b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + <param name="message">The message object to log.</param> + <seealso cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="M:log4net.ILog.Fatal(System.Object,System.Exception)"> + <summary> + Log a message object with the <see cref="F:log4net.Core.Level.Fatal"/> level including + the stack trace of the <see cref="T:System.Exception"/> passed + as a parameter. + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + See the <see cref="M:log4net.ILog.Fatal(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="M:log4net.ILog.FatalFormat(System.String,System.Object[])"> + <overloads>Log a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level.</overloads> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="M:log4net.ILog.FatalFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <c>String.Format</c> method. See + <see cref="M:System.String.Format(System.String,System.Object[])"/> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.ILog.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object,System.Exception)"/> + <seealso cref="P:log4net.ILog.IsFatalEnabled"/> + </member> + <member name="P:log4net.ILog.IsDebugEnabled"> + <summary> + Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Debug"/> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Debug"/> events, <c>false</c> otherwise. + </value> + <remarks> + <para> + This function is intended to lessen the computational cost of + disabled log debug statements. + </para> + <para> For some ILog interface <c>log</c>, when you write:</para> + <code lang="C#"> + log.Debug("This is entry number: " + i ); + </code> + <para> + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + </para> + <para> + If you are worried about speed (who isn't), then you should write: + </para> + <code lang="C#"> + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + </code> + <para> + This way you will not incur the cost of parameter + construction if debugging is disabled for <c>log</c>. On + the other hand, if the <c>log</c> is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in <see cref="P:log4net.ILog.IsDebugEnabled"/> and once in + the <see cref="M:log4net.ILog.Debug(System.Object)"/>. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + </para> + <para>Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + </para> + <code lang="C#"> + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + </code> + <para> + Then when you come to log you can write: + </para> + <code lang="C#"> + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + </code> + <para> + This way the debug enabled state is only queried once + when the class is loaded. Using a <c>private static readonly</c> + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + </para> + <para> + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + </para> + </remarks> + <seealso cref="M:log4net.ILog.Debug(System.Object)"/> + <seealso cref="M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])"/> + </member> + <member name="P:log4net.ILog.IsInfoEnabled"> + <summary> + Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Info"/> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Info"/> events, <c>false</c> otherwise. + </value> + <remarks> + For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>. + </remarks> + <seealso cref="M:log4net.ILog.Info(System.Object)"/> + <seealso cref="M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="P:log4net.ILog.IsWarnEnabled"> + <summary> + Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Warn"/> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Warn"/> events, <c>false</c> otherwise. + </value> + <remarks> + For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>. + </remarks> + <seealso cref="M:log4net.ILog.Warn(System.Object)"/> + <seealso cref="M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="P:log4net.ILog.IsErrorEnabled"> + <summary> + Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Error"/> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Error"/> events, <c>false</c> otherwise. + </value> + <remarks> + For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>. + </remarks> + <seealso cref="M:log4net.ILog.Error(System.Object)"/> + <seealso cref="M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="P:log4net.ILog.IsFatalEnabled"> + <summary> + Checks if this logger is enabled for the <see cref="F:log4net.Core.Level.Fatal"/> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <see cref="F:log4net.Core.Level.Fatal"/> events, <c>false</c> otherwise. + </value> + <remarks> + For more information see <see cref="P:log4net.ILog.IsDebugEnabled"/>. + </remarks> + <seealso cref="M:log4net.ILog.Fatal(System.Object)"/> + <seealso cref="M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])"/> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)"> + <summary> + Construct a new wrapper for the specified logger. + </summary> + <param name="logger">The logger to wrap.</param> + <remarks> + <para> + Construct a new wrapper for the specified logger. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)"> + <summary> + Virtual method called when the configuration of the repository changes + </summary> + <param name="repository">the repository holding the levels</param> + <remarks> + <para> + Virtual method called when the configuration of the repository changes + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Debug(System.Object)"> + <summary> + Logs a message object with the <c>DEBUG</c> level. + </summary> + <param name="message">The message object to log.</param> + <remarks> + <para> + This method first checks if this logger is <c>DEBUG</c> + enabled by comparing the level of this logger with the + <c>DEBUG</c> level. If this logger is + <c>DEBUG</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para> + <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)"> + <summary> + Logs a message object with the <c>DEBUG</c> level + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Logs a message object with the <c>DEBUG</c> level including + the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> passed + as a parameter. + </para> + <para> + See the <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> + </member> + <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>DEBUG</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <c>DEBUG</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>DEBUG</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>DEBUG</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>DEBUG</c> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Debug(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Info(System.Object)"> + <summary> + Logs a message object with the <c>INFO</c> level. + </summary> + <param name="message">The message object to log.</param> + <remarks> + <para> + This method first checks if this logger is <c>INFO</c> + enabled by comparing the level of this logger with the + <c>INFO</c> level. If this logger is + <c>INFO</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + </para> + <para> + <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> + to this method will print the name of the <see cref="T:System.Exception"/> + but no stack trace. To print a stack trace use the + <see cref="M:log4net.Core.LogImpl.Info(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Info(System.Object,System.Exception)"> + <summary> + Logs a message object with the <c>INFO</c> level. + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Logs a message object with the <c>INFO</c> level including + the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> + passed as a parameter. + </para> + <para> + See the <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.Core.LogImpl.Info(System.Object)"/> + </member> + <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>INFO</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <c>INFO</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>INFO</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>INFO</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>INFO</c> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Info(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Warn(System.Object)"> + <summary> + Logs a message object with the <c>WARN</c> level. + </summary> + <param name="message">the message object to log</param> + <remarks> + <para> + This method first checks if this logger is <c>WARN</c> + enabled by comparing the level of this logger with the + <c>WARN</c> level. If this logger is + <c>WARN</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para> + <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> to this + method will print the name of the <see cref="T:System.Exception"/> but no + stack trace. To print a stack trace use the + <see cref="M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)"> + <summary> + Logs a message object with the <c>WARN</c> level + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Logs a message object with the <c>WARN</c> level including + the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> + passed as a parameter. + </para> + <para> + See the <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> + </member> + <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>WARN</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <c>WARN</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>WARN</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>WARN</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>WARN</c> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Warn(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Error(System.Object)"> + <summary> + Logs a message object with the <c>ERROR</c> level. + </summary> + <param name="message">The message object to log.</param> + <remarks> + <para> + This method first checks if this logger is <c>ERROR</c> + enabled by comparing the level of this logger with the + <c>ERROR</c> level. If this logger is + <c>ERROR</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para> + <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> to this + method will print the name of the <see cref="T:System.Exception"/> but no + stack trace. To print a stack trace use the + <see cref="M:log4net.Core.LogImpl.Error(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Error(System.Object,System.Exception)"> + <summary> + Logs a message object with the <c>ERROR</c> level + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Logs a message object with the <c>ERROR</c> level including + the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> + passed as a parameter. + </para> + <para> + See the <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.Core.LogImpl.Error(System.Object)"/> + </member> + <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>ERROR</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <c>ERROR</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>ERROR</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>ERROR</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>ERROR</c> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Error(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Fatal(System.Object)"> + <summary> + Logs a message object with the <c>FATAL</c> level. + </summary> + <param name="message">The message object to log.</param> + <remarks> + <para> + This method first checks if this logger is <c>FATAL</c> + enabled by comparing the level of this logger with the + <c>FATAL</c> level. If this logger is + <c>FATAL</c> enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + </para> + <para> + <b>WARNING</b> Note that passing an <see cref="T:System.Exception"/> to this + method will print the name of the <see cref="T:System.Exception"/> but no + stack trace. To print a stack trace use the + <see cref="M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)"/> form instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)"> + <summary> + Logs a message object with the <c>FATAL</c> level + </summary> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Logs a message object with the <c>FATAL</c> level including + the stack trace of the <see cref="T:System.Exception"/> <paramref name="exception"/> + passed as a parameter. + </para> + <para> + See the <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> form for more detailed information. + </para> + </remarks> + <seealso cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> + </member> + <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>FATAL</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)"> + <summary> + Logs a formatted message string with the <c>FATAL</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>FATAL</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)"> + <summary> + Logs a formatted message string with the <c>FATAL</c> level. + </summary> + <param name="format">A String containing zero or more format items</param> + <param name="arg0">An Object to format</param> + <param name="arg1">An Object to format</param> + <param name="arg2">An Object to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + The string is formatted using the <see cref="P:System.Globalization.CultureInfo.InvariantCulture"/> + format provider. To specify a localized provider use the + <see cref="M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])"/> method. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Logs a formatted message string with the <c>FATAL</c> level. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information</param> + <param name="format">A String containing zero or more format items</param> + <param name="args">An Object array containing zero or more objects to format</param> + <remarks> + <para> + The message is formatted using the <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])"/> method. See + <c>String.Format</c> for details of the syntax of the format string and the behavior + of the formatting. + </para> + <para> + This method does not take an <see cref="T:System.Exception"/> object to include in the + log event. To pass an <see cref="T:System.Exception"/> use one of the <see cref="M:log4net.Core.LogImpl.Fatal(System.Object)"/> + methods instead. + </para> + </remarks> + </member> + <member name="M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)"> + <summary> + Event handler for the <see cref="E:log4net.Repository.ILoggerRepository.ConfigurationChanged"/> event + </summary> + <param name="sender">the repository</param> + <param name="e">Empty</param> + </member> + <member name="F:log4net.Core.LogImpl.ThisDeclaringType"> + <summary> + The fully qualified name of this declaring type not the type of any subclass. + </summary> + </member> + <member name="P:log4net.Core.LogImpl.IsDebugEnabled"> + <summary> + Checks if this logger is enabled for the <c>DEBUG</c> + level. + </summary> + <value> + <c>true</c> if this logger is enabled for <c>DEBUG</c> events, + <c>false</c> otherwise. + </value> + <remarks> + <para> + This function is intended to lessen the computational cost of + disabled log debug statements. + </para> + <para> + For some <c>log</c> Logger object, when you write: + </para> + <code lang="C#"> + log.Debug("This is entry number: " + i ); + </code> + <para> + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + </para> + <para> + If you are worried about speed, then you should write: + </para> + <code lang="C#"> + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + </code> + <para> + This way you will not incur the cost of parameter + construction if debugging is disabled for <c>log</c>. On + the other hand, if the <c>log</c> is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in <c>IsDebugEnabled</c> and once in + the <c>Debug</c>. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + </para> + </remarks> + </member> + <member name="P:log4net.Core.LogImpl.IsInfoEnabled"> + <summary> + Checks if this logger is enabled for the <c>INFO</c> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <c>INFO</c> events, + <c>false</c> otherwise. + </value> + <remarks> + <para> + See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples + of using this method. + </para> + </remarks> + <seealso cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> + </member> + <member name="P:log4net.Core.LogImpl.IsWarnEnabled"> + <summary> + Checks if this logger is enabled for the <c>WARN</c> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <c>WARN</c> events, + <c>false</c> otherwise. + </value> + <remarks> + <para> + See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples + of using this method. + </para> + </remarks> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="P:log4net.Core.LogImpl.IsErrorEnabled"> + <summary> + Checks if this logger is enabled for the <c>ERROR</c> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <c>ERROR</c> events, + <c>false</c> otherwise. + </value> + <remarks> + <para> + See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples of using this method. + </para> + </remarks> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="P:log4net.Core.LogImpl.IsFatalEnabled"> + <summary> + Checks if this logger is enabled for the <c>FATAL</c> level. + </summary> + <value> + <c>true</c> if this logger is enabled for <c>FATAL</c> events, + <c>false</c> otherwise. + </value> + <remarks> + <para> + See <see cref="P:log4net.Core.LogImpl.IsDebugEnabled"/> for more information and examples of using this method. + </para> + </remarks> + <seealso cref="P:log4net.ILog.IsDebugEnabled"/> + </member> + <member name="T:log4net.Core.SecurityContext"> + <summary> + A SecurityContext used by log4net when interacting with protected resources + </summary> + <remarks> + <para> + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Core.SecurityContext.Impersonate(System.Object)"> + <summary> + Impersonate this SecurityContext + </summary> + <param name="state">State supplied by the caller</param> + <returns>An <see cref="T:System.IDisposable"/> instance that will + revoke the impersonation of this SecurityContext, or <c>null</c></returns> + <remarks> + <para> + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the <see cref="T:System.IDisposable"/> result + <see cref="M:System.IDisposable.Dispose"/> method is called the security + context of the thread should be reverted to the state it was in + before <see cref="M:log4net.Core.SecurityContext.Impersonate(System.Object)"/> was called. + </para> + </remarks> + </member> + <member name="T:log4net.Core.SecurityContextProvider"> + <summary> + The <see cref="T:log4net.Core.SecurityContextProvider"/> providers default <see cref="T:log4net.Core.SecurityContext"/> instances. + </summary> + <remarks> + <para> + A configured component that interacts with potentially protected system + resources uses a <see cref="T:log4net.Core.SecurityContext"/> to provide the elevated + privileges required. If the <see cref="T:log4net.Core.SecurityContext"/> object has + been not been explicitly provided to the component then the component + will request one from this <see cref="T:log4net.Core.SecurityContextProvider"/>. + </para> + <para> + By default the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is + an instance of <see cref="T:log4net.Core.SecurityContextProvider"/> which returns only + <see cref="T:log4net.Util.NullSecurityContext"/> objects. This is a reasonable default + where the privileges required are not know by the system. + </para> + <para> + This default behavior can be overridden by subclassing the <see cref="T:log4net.Core.SecurityContextProvider"/> + and overriding the <see cref="M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)"/> method to return + the desired <see cref="T:log4net.Core.SecurityContext"/> objects. The default provider + can be replaced by programmatically setting the value of the + <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> property. + </para> + <para> + An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c> + This attribute can be applied to an assembly in the same way as the + <c>log4net.Config.XmlConfiguratorAttribute"</c>. The attribute takes + the type to use as the <see cref="T:log4net.Core.SecurityContextProvider"/> as an argument. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Core.SecurityContextProvider.s_defaultProvider"> + <summary> + The default provider + </summary> + </member> + <member name="M:log4net.Core.SecurityContextProvider.#ctor"> + <summary> + Protected default constructor to allow subclassing + </summary> + <remarks> + <para> + Protected default constructor to allow subclassing + </para> + </remarks> + </member> + <member name="M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)"> + <summary> + Create a SecurityContext for a consumer + </summary> + <param name="consumer">The consumer requesting the SecurityContext</param> + <returns>An impersonation context</returns> + <remarks> + <para> + The default implementation is to return a <see cref="T:log4net.Util.NullSecurityContext"/>. + </para> + <para> + Subclasses should override this method to provide their own + behavior. + </para> + </remarks> + </member> + <member name="P:log4net.Core.SecurityContextProvider.DefaultProvider"> + <summary> + Gets or sets the default SecurityContextProvider + </summary> + <value> + The default SecurityContextProvider + </value> + <remarks> + <para> + The default provider is used by configured components that + require a <see cref="T:log4net.Core.SecurityContext"/> and have not had one + given to them. + </para> + <para> + By default this is an instance of <see cref="T:log4net.Core.SecurityContextProvider"/> + that returns <see cref="T:log4net.Util.NullSecurityContext"/> objects. + </para> + <para> + The default provider can be set programmatically by setting + the value of this property to a sub class of <see cref="T:log4net.Core.SecurityContextProvider"/> + that has the desired behavior. + </para> + </remarks> + </member> + <member name="T:log4net.Core.WrapperCreationHandler"> + <summary> + Delegate used to handle creation of new wrappers. + </summary> + <param name="logger">The logger to wrap in a wrapper.</param> + <remarks> + <para> + Delegate used to handle creation of new wrappers. This delegate + is called from the <see cref="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"/> + method to construct the wrapper for the specified logger. + </para> + <para> + The delegate to use is supplied to the <see cref="T:log4net.Core.WrapperMap"/> + constructor. + </para> + </remarks> + </member> + <member name="T:log4net.Core.WrapperMap"> + <summary> + Maps between logger objects and wrapper objects. + </summary> + <remarks> + <para> + This class maintains a mapping between <see cref="T:log4net.Core.ILogger"/> objects and + <see cref="T:log4net.Core.ILoggerWrapper"/> objects. Use the <see cref="M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)"/> method to + lookup the <see cref="T:log4net.Core.ILoggerWrapper"/> for the specified <see cref="T:log4net.Core.ILogger"/>. + </para> + <para> + New wrapper instances are created by the <see cref="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"/> + method. The default behavior is for this method to delegate construction + of the wrapper to the <see cref="T:log4net.Core.WrapperCreationHandler"/> delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Core.WrapperMap"/> + </summary> + <param name="createWrapperHandler">The handler to use to create the wrapper objects.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Core.WrapperMap"/> class with + the specified handler to create the wrapper objects. + </para> + </remarks> + </member> + <member name="M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)"> + <summary> + Gets the wrapper object for the specified logger. + </summary> + <returns>The wrapper object for the specified logger</returns> + <remarks> + <para> + If the logger is null then the corresponding wrapper is null. + </para> + <para> + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the <see cref="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"/> virtual method is + called. + </para> + </remarks> + </member> + <member name="M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)"> + <summary> + Creates the wrapper object for the specified logger. + </summary> + <param name="logger">The logger to wrap in a wrapper.</param> + <returns>The wrapper object for the logger.</returns> + <remarks> + <para> + This implementation uses the <see cref="T:log4net.Core.WrapperCreationHandler"/> + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + </para> + </remarks> + </member> + <member name="M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)"> + <summary> + Called when a monitored repository shutdown event is received. + </summary> + <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that is shutting down</param> + <remarks> + <para> + This method is called when a <see cref="T:log4net.Repository.ILoggerRepository"/> that this + <see cref="T:log4net.Core.WrapperMap"/> is holding loggers for has signaled its shutdown + event <see cref="E:log4net.Repository.ILoggerRepository.ShutdownEvent"/>. The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + </para> + </remarks> + </member> + <member name="M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)"> + <summary> + Event handler for repository shutdown event. + </summary> + <param name="sender">The sender of the event.</param> + <param name="e">The event args.</param> + </member> + <member name="F:log4net.Core.WrapperMap.m_repositories"> + <summary> + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + </summary> + </member> + <member name="F:log4net.Core.WrapperMap.m_createWrapperHandler"> + <summary> + The handler to use to create the extension wrapper objects. + </summary> + </member> + <member name="F:log4net.Core.WrapperMap.m_shutdownHandler"> + <summary> + Internal reference to the delegate used to register for repository shutdown events. + </summary> + </member> + <member name="P:log4net.Core.WrapperMap.Repositories"> + <summary> + Gets the map of logger repositories. + </summary> + <value> + Map of logger repositories. + </value> + <remarks> + <para> + Gets the hashtable that is keyed on <see cref="T:log4net.Repository.ILoggerRepository"/>. The + values are hashtables keyed on <see cref="T:log4net.Core.ILogger"/> with the + value being the corresponding <see cref="T:log4net.Core.ILoggerWrapper"/>. + </para> + </remarks> + </member> + <member name="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"> + <summary> + Formats a <see cref="T:System.DateTime"/> as <c>"HH:mm:ss,fff"</c>. + </summary> + <remarks> + <para> + Formats a <see cref="T:System.DateTime"/> in the format <c>"HH:mm:ss,fff"</c> for example, <c>"15:49:37,459"</c>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.DateFormatter.IDateFormatter"> + <summary> + Render a <see cref="T:System.DateTime"/> as a string. + </summary> + <remarks> + <para> + Interface to abstract the rendering of a <see cref="T:System.DateTime"/> + instance into a string. + </para> + <para> + The <see cref="M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"/> method is used to render the + date to a text writer. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"> + <summary> + Formats the specified date as a string. + </summary> + <param name="dateToFormat">The date to format.</param> + <param name="writer">The writer to write to.</param> + <remarks> + <para> + Format the <see cref="T:System.DateTime"/> as a string and write it + to the <see cref="T:System.IO.TextWriter"/> provided. + </para> + </remarks> + </member> + <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat"> + <summary> + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>. + </summary> + </member> + <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat"> + <summary> + String constant used to specify DateTimeDateFormat in layouts. Current value is <b>DATE</b>. + </summary> + </member> + <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat"> + <summary> + String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>. + </summary> + </member> + <member name="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"> + <summary> + Renders the date into a string. Format is <c>"HH:mm:ss"</c>. + </summary> + <param name="dateToFormat">The date to render into a string.</param> + <param name="buffer">The string builder to write to.</param> + <remarks> + <para> + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + </para> + </remarks> + </member> + <member name="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"> + <summary> + Renders the date into a string. Format is "HH:mm:ss,fff". + </summary> + <param name="dateToFormat">The date to render into a string.</param> + <param name="writer">The writer to write to.</param> + <remarks> + <para> + Uses the <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> are + cached and <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> is called at most once + per second. + </para> + <para> + Sub classes should override <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"/> + rather than <see cref="M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"/>. + </para> + </remarks> + </member> + <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond"> + <summary> + Last stored time with precision up to the second. + </summary> + </member> + <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf"> + <summary> + Last stored time with precision up to the second, formatted + as a string. + </summary> + </member> + <member name="F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeString"> + <summary> + Last stored time with precision up to the second, formatted + as a string. + </summary> + </member> + <member name="T:log4net.DateFormatter.DateTimeDateFormatter"> + <summary> + Formats a <see cref="T:System.DateTime"/> as <c>"dd MMM yyyy HH:mm:ss,fff"</c> + </summary> + <remarks> + <para> + Formats a <see cref="T:System.DateTime"/> in the format + <c>"dd MMM yyyy HH:mm:ss,fff"</c> for example, + <c>"06 Nov 1994 15:49:37,459"</c>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Angelika Schnagl</author> + </member> + <member name="M:log4net.DateFormatter.DateTimeDateFormatter.#ctor"> + <summary> + Default constructor. + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"> + <summary> + Formats the date without the milliseconds part + </summary> + <param name="dateToFormat">The date to format.</param> + <param name="buffer">The string builder to write to.</param> + <remarks> + <para> + Formats a DateTime in the format <c>"dd MMM yyyy HH:mm:ss"</c> + for example, <c>"06 Nov 1994 15:49:37"</c>. + </para> + <para> + The base class will append the <c>",fff"</c> milliseconds section. + This method will only be called at most once per second. + </para> + </remarks> + </member> + <member name="F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo"> + <summary> + The format info for the invariant culture. + </summary> + </member> + <member name="T:log4net.DateFormatter.Iso8601DateFormatter"> + <summary> + Formats the <see cref="T:System.DateTime"/> as <c>"yyyy-MM-dd HH:mm:ss,fff"</c>. + </summary> + <remarks> + <para> + Formats the <see cref="T:System.DateTime"/> specified as a string: <c>"yyyy-MM-dd HH:mm:ss,fff"</c>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.DateFormatter.Iso8601DateFormatter.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)"> + <summary> + Formats the date without the milliseconds part + </summary> + <param name="dateToFormat">The date to format.</param> + <param name="buffer">The string builder to write to.</param> + <remarks> + <para> + Formats the date specified as a string: <c>"yyyy-MM-dd HH:mm:ss"</c>. + </para> + <para> + The base class will append the <c>",fff"</c> milliseconds section. + This method will only be called at most once per second. + </para> + </remarks> + </member> + <member name="T:log4net.DateFormatter.SimpleDateFormatter"> + <summary> + Formats the <see cref="T:System.DateTime"/> using the <see cref="M:System.DateTime.ToString(System.String,System.IFormatProvider)"/> method. + </summary> + <remarks> + <para> + Formats the <see cref="T:System.DateTime"/> using the <see cref="T:System.DateTime"/> <see cref="M:System.DateTime.ToString(System.String,System.IFormatProvider)"/> method. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)"> + <summary> + Constructor + </summary> + <param name="format">The format string.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/> class + with the specified format string. + </para> + <para> + The format string must be compatible with the options + that can be supplied to <see cref="M:System.DateTime.ToString(System.String,System.IFormatProvider)"/>. + </para> + </remarks> + </member> + <member name="M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)"> + <summary> + Formats the date using <see cref="M:System.DateTime.ToString(System.String,System.IFormatProvider)"/>. + </summary> + <param name="dateToFormat">The date to convert to a string.</param> + <param name="writer">The writer to write to.</param> + <remarks> + <para> + Uses the date format string supplied to the constructor to call + the <see cref="M:System.DateTime.ToString(System.String,System.IFormatProvider)"/> method to format the date. + </para> + </remarks> + </member> + <member name="F:log4net.DateFormatter.SimpleDateFormatter.m_formatString"> + <summary> + The format string used to format the <see cref="T:System.DateTime"/>. + </summary> + <remarks> + <para> + The format string must be compatible with the options + that can be supplied to <see cref="M:System.DateTime.ToString(System.String,System.IFormatProvider)"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Filter.DenyAllFilter"> + <summary> + This filter drops all <see cref="T:log4net.Core.LoggingEvent"/>. + </summary> + <remarks> + <para> + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Filter.FilterSkeleton"> + <summary> + Subclass this type to implement customized logging event filtering + </summary> + <remarks> + <para> + Users should extend this class to implement customized logging + event filtering. Note that <see cref="T:log4net.Repository.Hierarchy.Logger"/> and + <see cref="T:log4net.Appender.AppenderSkeleton"/>, the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + </para> + <para> + This abstract class assumes and also imposes that filters be + organized in a linear chain. The <see cref="M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)"/> + method of each filter is called sequentially, in the order of their + addition to the chain. + </para> + <para> + The <see cref="M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)"/> method must return one + of the integer constants <see cref="F:log4net.Filter.FilterDecision.Deny"/>, + <see cref="F:log4net.Filter.FilterDecision.Neutral"/> or <see cref="F:log4net.Filter.FilterDecision.Accept"/>. + </para> + <para> + If the value <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned, then the log event is dropped + immediately without consulting with the remaining filters. + </para> + <para> + If the value <see cref="F:log4net.Filter.FilterDecision.Neutral"/> is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + </para> + <para> + If the value <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned, then the log + event is logged without consulting the remaining filters. + </para> + <para> + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Filter.IFilter"> + <summary> + Implement this interface to provide customized logging event filtering + </summary> + <remarks> + <para> + Users should implement this interface to implement customized logging + event filtering. Note that <see cref="T:log4net.Repository.Hierarchy.Logger"/> and + <see cref="T:log4net.Appender.AppenderSkeleton"/>, the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + </para> + <para> + This abstract class assumes and also imposes that filters be + organized in a linear chain. The <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/> + method of each filter is called sequentially, in the order of their + addition to the chain. + </para> + <para> + The <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/> method must return one + of the integer constants <see cref="F:log4net.Filter.FilterDecision.Deny"/>, + <see cref="F:log4net.Filter.FilterDecision.Neutral"/> or <see cref="F:log4net.Filter.FilterDecision.Accept"/>. + </para> + <para> + If the value <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned, then the log event is dropped + immediately without consulting with the remaining filters. + </para> + <para> + If the value <see cref="F:log4net.Filter.FilterDecision.Neutral"/> is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + </para> + <para> + If the value <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned, then the log + event is logged without consulting the remaining filters. + </para> + <para> + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Decide if the logging event should be logged through an appender. + </summary> + <param name="loggingEvent">The LoggingEvent to decide upon</param> + <returns>The decision of the filter</returns> + <remarks> + <para> + If the decision is <see cref="F:log4net.Filter.FilterDecision.Deny"/>, then the event will be + dropped. If the decision is <see cref="F:log4net.Filter.FilterDecision.Neutral"/>, then the next + filter, if any, will be invoked. If the decision is <see cref="F:log4net.Filter.FilterDecision.Accept"/> then + the event will be logged without consulting with other filters in + the chain. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.IFilter.Next"> + <summary> + Property to get and set the next filter + </summary> + <value> + The next filter in the chain + </value> + <remarks> + <para> + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + </para> + </remarks> + </member> + <member name="F:log4net.Filter.FilterSkeleton.m_next"> + <summary> + Points to the next filter in the filter chain. + </summary> + <remarks> + <para> + See <see cref="P:log4net.Filter.FilterSkeleton.Next"/> for more information. + </para> + </remarks> + </member> + <member name="M:log4net.Filter.FilterSkeleton.ActivateOptions"> + <summary> + Initialize the filter with the options set + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Filter.FilterSkeleton.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Filter.FilterSkeleton.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Filter.FilterSkeleton.ActivateOptions"/> must be called again. + </para> + <para> + Typically filter's options become active immediately on set, + however this method must still be called. + </para> + </remarks> + </member> + <member name="M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)"> + <summary> + Decide if the <see cref="T:log4net.Core.LoggingEvent"/> should be logged through an appender. + </summary> + <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> to decide upon</param> + <returns>The decision of the filter</returns> + <remarks> + <para> + If the decision is <see cref="F:log4net.Filter.FilterDecision.Deny"/>, then the event will be + dropped. If the decision is <see cref="F:log4net.Filter.FilterDecision.Neutral"/>, then the next + filter, if any, will be invoked. If the decision is <see cref="F:log4net.Filter.FilterDecision.Accept"/> then + the event will be logged without consulting with other filters in + the chain. + </para> + <para> + This method is marked <c>abstract</c> and must be implemented + in a subclass. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.FilterSkeleton.Next"> + <summary> + Property to get and set the next filter + </summary> + <value> + The next filter in the chain + </value> + <remarks> + <para> + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + </para> + </remarks> + </member> + <member name="M:log4net.Filter.DenyAllFilter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Always returns the integer constant <see cref="F:log4net.Filter.FilterDecision.Deny"/> + </summary> + <param name="loggingEvent">the LoggingEvent to filter</param> + <returns>Always returns <see cref="F:log4net.Filter.FilterDecision.Deny"/></returns> + <remarks> + <para> + Ignores the event being logged and just returns + <see cref="F:log4net.Filter.FilterDecision.Deny"/>. This can be used to change the default filter + chain behavior from <see cref="F:log4net.Filter.FilterDecision.Accept"/> to <see cref="F:log4net.Filter.FilterDecision.Deny"/>. This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + </para> + </remarks> + </member> + <member name="T:log4net.Filter.FilterDecision"> + <summary> + The return result from <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/> + </summary> + <remarks> + <para> + The return result from <see cref="M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)"/> + </para> + </remarks> + </member> + <member name="F:log4net.Filter.FilterDecision.Deny"> + <summary> + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + </summary> + </member> + <member name="F:log4net.Filter.FilterDecision.Neutral"> + <summary> + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + </summary> + </member> + <member name="F:log4net.Filter.FilterDecision.Accept"> + <summary> + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + </summary> + </member> + <member name="T:log4net.Filter.LevelMatchFilter"> + <summary> + This is a very simple filter based on <see cref="T:log4net.Core.Level"/> matching. + </summary> + <remarks> + <para> + The filter admits two options <see cref="P:log4net.Filter.LevelMatchFilter.LevelToMatch"/> and + <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/>. If there is an exact match between the value + of the <see cref="P:log4net.Filter.LevelMatchFilter.LevelToMatch"/> option and the <see cref="T:log4net.Core.Level"/> of the + <see cref="T:log4net.Core.LoggingEvent"/>, then the <see cref="M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)"/> method returns <see cref="F:log4net.Filter.FilterDecision.Accept"/> in + case the <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/> option value is set + to <c>true</c>, if it is <c>false</c> then + <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. If the <see cref="T:log4net.Core.Level"/> does not match then + the result will be <see cref="F:log4net.Filter.FilterDecision.Neutral"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch"> + <summary> + flag to indicate if the filter should <see cref="F:log4net.Filter.FilterDecision.Accept"/> on a match + </summary> + </member> + <member name="F:log4net.Filter.LevelMatchFilter.m_levelToMatch"> + <summary> + the <see cref="T:log4net.Core.Level"/> to match against + </summary> + </member> + <member name="M:log4net.Filter.LevelMatchFilter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Tests if the <see cref="T:log4net.Core.Level"/> of the logging event matches that of the filter + </summary> + <param name="loggingEvent">the event to filter</param> + <returns>see remarks</returns> + <remarks> + <para> + If the <see cref="T:log4net.Core.Level"/> of the event matches the level of the + filter then the result of the function depends on the + value of <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/>. If it is true then + the function will return <see cref="F:log4net.Filter.FilterDecision.Accept"/>, it it is false then it + will return <see cref="F:log4net.Filter.FilterDecision.Deny"/>. If the <see cref="T:log4net.Core.Level"/> does not match then + the result will be <see cref="F:log4net.Filter.FilterDecision.Neutral"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"> + <summary> + <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.LevelMatchFilter.LevelToMatch"/> + </summary> + <remarks> + <para> + The <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/> property is a flag that determines + the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the + flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the + logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Deny"/> the event. + </para> + <para> + The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LevelMatchFilter.LevelToMatch"> + <summary> + The <see cref="T:log4net.Core.Level"/> that the filter will match + </summary> + <remarks> + <para> + The level that this filter will attempt to match against the + <see cref="T:log4net.Core.LoggingEvent"/> level. If a match is found then + the result depends on the value of <see cref="P:log4net.Filter.LevelMatchFilter.AcceptOnMatch"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Filter.LevelRangeFilter"> + <summary> + This is a simple filter based on <see cref="T:log4net.Core.Level"/> matching. + </summary> + <remarks> + <para> + The filter admits three options <see cref="P:log4net.Filter.LevelRangeFilter.LevelMin"/> and <see cref="P:log4net.Filter.LevelRangeFilter.LevelMax"/> + that determine the range of priorities that are matched, and + <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>. If there is a match between the range + of priorities and the <see cref="T:log4net.Core.Level"/> of the <see cref="T:log4net.Core.LoggingEvent"/>, then the + <see cref="M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)"/> method returns <see cref="F:log4net.Filter.FilterDecision.Accept"/> in case the <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/> + option value is set to <c>true</c>, if it is <c>false</c> + then <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. If there is no match, <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch"> + <summary> + Flag to indicate the behavior when matching a <see cref="T:log4net.Core.Level"/> + </summary> + </member> + <member name="F:log4net.Filter.LevelRangeFilter.m_levelMin"> + <summary> + the minimum <see cref="T:log4net.Core.Level"/> value to match + </summary> + </member> + <member name="F:log4net.Filter.LevelRangeFilter.m_levelMax"> + <summary> + the maximum <see cref="T:log4net.Core.Level"/> value to match + </summary> + </member> + <member name="M:log4net.Filter.LevelRangeFilter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Check if the event should be logged. + </summary> + <param name="loggingEvent">the logging event to check</param> + <returns>see remarks</returns> + <remarks> + <para> + If the <see cref="T:log4net.Core.Level"/> of the logging event is outside the range + matched by this filter then <see cref="F:log4net.Filter.FilterDecision.Deny"/> + is returned. If the <see cref="T:log4net.Core.Level"/> is matched then the value of + <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/> is checked. If it is true then + <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned, otherwise + <see cref="F:log4net.Filter.FilterDecision.Neutral"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"> + <summary> + <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.LevelRangeFilter.LevelMin"/> and <see cref="P:log4net.Filter.LevelRangeFilter.LevelMax"/> + </summary> + <remarks> + <para> + The <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/> property is a flag that determines + the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the + flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the + logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Neutral"/> the event. + </para> + <para> + The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LevelRangeFilter.LevelMin"> + <summary> + Set the minimum matched <see cref="T:log4net.Core.Level"/> + </summary> + <remarks> + <para> + The minimum level that this filter will attempt to match against the + <see cref="T:log4net.Core.LoggingEvent"/> level. If a match is found then + the result depends on the value of <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LevelRangeFilter.LevelMax"> + <summary> + Sets the maximum matched <see cref="T:log4net.Core.Level"/> + </summary> + <remarks> + <para> + The maximum level that this filter will attempt to match against the + <see cref="T:log4net.Core.LoggingEvent"/> level. If a match is found then + the result depends on the value of <see cref="P:log4net.Filter.LevelRangeFilter.AcceptOnMatch"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Filter.LoggerMatchFilter"> + <summary> + Simple filter to match a string in the event's logger name. + </summary> + <remarks> + <para> + The works very similar to the <see cref="T:log4net.Filter.LevelMatchFilter"/>. It admits two + options <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> and <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/>. If the + <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> of the <see cref="T:log4net.Core.LoggingEvent"/> starts + with the value of the <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> option, then the + <see cref="M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)"/> method returns <see cref="F:log4net.Filter.FilterDecision.Accept"/> in + case the <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/> option value is set to <c>true</c>, + if it is <c>false</c> then <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. + </para> + </remarks> + <author>Daniel Cazzulino</author> + </member> + <member name="F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch"> + <summary> + Flag to indicate the behavior when we have a match + </summary> + </member> + <member name="F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch"> + <summary> + The logger name string to substring match against the event + </summary> + </member> + <member name="M:log4net.Filter.LoggerMatchFilter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Check if this filter should allow the event to be logged + </summary> + <param name="loggingEvent">the event being logged</param> + <returns>see remarks</returns> + <remarks> + <para> + The rendered message is matched against the <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/>. + If the <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> equals the beginning of + the incoming <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> (<see cref="M:System.String.StartsWith(System.String)"/>) + then a match will have occurred. If no match occurs + this function will return <see cref="F:log4net.Filter.FilterDecision.Neutral"/> + allowing other filters to check the event. If a match occurs then + the value of <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/> is checked. If it is + true then <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned otherwise + <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"> + <summary> + <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"/> + </summary> + <remarks> + <para> + The <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/> property is a flag that determines + the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the + flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the + logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Deny"/> the event. + </para> + <para> + The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.LoggerMatchFilter.LoggerToMatch"> + <summary> + The <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> that the filter will match + </summary> + <remarks> + <para> + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using <see cref="M:System.String.StartsWith(System.String)"/>). The match is + case sensitive. If a match is found then + the result depends on the value of <see cref="P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Filter.MdcFilter"> + <summary> + Simple filter to match a keyed string in the <see cref="T:log4net.MDC"/> + </summary> + <remarks> + <para> + Simple filter to match a keyed string in the <see cref="T:log4net.MDC"/> + </para> + <para> + As the MDC has been replaced with layered properties the + <see cref="T:log4net.Filter.PropertyFilter"/> should be used instead. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Filter.PropertyFilter"> + <summary> + Simple filter to match a string an event property + </summary> + <remarks> + <para> + Simple filter to match a string in the value for a + specific event property + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="T:log4net.Filter.StringMatchFilter"> + <summary> + Simple filter to match a string in the rendered message + </summary> + <remarks> + <para> + Simple filter to match a string in the rendered message + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Filter.StringMatchFilter.m_acceptOnMatch"> + <summary> + Flag to indicate the behavior when we have a match + </summary> + </member> + <member name="F:log4net.Filter.StringMatchFilter.m_stringToMatch"> + <summary> + The string to substring match against the message + </summary> + </member> + <member name="F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch"> + <summary> + A string regex to match + </summary> + </member> + <member name="F:log4net.Filter.StringMatchFilter.m_regexToMatch"> + <summary> + A regex object to match (generated from m_stringRegexToMatch) + </summary> + </member> + <member name="M:log4net.Filter.StringMatchFilter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Filter.StringMatchFilter.ActivateOptions"> + <summary> + Initialize and precompile the Regex if required + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Filter.StringMatchFilter.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Filter.StringMatchFilter.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Filter.StringMatchFilter.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Check if this filter should allow the event to be logged + </summary> + <param name="loggingEvent">the event being logged</param> + <returns>see remarks</returns> + <remarks> + <para> + The rendered message is matched against the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/>. + If the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return <see cref="F:log4net.Filter.FilterDecision.Neutral"/> + allowing other filters to check the event. If a match occurs then + the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/> is checked. If it is + true then <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned otherwise + <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"> + <summary> + <see cref="F:log4net.Filter.FilterDecision.Accept"/> when matching <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> or <see cref="P:log4net.Filter.StringMatchFilter.RegexToMatch"/> + </summary> + <remarks> + <para> + The <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/> property is a flag that determines + the behavior when a matching <see cref="T:log4net.Core.Level"/> is found. If the + flag is set to true then the filter will <see cref="F:log4net.Filter.FilterDecision.Accept"/> the + logging event, otherwise it will <see cref="F:log4net.Filter.FilterDecision.Neutral"/> the event. + </para> + <para> + The default is <c>true</c> i.e. to <see cref="F:log4net.Filter.FilterDecision.Accept"/> the event. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.StringMatchFilter.StringToMatch"> + <summary> + Sets the static string to match + </summary> + <remarks> + <para> + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/>. + </para> + <para> + One of <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> or <see cref="P:log4net.Filter.StringMatchFilter.RegexToMatch"/> + must be specified. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.StringMatchFilter.RegexToMatch"> + <summary> + Sets the regular expression to match + </summary> + <remarks> + <para> + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/>. + </para> + <para> + One of <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> or <see cref="P:log4net.Filter.StringMatchFilter.RegexToMatch"/> + must be specified. + </para> + </remarks> + </member> + <member name="F:log4net.Filter.PropertyFilter.m_key"> + <summary> + The key to use to lookup the string from the event properties + </summary> + </member> + <member name="M:log4net.Filter.PropertyFilter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)"> + <summary> + Check if this filter should allow the event to be logged + </summary> + <param name="loggingEvent">the event being logged</param> + <returns>see remarks</returns> + <remarks> + <para> + The event property for the <see cref="P:log4net.Filter.PropertyFilter.Key"/> is matched against + the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/>. + If the <see cref="P:log4net.Filter.StringMatchFilter.StringToMatch"/> occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return <see cref="F:log4net.Filter.FilterDecision.Neutral"/> + allowing other filters to check the event. If a match occurs then + the value of <see cref="P:log4net.Filter.StringMatchFilter.AcceptOnMatch"/> is checked. If it is + true then <see cref="F:log4net.Filter.FilterDecision.Accept"/> is returned otherwise + <see cref="F:log4net.Filter.FilterDecision.Deny"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Filter.PropertyFilter.Key"> + <summary> + The key to lookup in the event properties and then match against. + </summary> + <remarks> + <para> + The key name to use to lookup in the properties map of the + <see cref="T:log4net.Core.LoggingEvent"/>. The match will be performed against + the value of this property if it exists. + </para> + </remarks> + </member> + <member name="T:log4net.Filter.NdcFilter"> + <summary> + Simple filter to match a string in the <see cref="T:log4net.NDC"/> + </summary> + <remarks> + <para> + Simple filter to match a string in the <see cref="T:log4net.NDC"/> + </para> + <para> + As the MDC has been replaced with named stacks stored in the + properties collections the <see cref="T:log4net.Filter.PropertyFilter"/> should + be used instead. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Filter.NdcFilter.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Sets the <see cref="P:log4net.Filter.PropertyFilter.Key"/> to <c>"NDC"</c>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.AppDomainPatternConverter"> + <summary> + Write the event appdomain name to the output + </summary> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.LoggingEvent.Domain"/> to the output writer. + </para> + </remarks> + <author>Daniel Cazzulino</author> + <author>Nicko Cadell</author> + </member> + <member name="T:log4net.Layout.Pattern.PatternLayoutConverter"> + <summary> + Abstract class that provides the formatting functionality that + derived classes need. + </summary> + <remarks> + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="T:log4net.Util.PatternConverter"> + <summary> + Abstract class that provides the formatting functionality that + derived classes need. + </summary> + <remarks> + <para> + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Util.PatternConverter.c_renderBufferSize"> + <summary> + Initial buffer size + </summary> + </member> + <member name="F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity"> + <summary> + Maximum buffer size before it is recycled + </summary> + </member> + <member name="M:log4net.Util.PatternConverter.#ctor"> + <summary> + Protected constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.PatternConverter"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Evaluate this pattern converter and write the output to a writer. + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">The state object on which the pattern converter should be executed.</param> + <remarks> + <para> + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)"> + <summary> + Set the next pattern converter in the chains + </summary> + <param name="patternConverter">the pattern converter that should follow this converter in the chain</param> + <returns>the next converter</returns> + <remarks> + <para> + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)"> + <summary> + Write the pattern converter to the writer with appropriate formatting + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">The state object on which the pattern converter should be executed.</param> + <remarks> + <para> + This method calls <see cref="M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)"/> to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the <see cref="P:log4net.Util.PatternConverter.FormattingInfo"/> then this method will + apply those formattings before writing the output. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)"> + <summary> + Fast space padding method. + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> to which the spaces will be appended.</param> + <param name="length">The number of spaces to be padded.</param> + <remarks> + <para> + Fast space padding method. + </para> + </remarks> + </member> + <member name="F:log4net.Util.PatternConverter.m_option"> + <summary> + The option string to the converter + </summary> + </member> + <member name="M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)"> + <summary> + Write an dictionary to a <see cref="T:System.IO.TextWriter"/> + </summary> + <param name="writer">the writer to write to</param> + <param name="repository">a <see cref="T:log4net.Repository.ILoggerRepository"/> to use for object conversion</param> + <param name="value">the value to write to the writer</param> + <remarks> + <para> + Writes the <see cref="T:System.Collections.IDictionary"/> to a writer in the form: + </para> + <code> + {key1=value1, key2=value2, key3=value3} + </code> + <para> + If the <see cref="T:log4net.Repository.ILoggerRepository"/> specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)"> + <summary> + Write an object to a <see cref="T:System.IO.TextWriter"/> + </summary> + <param name="writer">the writer to write to</param> + <param name="repository">a <see cref="T:log4net.Repository.ILoggerRepository"/> to use for object conversion</param> + <param name="value">the value to write to the writer</param> + <remarks> + <para> + Writes the Object to a writer. If the <see cref="T:log4net.Repository.ILoggerRepository"/> specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + </para> + </remarks> + </member> + <member name="P:log4net.Util.PatternConverter.Next"> + <summary> + Get the next pattern converter in the chain + </summary> + <value> + the next pattern converter in the chain + </value> + <remarks> + <para> + Get the next pattern converter in the chain + </para> + </remarks> + </member> + <member name="P:log4net.Util.PatternConverter.FormattingInfo"> + <summary> + Gets or sets the formatting info for this converter + </summary> + <value> + The formatting info for this converter + </value> + <remarks> + <para> + Gets or sets the formatting info for this converter + </para> + </remarks> + </member> + <member name="P:log4net.Util.PatternConverter.Option"> + <summary> + Gets or sets the option value for this converter + </summary> + <summary> + The option for this converter + </summary> + <remarks> + <para> + Gets or sets the option value for this converter + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Layout.Pattern.PatternLayoutConverter"/> class. + </summary> + </member> + <member name="M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">The <see cref="T:log4net.Core.LoggingEvent"/> on which the pattern converter should be executed.</param> + </member> + <member name="M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">The state object on which the pattern converter should be executed.</param> + </member> + <member name="F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException"> + <summary> + Flag indicating if this converter handles exceptions + </summary> + <remarks> + <c>false</c> if this converter handles exceptions + </remarks> + </member> + <member name="P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException"> + <summary> + Flag indicating if this converter handles the logging event exception + </summary> + <value><c>false</c> if this converter handles the logging event exception</value> + <remarks> + <para> + If this converter handles the exception object contained within + <see cref="T:log4net.Core.LoggingEvent"/>, then this property should be set to + <c>false</c>. Otherwise, if the layout ignores the exception + object, then the property should be set to <c>true</c>. + </para> + <para> + Set this value to override a this default setting. The default + value is <c>true</c>, this converter does not handle the exception. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the event appdomain name to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.LoggingEvent.Domain"/> to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.DatePatternConverter"> + <summary> + Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format + the date of a <see cref="T:log4net.Core.LoggingEvent"/>. + </summary> + <remarks> + <para> + Render the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> to the writer as a string. + </para> + <para> + The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines + the formatting of the date. The following values are allowed: + <list type="definition"> + <listheader> + <term>Option value</term> + <description>Output</description> + </listheader> + <item> + <term>ISO8601</term> + <description> + Uses the <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/> formatter. + Formats using the <c>"yyyy-MM-dd HH:mm:ss,fff"</c> pattern. + </description> + </item> + <item> + <term>DATE</term> + <description> + Uses the <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> formatter. + Formats using the <c>"dd MMM yyyy HH:mm:ss,fff"</c> for example, <c>"06 Nov 1994 15:49:37,459"</c>. + </description> + </item> + <item> + <term>ABSOLUTE</term> + <description> + Uses the <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/> formatter. + Formats using the <c>"HH:mm:ss,yyyy"</c> for example, <c>"15:49:37,459"</c>. + </description> + </item> + <item> + <term>other</term> + <description> + Any other pattern string uses the <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/> formatter. + This formatter passes the pattern string to the <see cref="T:System.DateTime"/> + <see cref="M:System.DateTime.ToString(System.String)"/> method. + For details on valid patterns see + <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp">DateTimeFormatInfo Class</a>. + </description> + </item> + </list> + </para> + <para> + The <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> is in the local time zone and is rendered in that zone. + To output the time in Universal time see <see cref="T:log4net.Layout.Pattern.UtcDatePatternConverter"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter"> + <summary> + The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string + </summary> + <remarks> + <para> + The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"> + <summary> + Initialize the converter pattern based on the <see cref="P:log4net.Util.PatternConverter.Option"/> property. + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Convert the pattern into the rendered message + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Pass the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> to the <see cref="T:log4net.DateFormatter.IDateFormatter"/> + for it to render it to the writer. + </para> + <para> + The <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> passed is in the local time zone. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.ExceptionPatternConverter"> + <summary> + Write the exception text to the output + </summary> + <remarks> + <para> + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + </para> + <para> + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor"> + <summary> + Default constructor + </summary> + </member> + <member name="M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the exception text to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + </para> + <para> + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.FileLocationPatternConverter"> + <summary> + Writes the caller location file name to the output + </summary> + <remarks> + <para> + Writes the value of the <see cref="P:log4net.Core.LocationInfo.FileName"/> for + the event to the output writer. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the caller location file name to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the value of the <see cref="P:log4net.Core.LocationInfo.FileName"/> for + the <paramref name="loggingEvent"/> to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.FullLocationPatternConverter"> + <summary> + Write the caller location info to the output + </summary> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.LocationInfo.FullInfo"/> to the output writer. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the caller location info to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.LocationInfo.FullInfo"/> to the output writer. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.IdentityPatternConverter"> + <summary> + Writes the event identity to the output + </summary> + <remarks> + <para> + Writes the value of the <see cref="P:log4net.Core.LoggingEvent.Identity"/> to + the output writer. + </para> + </remarks> + <author>Daniel Cazzulino</author> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Writes the event identity to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the value of the <paramref name="loggingEvent"/> + <see cref="P:log4net.Core.LoggingEvent.Identity"/> to + the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.LevelPatternConverter"> + <summary> + Write the event level to the output + </summary> + <remarks> + <para> + Writes the display name of the event <see cref="P:log4net.Core.LoggingEvent.Level"/> + to the writer. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the event level to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.Level.DisplayName"/> of the <paramref name="loggingEvent"/> <see cref="P:log4net.Core.LoggingEvent.Level"/> + to the <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.LineLocationPatternConverter"> + <summary> + Write the caller location line number to the output + </summary> + <remarks> + <para> + Writes the value of the <see cref="P:log4net.Core.LocationInfo.LineNumber"/> for + the event to the output writer. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the caller location line number to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the value of the <see cref="P:log4net.Core.LocationInfo.LineNumber"/> for + the <paramref name="loggingEvent"/> to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.LoggerPatternConverter"> + <summary> + Converter for logger name + </summary> + <remarks> + <para> + Outputs the <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> of the event. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="T:log4net.Layout.Pattern.NamedPatternConverter"> + <summary> + Converter to output and truncate <c>'.'</c> separated strings + </summary> + <remarks> + <para> + This abstract class supports truncating a <c>'.'</c> separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + </para> + <para> + Subclasses should override the <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"/> method to + return the fully qualified string. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"> + <summary> + Initialize the converter + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"> + <summary> + Get the fully qualified string data + </summary> + <param name="loggingEvent">the event being logged</param> + <returns>the fully qualified name</returns> + <remarks> + <para> + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + </para> + <para> + Return the fully qualified <c>'.'</c> (dot/period) separated string. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Convert the pattern to the rendered message + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + Render the <see cref="M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"/> to the precision + specified by the <see cref="P:log4net.Util.PatternConverter.Option"/> property. + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"> + <summary> + Gets the fully qualified name of the logger + </summary> + <param name="loggingEvent">the event being logged</param> + <returns>The fully qualified logger name</returns> + <remarks> + <para> + Returns the <see cref="P:log4net.Core.LoggingEvent.LoggerName"/> of the <paramref name="loggingEvent"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.MessagePatternConverter"> + <summary> + Writes the event message to the output + </summary> + <remarks> + <para> + Uses the <see cref="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)"/> method + to write out the event message. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Writes the event message to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Uses the <see cref="M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)"/> method + to write out the event message. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.MethodLocationPatternConverter"> + <summary> + Write the method name to the output + </summary> + <remarks> + <para> + Writes the caller location <see cref="P:log4net.Core.LocationInfo.MethodName"/> to + the output. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the method name to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the caller location <see cref="P:log4net.Core.LocationInfo.MethodName"/> to + the output. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.NdcPatternConverter"> + <summary> + Converter to include event NDC + </summary> + <remarks> + <para> + Outputs the value of the event property named <c>NDC</c>. + </para> + <para> + The <see cref="T:log4net.Layout.Pattern.PropertyPatternConverter"/> should be used instead. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the event NDC to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the <c>NDC</c> property. + </para> + <para> + The <see cref="T:log4net.Layout.Pattern.PropertyPatternConverter"/> should be used instead. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.PropertyPatternConverter"> + <summary> + Property pattern converter + </summary> + <remarks> + <para> + Writes out the value of a named property. The property name + should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/> + property. + </para> + <para> + If the <see cref="P:log4net.Util.PatternConverter.Option"/> is set to <c>null</c> + then all the properties are written as key value pairs. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the property value to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes out the value of a named property. The property name + should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/> + property. + </para> + <para> + If the <see cref="P:log4net.Util.PatternConverter.Option"/> is set to <c>null</c> + then all the properties are written as key value pairs. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.RelativeTimePatternConverter"> + <summary> + Converter to output the relative time of the event + </summary> + <remarks> + <para> + Converter to output the time of the event relative to the start of the program. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the relative time to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> + and the <see cref="P:log4net.Core.LoggingEvent.StartTime"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)"> + <summary> + Helper method to get the time difference between two DateTime objects + </summary> + <param name="start">start time (in the current local time zone)</param> + <param name="end">end time (in the current local time zone)</param> + <returns>the time difference in milliseconds</returns> + </member> + <member name="T:log4net.Layout.Pattern.ThreadPatternConverter"> + <summary> + Converter to include event thread name + </summary> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.LoggingEvent.ThreadName"/> to the output. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the ThreadName to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Writes the <see cref="P:log4net.Core.LoggingEvent.ThreadName"/> to the <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.TypeNamePatternConverter"> + <summary> + Pattern converter for the class name + </summary> + <remarks> + <para> + Outputs the <see cref="P:log4net.Core.LocationInfo.ClassName"/> of the event. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)"> + <summary> + Gets the fully qualified name of the class + </summary> + <param name="loggingEvent">the event being logged</param> + <returns>The fully qualified type name for the caller location</returns> + <remarks> + <para> + Returns the <see cref="P:log4net.Core.LocationInfo.ClassName"/> of the <paramref name="loggingEvent"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Pattern.UserNamePatternConverter"> + <summary> + Converter to include event user name + </summary> + <author>Douglas de la Torre</author> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Convert the pattern to the rendered message + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + </member> + <member name="T:log4net.Layout.Pattern.UtcDatePatternConverter"> + <summary> + Write the TimeStamp to the output + </summary> + <remarks> + <para> + Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format + the date of a <see cref="T:log4net.Core.LoggingEvent"/>. + </para> + <para> + Uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> + in Universal time. + </para> + <para> + See the <see cref="T:log4net.Layout.Pattern.DatePatternConverter"/> for details on the date pattern syntax. + </para> + </remarks> + <seealso cref="T:log4net.Layout.Pattern.DatePatternConverter"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Write the TimeStamp to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Pass the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> to the <see cref="T:log4net.DateFormatter.IDateFormatter"/> + for it to render it to the writer. + </para> + <para> + The <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> passed is in the local time zone, this is converted + to Universal time before it is rendered. + </para> + </remarks> + <seealso cref="T:log4net.Layout.Pattern.DatePatternConverter"/> + </member> + <member name="T:log4net.Layout.ExceptionLayout"> + <summary> + A Layout that renders only the Exception text from the logging event + </summary> + <remarks> + <para> + A Layout that renders only the Exception text from the logging event. + </para> + <para> + This Layout should only be used with appenders that utilize multiple + layouts (e.g. <see cref="T:log4net.Appender.AdoNetAppender"/>). + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Layout.LayoutSkeleton"> + <summary> + Extend this abstract class to create your own log layout format. + </summary> + <remarks> + <para> + This is the base implementation of the <see cref="T:log4net.Layout.ILayout"/> + interface. Most layout objects should extend this class. + </para> + </remarks> + <remarks> + <note type="inheritinfo"> + <para> + Subclasses must implement the <see cref="M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"/> + method. + </para> + <para> + Subclasses should set the <see cref="P:log4net.Layout.LayoutSkeleton.IgnoresException"/> in their default + constructor. + </para> + </note> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Layout.ILayout"> + <summary> + Interface implemented by layout objects + </summary> + <remarks> + <para> + An <see cref="T:log4net.Layout.ILayout"/> object is used to format a <see cref="T:log4net.Core.LoggingEvent"/> + as text. The <see cref="M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"/> method is called by an + appender to transform the <see cref="T:log4net.Core.LoggingEvent"/> into a string. + </para> + <para> + The layout can also supply <see cref="P:log4net.Layout.ILayout.Header"/> and <see cref="P:log4net.Layout.ILayout.Footer"/> + text that is appender before any events and after all the events respectively. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Implement this method to create your own layout format. + </summary> + <param name="writer">The TextWriter to write the formatted event to</param> + <param name="loggingEvent">The event to format</param> + <remarks> + <para> + This method is called by an appender to format + the <paramref name="loggingEvent"/> as text and output to a writer. + </para> + <para> + If the caller does not have a <see cref="T:System.IO.TextWriter"/> and prefers the + event to be formatted as a <see cref="T:System.String"/> then the following + code can be used to format the event into a <see cref="T:System.IO.StringWriter"/>. + </para> + <code lang="C#"> + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + </code> + </remarks> + </member> + <member name="P:log4net.Layout.ILayout.ContentType"> + <summary> + The content type output by this layout. + </summary> + <value>The content type</value> + <remarks> + <para> + The content type output by this layout. + </para> + <para> + This is a MIME type e.g. <c>"text/plain"</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.ILayout.Header"> + <summary> + The header for the layout format. + </summary> + <value>the layout header</value> + <remarks> + <para> + The Header text will be appended before any logging events + are formatted and appended. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.ILayout.Footer"> + <summary> + The footer for the layout format. + </summary> + <value>the layout footer</value> + <remarks> + <para> + The Footer text will be appended after all the logging events + have been formatted and appended. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.ILayout.IgnoresException"> + <summary> + Flag indicating if this layout handle exceptions + </summary> + <value><c>false</c> if this layout handles exceptions</value> + <remarks> + <para> + If this layout handles the exception object contained within + <see cref="T:log4net.Core.LoggingEvent"/>, then the layout should return + <c>false</c>. Otherwise, if the layout ignores the exception + object, then the layout should return <c>true</c>. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.LayoutSkeleton.m_header"> + <summary> + The header text + </summary> + <remarks> + <para> + See <see cref="P:log4net.Layout.LayoutSkeleton.Header"/> for more information. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.LayoutSkeleton.m_footer"> + <summary> + The footer text + </summary> + <remarks> + <para> + See <see cref="P:log4net.Layout.LayoutSkeleton.Footer"/> for more information. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.LayoutSkeleton.m_ignoresException"> + <summary> + Flag indicating if this layout handles exceptions + </summary> + <remarks> + <para> + <c>false</c> if this layout handles exceptions + </para> + </remarks> + </member> + <member name="M:log4net.Layout.LayoutSkeleton.#ctor"> + <summary> + Empty default constructor + </summary> + <remarks> + <para> + Empty default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Layout.LayoutSkeleton.ActivateOptions"> + <summary> + Activate component options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.LayoutSkeleton.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.LayoutSkeleton.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.LayoutSkeleton.ActivateOptions"/> must be called again. + </para> + <para> + This method must be implemented by the subclass. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Implement this method to create your own layout format. + </summary> + <param name="writer">The TextWriter to write the formatted event to</param> + <param name="loggingEvent">The event to format</param> + <remarks> + <para> + This method is called by an appender to format + the <paramref name="loggingEvent"/> as text. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.LayoutSkeleton.ContentType"> + <summary> + The content type output by this layout. + </summary> + <value>The content type is <c>"text/plain"</c></value> + <remarks> + <para> + The content type output by this layout. + </para> + <para> + This base class uses the value <c>"text/plain"</c>. + To change this value a subclass must override this + property. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.LayoutSkeleton.Header"> + <summary> + The header for the layout format. + </summary> + <value>the layout header</value> + <remarks> + <para> + The Header text will be appended before any logging events + are formatted and appended. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.LayoutSkeleton.Footer"> + <summary> + The footer for the layout format. + </summary> + <value>the layout footer</value> + <remarks> + <para> + The Footer text will be appended after all the logging events + have been formatted and appended. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.LayoutSkeleton.IgnoresException"> + <summary> + Flag indicating if this layout handles exceptions + </summary> + <value><c>false</c> if this layout handles exceptions</value> + <remarks> + <para> + If this layout handles the exception object contained within + <see cref="T:log4net.Core.LoggingEvent"/>, then the layout should return + <c>false</c>. Otherwise, if the layout ignores the exception + object, then the layout should return <c>true</c>. + </para> + <para> + Set this value to override a this default setting. The default + value is <c>true</c>, this layout does not handle the exception. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.ExceptionLayout.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Constructs a ExceptionLayout + </para> + </remarks> + </member> + <member name="M:log4net.Layout.ExceptionLayout.ActivateOptions"> + <summary> + Activate component options + </summary> + <remarks> + <para> + Part of the <see cref="T:log4net.Core.IOptionHandler"/> component activation + framework. + </para> + <para> + This method does nothing as options become effective immediately. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Gets the exception text from the logging event + </summary> + <param name="writer">The TextWriter to write the formatted event to</param> + <param name="loggingEvent">the event being logged</param> + <remarks> + <para> + Write the exception string to the <see cref="T:System.IO.TextWriter"/>. + The exception string is retrieved from <see cref="M:log4net.Core.LoggingEvent.GetExceptionString"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.IRawLayout"> + <summary> + Interface for raw layout objects + </summary> + <remarks> + <para> + Interface used to format a <see cref="T:log4net.Core.LoggingEvent"/> + to an object. + </para> + <para> + This interface should not be confused with the + <see cref="T:log4net.Layout.ILayout"/> interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The <see cref="T:log4net.Layout.ILayout"/> + is not generally useful than this interface. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)"> + <summary> + Implement this method to create your own layout format. + </summary> + <param name="loggingEvent">The event to format</param> + <returns>returns the formatted event</returns> + <remarks> + <para> + Implement this method to create your own layout format. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.Layout2RawLayoutAdapter"> + <summary> + Adapts any <see cref="T:log4net.Layout.ILayout"/> to a <see cref="T:log4net.Layout.IRawLayout"/> + </summary> + <remarks> + <para> + Where an <see cref="T:log4net.Layout.IRawLayout"/> is required this adapter + allows a <see cref="T:log4net.Layout.ILayout"/> to be specified. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Layout.Layout2RawLayoutAdapter.m_layout"> + <summary> + The layout to adapt + </summary> + </member> + <member name="M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)"> + <summary> + Construct a new adapter + </summary> + <param name="layout">the layout to adapt</param> + <remarks> + <para> + Create the adapter for the specified <paramref name="layout"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)"> + <summary> + Format the logging event as an object. + </summary> + <param name="loggingEvent">The event to format</param> + <returns>returns the formatted event</returns> + <remarks> + <para> + Format the logging event as an object. + </para> + <para> + Uses the <see cref="T:log4net.Layout.ILayout"/> object supplied to + the constructor to perform the formatting. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.PatternLayout"> + <summary> + A flexible layout configurable with pattern string. + </summary> + <remarks> + <para> + The goal of this class is to <see cref="M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"/> a + <see cref="T:log4net.Core.LoggingEvent"/> as a string. The results + depend on the <i>conversion pattern</i>. + </para> + <para> + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + <i>conversion specifiers</i>. + </para> + <para> + <i>You are free to insert any literal text within the conversion + pattern.</i> + </para> + <para> + Each conversion specifier starts with a percent sign (%) and is + followed by optional <i>format modifiers</i> and a <i>conversion + pattern name</i>. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + </para> + <para> + Let the conversion pattern be <b>"%-5level [%thread]: %message%newline"</b> and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + </para> + <code lang="C#"> + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + </code> + <para>would yield the output</para> + <code> + DEBUG [main]: Message 1 + WARN [main]: Message 2 + </code> + <para> + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + <b>%-5level</b> means the level of the logging event should be left + justified to a width of five characters. + </para> + <para> + The recognized conversion pattern names are: + </para> + <list type="table"> + <listheader> + <term>Conversion Pattern Name</term> + <description>Effect</description> + </listheader> + <item> + <term>a</term> + <description>Equivalent to <b>appdomain</b></description> + </item> + <item> + <term>appdomain</term> + <description> + Used to output the friendly name of the AppDomain where the + logging event was generated. + </description> + </item> + <item> + <term>c</term> + <description>Equivalent to <b>logger</b></description> + </item> + <item> + <term>C</term> + <description>Equivalent to <b>type</b></description> + </item> + <item> + <term>class</term> + <description>Equivalent to <b>type</b></description> + </item> + <item> + <term>d</term> + <description>Equivalent to <b>date</b></description> + </item> + <item> + <term>date</term> + <description> + <para> + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the <c>%utcdate</c> pattern. + The date conversion + specifier may be followed by a <i>date format specifier</i> enclosed + between braces. For example, <b>%date{HH:mm:ss,fff}</b> or + <b>%date{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is + given then ISO8601 format is + assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>). + </para> + <para> + The date format specifier admits the same syntax as the + time pattern string of the <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + <para> + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>, + <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively + <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example, + <b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>. + </para> + <para> + These dedicated date formatters perform significantly + better than <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + </description> + </item> + <item> + <term>exception</term> + <description> + <para> + Used to output the exception passed in with the log message. + </para> + <para> + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + </para> + </description> + </item> + <item> + <term>F</term> + <description>Equivalent to <b>file</b></description> + </item> + <item> + <term>file</term> + <description> + <para> + Used to output the file name where the logging request was + issued. + </para> + <para> + <b>WARNING</b> Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + </para> + <para> + See the note below on the availability of caller location information. + </para> + </description> + </item> + <item> + <term>identity</term> + <description> + <para> + Used to output the user name for the currently active user + (Principal.Identity.Name). + </para> + <para> + <b>WARNING</b> Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + </para> + </description> + </item> + <item> + <term>l</term> + <description>Equivalent to <b>location</b></description> + </item> + <item> + <term>L</term> + <description>Equivalent to <b>line</b></description> + </item> + <item> + <term>location</term> + <description> + <para> + Used to output location information of the caller which generated + the logging event. + </para> + <para> + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + </para> + <para> + The location information can be very useful. However, its + generation is <b>extremely</b> slow. Its use should be avoided + unless execution speed is not an issue. + </para> + <para> + See the note below on the availability of caller location information. + </para> + </description> + </item> + <item> + <term>level</term> + <description> + <para> + Used to output the level of the logging event. + </para> + </description> + </item> + <item> + <term>line</term> + <description> + <para> + Used to output the line number from where the logging request + was issued. + </para> + <para> + <b>WARNING</b> Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + </para> + <para> + See the note below on the availability of caller location information. + </para> + </description> + </item> + <item> + <term>logger</term> + <description> + <para> + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + <i>precision specifier</i>, that is a decimal constant in + brackets. + </para> + <para> + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + </para> + <para> + For example, for the logger name "a.b.c" the pattern + <b>%logger{2}</b> will output "b.c". + </para> + </description> + </item> + <item> + <term>m</term> + <description>Equivalent to <b>message</b></description> + </item> + <item> + <term>M</term> + <description>Equivalent to <b>method</b></description> + </item> + <item> + <term>message</term> + <description> + <para> + Used to output the application supplied message associated with + the logging event. + </para> + </description> + </item> + <item> + <term>mdc</term> + <description> + <para> + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to <b>property</b>. + </para> + </description> + </item> + <item> + <term>method</term> + <description> + <para> + Used to output the method name where the logging request was + issued. + </para> + <para> + <b>WARNING</b> Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + </para> + <para> + See the note below on the availability of caller location information. + </para> + </description> + </item> + <item> + <term>n</term> + <description>Equivalent to <b>newline</b></description> + </item> + <item> + <term>newline</term> + <description> + <para> + Outputs the platform dependent line separator character or + characters. + </para> + <para> + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + </para> + </description> + </item> + <item> + <term>ndc</term> + <description> + <para> + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + </para> + </description> + </item> + <item> + <term>p</term> + <description>Equivalent to <b>level</b></description> + </item> + <item> + <term>P</term> + <description>Equivalent to <b>property</b></description> + </item> + <item> + <term>properties</term> + <description>Equivalent to <b>property</b></description> + </item> + <item> + <term>property</term> + <description> + <para> + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. <b>%property{user}</b> would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the <c>log4net:HostName</c> property is set to the name of machine on + which the event was originally logged. + </para> + <para> + If no key is specified, e.g. <b>%property</b> then all the keys and their + values are printed in a comma separated list. + </para> + <para> + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + </para> + <list type="definition"> + <item> + <term>the event properties</term> + <description> + The event has <see cref="P:log4net.Core.LoggingEvent.Properties"/> that can be set. These + properties are specific to this event only. + </description> + </item> + <item> + <term>the thread properties</term> + <description> + The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current + thread. These properties are shared by all events logged on this thread. + </description> + </item> + <item> + <term>the global properties</term> + <description> + The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These + properties are shared by all the threads in the AppDomain. + </description> + </item> + </list> + + </description> + </item> + <item> + <term>r</term> + <description>Equivalent to <b>timestamp</b></description> + </item> + <item> + <term>t</term> + <description>Equivalent to <b>thread</b></description> + </item> + <item> + <term>timestamp</term> + <description> + <para> + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + </para> + </description> + </item> + <item> + <term>thread</term> + <description> + <para> + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + </para> + </description> + </item> + <item> + <term>type</term> + <description> + <para> + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by <i>precision specifier</i>, that + is a decimal constant in brackets. + </para> + <para> + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + </para> + <para> + For example, for the class name "log4net.Layout.PatternLayout", the + pattern <b>%type{1}</b> will output "PatternLayout". + </para> + <para> + <b>WARNING</b> Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + </para> + <para> + See the note below on the availability of caller location information. + </para> + </description> + </item> + <item> + <term>u</term> + <description>Equivalent to <b>identity</b></description> + </item> + <item> + <term>username</term> + <description> + <para> + Used to output the WindowsIdentity for the currently + active user. + </para> + <para> + <b>WARNING</b> Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + </para> + </description> + </item> + <item> + <term>utcdate</term> + <description> + <para> + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a <i>date format specifier</i> enclosed + between braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or + <b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is + given then ISO8601 format is + assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>). + </para> + <para> + The date format specifier admits the same syntax as the + time pattern string of the <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + <para> + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>, + <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively + <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example, + <b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>. + </para> + <para> + These dedicated date formatters perform significantly + better than <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + </description> + </item> + <item> + <term>w</term> + <description>Equivalent to <b>username</b></description> + </item> + <item> + <term>x</term> + <description>Equivalent to <b>ndc</b></description> + </item> + <item> + <term>X</term> + <description>Equivalent to <b>mdc</b></description> + </item> + <item> + <term>%</term> + <description> + <para> + The sequence %% outputs a single percent sign. + </para> + </description> + </item> + </list> + <para> + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + </para> + <para> + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + </para> + <para> + The optional format modifier is placed between the percent sign + and the conversion pattern name. + </para> + <para> + The first optional format modifier is the <i>left justification + flag</i> which is just the minus (-) character. Then comes the + optional <i>minimum field width</i> modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + </para> + <para> + This behavior can be changed using the <i>maximum field + width</i> modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + <i>beginning</i> of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + </para> + <para> + Below are various format modifier examples for the logger + conversion specifier. + </para> + <div class="tablediv"> + <table class="dtTABLE" cellspacing="0"> + <tr> + <th>Format modifier</th> + <th>left justify</th> + <th>minimum width</th> + <th>maximum width</th> + <th>comment</th> + </tr> + <tr> + <td align="center">%20logger</td> + <td align="center">false</td> + <td align="center">20</td> + <td align="center">none</td> + <td> + <para> + Left pad with spaces if the logger name is less than 20 + characters long. + </para> + </td> + </tr> + <tr> + <td align="center">%-20logger</td> + <td align="center">true</td> + <td align="center">20</td> + <td align="center">none</td> + <td> + <para> + Right pad with spaces if the logger + name is less than 20 characters long. + </para> + </td> + </tr> + <tr> + <td align="center">%.30logger</td> + <td align="center">NA</td> + <td align="center">none</td> + <td align="center">30</td> + <td> + <para> + Truncate from the beginning if the logger + name is longer than 30 characters. + </para> + </td> + </tr> + <tr> + <td align="center"><nobr>%20.30logger</nobr></td> + <td align="center">false</td> + <td align="center">20</td> + <td align="center">30</td> + <td> + <para> + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + </para> + </td> + </tr> + <tr> + <td align="center">%-20.30logger</td> + <td align="center">true</td> + <td align="center">20</td> + <td align="center">30</td> + <td> + <para> + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + </para> + </td> + </tr> + </table> + </div> + <para> + <b>Note about caller location information.</b><br/> + The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c> + all generate caller location information. + Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate + a call stack. The caller's information is then extracted from this stack. + </para> + <note type="caution"> + <para> + The <c>System.Diagnostics.StackTrace</c> class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + </para> + </note> + <note type="caution"> + <para> + The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds: + </para> + <para> + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + </para> + <para> + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + </para> + </note> + <para> + Additional pattern converters may be registered with a specific <see cref="T:log4net.Layout.PatternLayout"/> + instance using the <see cref="M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)"/> method. + </para> + </remarks> + <example> + This is a more detailed pattern. + <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code> + </example> + <example> + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code> + </example> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Douglas de la Torre</author> + <author>Daniel Cazzulino</author> + </member> + <member name="F:log4net.Layout.PatternLayout.DefaultConversionPattern"> + <summary> + Default pattern string for log output. + </summary> + <remarks> + <para> + Default pattern string for log output. + Currently set to the string <b>"%message%newline"</b> + which just prints the application supplied message. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.PatternLayout.DetailConversionPattern"> + <summary> + A detailed conversion pattern + </summary> + <remarks> + <para> + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.PatternLayout.s_globalRulesRegistry"> + <summary> + Internal map of converter identifiers to converter types. + </summary> + <remarks> + <para> + This static map is overridden by the m_converterRegistry instance map + </para> + </remarks> + </member> + <member name="F:log4net.Layout.PatternLayout.m_pattern"> + <summary> + the pattern + </summary> + </member> + <member name="F:log4net.Layout.PatternLayout.m_head"> + <summary> + the head of the pattern converter chain + </summary> + </member> + <member name="F:log4net.Layout.PatternLayout.m_instanceRulesRegistry"> + <summary> + patterns defined on this PatternLayout only + </summary> + </member> + <member name="M:log4net.Layout.PatternLayout.#cctor"> + <summary> + Initialize the global registry + </summary> + <remarks> + <para> + Defines the builtin global rules. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.#ctor"> + <summary> + Constructs a PatternLayout using the DefaultConversionPattern + </summary> + <remarks> + <para> + The default pattern just produces the application supplied message. + </para> + <para> + Note to Inheritors: This constructor calls the virtual method + <see cref="M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)"/>. If you override this method be + aware that it will be called before your is called constructor. + </para> + <para> + As per the <see cref="T:log4net.Core.IOptionHandler"/> contract the <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> + method must be called after the properties on this object have been + configured. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.#ctor(System.String)"> + <summary> + Constructs a PatternLayout using the supplied conversion pattern + </summary> + <param name="pattern">the pattern to use</param> + <remarks> + <para> + Note to Inheritors: This constructor calls the virtual method + <see cref="M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)"/>. If you override this method be + aware that it will be called before your is called constructor. + </para> + <para> + When using this constructor the <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> method + need not be called. This may not be the case when using a subclass. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)"> + <summary> + Create the pattern parser instance + </summary> + <param name="pattern">the pattern to parse</param> + <returns>The <see cref="T:log4net.Util.PatternParser"/> that will format the event</returns> + <remarks> + <para> + Creates the <see cref="T:log4net.Util.PatternParser"/> used to parse the conversion string. Sets the + global and instance rules on the <see cref="T:log4net.Util.PatternParser"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.ActivateOptions"> + <summary> + Initialize layout options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Produces a formatted string as specified by the conversion pattern. + </summary> + <param name="loggingEvent">the event being logged</param> + <param name="writer">The TextWriter to write the formatted event to</param> + <remarks> + <para> + Parse the <see cref="T:log4net.Core.LoggingEvent"/> using the patter format + specified in the <see cref="P:log4net.Layout.PatternLayout.ConversionPattern"/> property. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.AddConverter(log4net.Layout.PatternLayout.ConverterInfo)"> + <summary> + Add a converter to this PatternLayout + </summary> + <param name="converterInfo">the converter info</param> + <remarks> + <para> + This version of the method is used by the configurator. + Programmatic users should use the alternative <see cref="M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)"/> method. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)"> + <summary> + Add a converter to this PatternLayout + </summary> + <param name="name">the name of the conversion pattern for this converter</param> + <param name="type">the type of the converter</param> + <remarks> + <para> + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before <see cref="M:log4net.Layout.PatternLayout.ActivateOptions"/>. + </para> + <para> + The <paramref name="type"/> specified must extend the + <see cref="T:log4net.Util.PatternConverter"/> type. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.PatternLayout.ConversionPattern"> + <summary> + The pattern formatting string + </summary> + <remarks> + <para> + The <b>ConversionPattern</b> option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.PatternLayout.ConverterInfo"> + <summary> + Wrapper class used to map converter names to converter types + </summary> + <remarks> + <para> + Pattern converter info class used during configuration to + pass to the <see cref="M:log4net.Layout.PatternLayout.AddConverter(log4net.Layout.PatternLayout.ConverterInfo)"/> + method. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.PatternLayout.ConverterInfo.#ctor"> + <summary> + default constructor + </summary> + </member> + <member name="P:log4net.Layout.PatternLayout.ConverterInfo.Name"> + <summary> + Gets or sets the name of the conversion pattern + </summary> + <remarks> + <para> + The name of the pattern in the format string + </para> + </remarks> + </member> + <member name="P:log4net.Layout.PatternLayout.ConverterInfo.Type"> + <summary> + Gets or sets the type of the converter + </summary> + <remarks> + <para> + The value specified must extend the + <see cref="T:log4net.Util.PatternConverter"/> type. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.RawLayoutConverter"> + <summary> + Type converter for the <see cref="T:log4net.Layout.IRawLayout"/> interface + </summary> + <remarks> + <para> + Used to convert objects to the <see cref="T:log4net.Layout.IRawLayout"/> interface. + Supports converting from the <see cref="T:log4net.Layout.ILayout"/> interface to + the <see cref="T:log4net.Layout.IRawLayout"/> interface using the <see cref="T:log4net.Layout.Layout2RawLayoutAdapter"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Util.TypeConverters.IConvertFrom"> + <summary> + Interface supported by type converters + </summary> + <remarks> + <para> + This interface supports conversion from arbitrary types + to a single target type. See <see cref="T:log4net.Util.TypeConverters.TypeConverterAttribute"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Test if the <paramref name="sourceType"/> can be converted to the + type supported by this converter. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)"> + <summary> + Convert the source object to the type supported by this object + </summary> + <param name="source">the object to convert</param> + <returns>the converted object</returns> + <remarks> + <para> + Converts the <paramref name="source"/> to the type supported + by this converter. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)"> + <summary> + Can the sourceType be converted to an <see cref="T:log4net.Layout.IRawLayout"/> + </summary> + <param name="sourceType">the source to be to be converted</param> + <returns><c>true</c> if the source type can be converted to <see cref="T:log4net.Layout.IRawLayout"/></returns> + <remarks> + <para> + Test if the <paramref name="sourceType"/> can be converted to a + <see cref="T:log4net.Layout.IRawLayout"/>. Only <see cref="T:log4net.Layout.ILayout"/> is supported + as the <paramref name="sourceType"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)"> + <summary> + Convert the value to a <see cref="T:log4net.Layout.IRawLayout"/> object + </summary> + <param name="source">the value to convert</param> + <returns>the <see cref="T:log4net.Layout.IRawLayout"/> object</returns> + <remarks> + <para> + Convert the <paramref name="source"/> object to a + <see cref="T:log4net.Layout.IRawLayout"/> object. If the <paramref name="source"/> object + is a <see cref="T:log4net.Layout.ILayout"/> then the <see cref="T:log4net.Layout.Layout2RawLayoutAdapter"/> + is used to adapt between the two interfaces, otherwise an + exception is thrown. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.RawPropertyLayout"> + <summary> + Extract the value of a property from the <see cref="T:log4net.Core.LoggingEvent"/> + </summary> + <remarks> + <para> + Extract the value of a property from the <see cref="T:log4net.Core.LoggingEvent"/> + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Layout.RawPropertyLayout.#ctor"> + <summary> + Constructs a RawPropertyLayout + </summary> + </member> + <member name="M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)"> + <summary> + Lookup the property for <see cref="P:log4net.Layout.RawPropertyLayout.Key"/> + </summary> + <param name="loggingEvent">The event to format</param> + <returns>returns property value</returns> + <remarks> + <para> + Looks up and returns the object value of the property + named <see cref="P:log4net.Layout.RawPropertyLayout.Key"/>. If there is no property defined + with than name then <c>null</c> will be returned. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.RawPropertyLayout.Key"> + <summary> + The name of the value to lookup in the LoggingEvent Properties collection. + </summary> + <value> + Value to lookup in the LoggingEvent Properties collection + </value> + <remarks> + <para> + String name of the property to lookup in the <see cref="T:log4net.Core.LoggingEvent"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.RawTimeStampLayout"> + <summary> + Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/> + </summary> + <remarks> + <para> + Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/> + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Layout.RawTimeStampLayout.#ctor"> + <summary> + Constructs a RawTimeStampLayout + </summary> + </member> + <member name="M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)"> + <summary> + Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>. + </summary> + <param name="loggingEvent">The event to format</param> + <returns>returns the time stamp</returns> + <remarks> + <para> + Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>. + </para> + <para> + The time stamp is in local time. To format the time stamp + in universal time use <see cref="T:log4net.Layout.RawUtcTimeStampLayout"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.RawUtcTimeStampLayout"> + <summary> + Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/> + </summary> + <remarks> + <para> + Extract the date from the <see cref="T:log4net.Core.LoggingEvent"/> + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Layout.RawUtcTimeStampLayout.#ctor"> + <summary> + Constructs a RawUtcTimeStampLayout + </summary> + </member> + <member name="M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)"> + <summary> + Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>. + </summary> + <param name="loggingEvent">The event to format</param> + <returns>returns the time stamp</returns> + <remarks> + <para> + Gets the <see cref="P:log4net.Core.LoggingEvent.TimeStamp"/> as a <see cref="T:System.DateTime"/>. + </para> + <para> + The time stamp is in universal time. To format the time stamp + in local time use <see cref="T:log4net.Layout.RawTimeStampLayout"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.SimpleLayout"> + <summary> + A very simple layout + </summary> + <remarks> + <para> + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + <code> + DEBUG - Hello world + </code> + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Layout.SimpleLayout.#ctor"> + <summary> + Constructs a SimpleLayout + </summary> + </member> + <member name="M:log4net.Layout.SimpleLayout.ActivateOptions"> + <summary> + Initialize layout options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.SimpleLayout.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.SimpleLayout.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.SimpleLayout.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Produces a simple formatted output. + </summary> + <param name="loggingEvent">the event being logged</param> + <param name="writer">The TextWriter to write the formatted event to</param> + <remarks> + <para> + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.XmlLayout"> + <summary> + Layout that formats the log events as XML elements. + </summary> + <remarks> + <para> + The output of the <see cref="T:log4net.Layout.XmlLayout"/> consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an <em>external entity</em> + in a separate file to form a correct XML file. + </para> + <para> + For example, if <c>abc</c> is the name of the file where + the <see cref="T:log4net.Layout.XmlLayout"/> output goes, then a well-formed XML file would + be: + </para> + <code lang="XML"> + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + </code> + <para> + This approach enforces the independence of the <see cref="T:log4net.Layout.XmlLayout"/> + and the appender where it is embedded. + </para> + <para> + The <c>version</c> attribute helps components to correctly + interpret output generated by <see cref="T:log4net.Layout.XmlLayout"/>. The value of + this attribute should be "1.2" for release 1.2 and later. + </para> + <para> + Alternatively the <c>Header</c> and <c>Footer</c> properties can be + configured to output the correct XML header, open tag and close tag. + When setting the <c>Header</c> and <c>Footer</c> properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Layout.XmlLayoutBase"> + <summary> + Layout that formats the log events as XML elements. + </summary> + <remarks> + <para> + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + </para> + <para> + Deriving classes must implement the <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Layout.XmlLayoutBase.#ctor"> + <summary> + Protected constructor to support subclasses + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Layout.XmlLayoutBase"/> class + with no location info. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)"> + <summary> + Protected constructor to support subclasses + </summary> + <remarks> + <para> + The <paramref name="locationInfo" /> parameter determines whether + location information will be output by the layout. If + <paramref name="locationInfo" /> is set to <c>true</c>, then the + file name and line number of the statement at the origin of the log + statement will be output. + </para> + <para> + If you are embedding this layout within an SMTPAppender + then make sure to set the <b>LocationInfo</b> option of that + appender as well. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayoutBase.ActivateOptions"> + <summary> + Initialize layout options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.XmlLayoutBase.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.XmlLayoutBase.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.XmlLayoutBase.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)"> + <summary> + Produces a formatted string. + </summary> + <param name="loggingEvent">The event being logged.</param> + <param name="writer">The TextWriter to write the formatted event to</param> + <remarks> + <para> + Format the <see cref="T:log4net.Core.LoggingEvent"/> and write it to the <see cref="T:System.IO.TextWriter"/>. + </para> + <para> + This method creates an <see cref="T:System.Xml.XmlTextWriter"/> that writes to the + <paramref name="writer"/>. The <see cref="T:System.Xml.XmlTextWriter"/> is passed + to the <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method. Subclasses should override the + <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method rather than this method. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"> + <summary> + Does the actual writing of the XML. + </summary> + <param name="writer">The writer to use to output the event to.</param> + <param name="loggingEvent">The event to write.</param> + <remarks> + <para> + Subclasses should override this method to format + the <see cref="T:log4net.Core.LoggingEvent"/> as XML. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.XmlLayoutBase.m_locationInfo"> + <summary> + Flag to indicate if location information should be included in + the XML events. + </summary> + </member> + <member name="F:log4net.Layout.XmlLayoutBase.m_protectCloseTextWriter"> + <summary> + Writer adapter that ignores Close + </summary> + </member> + <member name="F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement"> + <summary> + The string to replace invalid chars with + </summary> + </member> + <member name="P:log4net.Layout.XmlLayoutBase.LocationInfo"> + <summary> + Gets a value indicating whether to include location information in + the XML events. + </summary> + <value> + <c>true</c> if location information should be included in the XML + events; otherwise, <c>false</c>. + </value> + <remarks> + <para> + If <see cref="P:log4net.Layout.XmlLayoutBase.LocationInfo"/> is set to <c>true</c>, then the file + name and line number of the statement at the origin of the log + statement will be output. + </para> + <para> + If you are embedding this layout within an <c>SMTPAppender</c> + then make sure to set the <b>LocationInfo</b> option of that + appender as well. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement"> + <summary> + The string to replace characters that can not be expressed in XML with. + <remarks> + <para> + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + </para> + </remarks> + </summary> + </member> + <member name="P:log4net.Layout.XmlLayoutBase.ContentType"> + <summary> + Gets the content type output by this layout. + </summary> + <value> + As this is the XML layout, the value is always <c>"text/xml"</c>. + </value> + <remarks> + <para> + As this is the XML layout, the value is always <c>"text/xml"</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayout.#ctor"> + <summary> + Constructs an XmlLayout + </summary> + </member> + <member name="M:log4net.Layout.XmlLayout.#ctor(System.Boolean)"> + <summary> + Constructs an XmlLayout. + </summary> + <remarks> + <para> + The <b>LocationInfo</b> option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + </para> + <para> + If you are embedding this layout within an SmtpAppender + then make sure to set the <b>LocationInfo</b> option of that + appender as well. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayout.ActivateOptions"> + <summary> + Initialize layout options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Layout.XmlLayout.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Layout.XmlLayout.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Layout.XmlLayout.ActivateOptions"/> must be called again. + </para> + <para> + Builds a cache of the element names + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"> + <summary> + Does the actual writing of the XML. + </summary> + <param name="writer">The writer to use to output the event to.</param> + <param name="loggingEvent">The event to write.</param> + <remarks> + <para> + Override the base class <see cref="M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"/> method + to write the <see cref="T:log4net.Core.LoggingEvent"/> to the <see cref="T:System.Xml.XmlWriter"/>. + </para> + </remarks> + </member> + <member name="F:log4net.Layout.XmlLayout.m_prefix"> + <summary> + The prefix to use for all generated element names + </summary> + </member> + <member name="P:log4net.Layout.XmlLayout.Prefix"> + <summary> + The prefix to use for all element names + </summary> + <remarks> + <para> + The default prefix is <b>log4net</b>. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.XmlLayout.Base64EncodeMessage"> + <summary> + Set whether or not to base64 encode the message. + </summary> + <remarks> + <para> + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see <see cref="P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement"/>) will not be performed + on the log message. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.XmlLayout.Base64EncodeProperties"> + <summary> + Set whether or not to base64 encode the property values. + </summary> + <remarks> + <para> + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see <see cref="P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement"/>) will not be performed + on the property values. + </para> + </remarks> + </member> + <member name="T:log4net.Layout.XmlLayoutSchemaLog4j"> + <summary> + Layout that formats the log events as XML elements compatible with the log4j schema + </summary> + <remarks> + <para> + Formats the log events according to the http://logging.apache.org/log4j schema. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970"> + <summary> + The 1st of January 1970 in UTC + </summary> + </member> + <member name="M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor"> + <summary> + Constructs an XMLLayoutSchemaLog4j + </summary> + </member> + <member name="M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)"> + <summary> + Constructs an XMLLayoutSchemaLog4j. + </summary> + <remarks> + <para> + The <b>LocationInfo</b> option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + </para> + <para> + If you are embedding this layout within an SMTPAppender + then make sure to set the <b>LocationInfo</b> option of that + appender as well. + </para> + </remarks> + </member> + <member name="M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)"> + <summary> + Actually do the writing of the xml + </summary> + <param name="writer">the writer to use</param> + <param name="loggingEvent">the event to write</param> + <remarks> + <para> + Generate XML that is compatible with the log4j schema. + </para> + </remarks> + </member> + <member name="P:log4net.Layout.XmlLayoutSchemaLog4j.Version"> + <summary> + The version of the log4j schema to use. + </summary> + <remarks> + <para> + Only version 1.2 of the log4j schema is supported. + </para> + </remarks> + </member> + <member name="T:log4net.ObjectRenderer.DefaultRenderer"> + <summary> + The default object Renderer. + </summary> + <remarks> + <para> + The default renderer supports rendering objects and collections to strings. + </para> + <para> + See the <see cref="M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)"/> method for details of the output. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.ObjectRenderer.IObjectRenderer"> + <summary> + Implement this interface in order to render objects as strings + </summary> + <remarks> + <para> + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> + interface. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)"> + <summary> + Render the object <paramref name="obj"/> to a string + </summary> + <param name="rendererMap">The map used to lookup renderers</param> + <param name="obj">The object to render</param> + <param name="writer">The writer to render to</param> + <remarks> + <para> + Render the object <paramref name="obj"/> to a + string. + </para> + <para> + The <paramref name="rendererMap"/> parameter is + provided to lookup and render other objects. This is + very useful where <paramref name="obj"/> contains + nested objects of unknown type. The <see cref="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)"/> + method can be used to render these objects. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.DefaultRenderer.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)"> + <summary> + Render the object <paramref name="obj"/> to a string + </summary> + <param name="rendererMap">The map used to lookup renderers</param> + <param name="obj">The object to render</param> + <param name="writer">The writer to render to</param> + <remarks> + <para> + Render the object <paramref name="obj"/> to a string. + </para> + <para> + The <paramref name="rendererMap"/> parameter is + provided to lookup and render other objects. This is + very useful where <paramref name="obj"/> contains + nested objects of unknown type. The <see cref="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)"/> + method can be used to render these objects. + </para> + <para> + The default renderer supports rendering objects to strings as follows: + </para> + <list type="table"> + <listheader> + <term>Value</term> + <description>Rendered String</description> + </listheader> + <item> + <term><c>null</c></term> + <description> + <para>"(null)"</para> + </description> + </item> + <item> + <term><see cref="T:System.Array"/></term> + <description> + <para> + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + </para> + <para> + For example: <c>int[] {1, 2, 3}</c>. + </para> + <para> + If the array is not one dimensional the + <c>Array.ToString()</c> is returned. + </para> + </description> + </item> + <item> + <term><see cref="T:System.Collections.IEnumerable"/>, <see cref="T:System.Collections.ICollection"/> & <see cref="T:System.Collections.IEnumerator"/></term> + <description> + <para> + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + </para> + <para> + For example: <c>{a, b, c}</c>. + </para> + <para> + All collection classes that implement <see cref="T:System.Collections.ICollection"/> its subclasses, + or generic equivalents all implement the <see cref="T:System.Collections.IEnumerable"/> interface. + </para> + </description> + </item> + <item> + <term><see cref="T:System.Collections.DictionaryEntry"/></term> + <description> + <para> + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + </para> + <para> + For example: <c>key=value</c>. + </para> + </description> + </item> + <item> + <term>other</term> + <description> + <para><c>Object.ToString()</c></para> + </description> + </item> + </list> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)"> + <summary> + Render the array argument into a string + </summary> + <param name="rendererMap">The map used to lookup renderers</param> + <param name="array">the array to render</param> + <param name="writer">The writer to render to</param> + <remarks> + <para> + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + <c>int[] {1, 2, 3}</c>. + </para> + <para> + If the array is not one dimensional the + <c>Array.ToString()</c> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)"> + <summary> + Render the enumerator argument into a string + </summary> + <param name="rendererMap">The map used to lookup renderers</param> + <param name="enumerator">the enumerator to render</param> + <param name="writer">The writer to render to</param> + <remarks> + <para> + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + <c>{a, b, c}</c>. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)"> + <summary> + Render the DictionaryEntry argument into a string + </summary> + <param name="rendererMap">The map used to lookup renderers</param> + <param name="entry">the DictionaryEntry to render</param> + <param name="writer">The writer to render to</param> + <remarks> + <para> + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: <c>key=value</c>. + </para> + </remarks> + </member> + <member name="T:log4net.ObjectRenderer.RendererMap"> + <summary> + Map class objects to an <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/>. + </summary> + <remarks> + <para> + Maintains a mapping between types that require special + rendering and the <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> that + is used to render them. + </para> + <para> + The <see cref="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)"/> method is used to render an + <c>object</c> using the appropriate renderers defined in this map. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.#ctor"> + <summary> + Default Constructor + </summary> + <remarks> + <para> + Default constructor. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)"> + <summary> + Render <paramref name="obj"/> using the appropriate renderer. + </summary> + <param name="obj">the object to render to a string</param> + <returns>the object rendered as a string</returns> + <remarks> + <para> + This is a convenience method used to render an object to a string. + The alternative method <see cref="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)"/> + should be used when streaming output to a <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)"> + <summary> + Render <paramref name="obj"/> using the appropriate renderer. + </summary> + <param name="obj">the object to render to a string</param> + <param name="writer">The writer to render to</param> + <remarks> + <para> + Find the appropriate renderer for the type of the + <paramref name="obj"/> parameter. This is accomplished by calling the + <see cref="M:log4net.ObjectRenderer.RendererMap.Get(System.Type)"/> method. Once a renderer is found, it is + applied on the object <paramref name="obj"/> and the result is returned + as a <see cref="T:System.String"/>. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.Get(System.Object)"> + <summary> + Gets the renderer for the specified object type + </summary> + <param name="obj">the object to lookup the renderer for</param> + <returns>the renderer for <paramref name="obj"/></returns> + <remarks> + <param> + Gets the renderer for the specified object type. + </param> + <param> + Syntactic sugar method that calls <see cref="M:log4net.ObjectRenderer.RendererMap.Get(System.Type)"/> + with the type of the object parameter. + </param> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.Get(System.Type)"> + <summary> + Gets the renderer for the specified type + </summary> + <param name="type">the type to lookup the renderer for</param> + <returns>the renderer for the specified type</returns> + <remarks> + <para> + Returns the renderer for the specified type. + If no specific renderer has been defined the + <see cref="P:log4net.ObjectRenderer.RendererMap.DefaultRenderer"/> will be returned. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)"> + <summary> + Internal function to recursively search interfaces + </summary> + <param name="type">the type to lookup the renderer for</param> + <returns>the renderer for the specified type</returns> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.Clear"> + <summary> + Clear the map of renderers + </summary> + <remarks> + <para> + Clear the custom renderers defined by using + <see cref="M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)"/>. The <see cref="P:log4net.ObjectRenderer.RendererMap.DefaultRenderer"/> + cannot be removed. + </para> + </remarks> + </member> + <member name="M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)"> + <summary> + Register an <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> for <paramref name="typeToRender"/>. + </summary> + <param name="typeToRender">the type that will be rendered by <paramref name="renderer"/></param> + <param name="renderer">the renderer for <paramref name="typeToRender"/></param> + <remarks> + <para> + Register an object renderer for a specific source type. + This renderer will be returned from a call to <see cref="M:log4net.ObjectRenderer.RendererMap.Get(System.Type)"/> + specifying the same <paramref name="typeToRender"/> as an argument. + </para> + </remarks> + </member> + <member name="P:log4net.ObjectRenderer.RendererMap.DefaultRenderer"> + <summary> + Get the default renderer instance + </summary> + <value>the default renderer</value> + <remarks> + <para> + Get the default renderer + </para> + </remarks> + </member> + <member name="T:log4net.Plugin.IPlugin"> + <summary> + Interface implemented by logger repository plugins. + </summary> + <remarks> + <para> + Plugins define additional behavior that can be associated + with a <see cref="T:log4net.Repository.ILoggerRepository"/>. + The <see cref="T:log4net.Plugin.PluginMap"/> held by the <see cref="P:log4net.Repository.ILoggerRepository.PluginMap"/> + property is used to store the plugins for a repository. + </para> + <para> + The <c>log4net.Config.PluginAttribute</c> can be used to + attach plugins to repositories created using configuration + attributes. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)"> + <summary> + Attaches the plugin to the specified <see cref="T:log4net.Repository.ILoggerRepository"/>. + </summary> + <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin should be attached to.</param> + <remarks> + <para> + A plugin may only be attached to a single repository. + </para> + <para> + This method is called when the plugin is attached to the repository. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.IPlugin.Shutdown"> + <summary> + Is called when the plugin is to shutdown. + </summary> + <remarks> + <para> + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + </para> + </remarks> + </member> + <member name="P:log4net.Plugin.IPlugin.Name"> + <summary> + Gets the name of the plugin. + </summary> + <value> + The name of the plugin. + </value> + <remarks> + <para> + Plugins are stored in the <see cref="T:log4net.Plugin.PluginMap"/> + keyed by name. Each plugin instance attached to a + repository must be a unique name. + </para> + </remarks> + </member> + <member name="T:log4net.Plugin.PluginCollection"> + <summary> + A strongly-typed collection of <see cref="T:log4net.Plugin.IPlugin"/> objects. + </summary> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)"> + <summary> + Creates a read-only wrapper for a <c>PluginCollection</c> instance. + </summary> + <param name="list">list to create a readonly wrapper arround</param> + <returns> + A <c>PluginCollection</c> wrapper that is read-only. + </returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.#ctor"> + <summary> + Initializes a new instance of the <c>PluginCollection</c> class + that is empty and has the default initial capacity. + </summary> + </member> + <member name="M:log4net.Plugin.PluginCollection.#ctor(System.Int32)"> + <summary> + Initializes a new instance of the <c>PluginCollection</c> class + that has the specified initial capacity. + </summary> + <param name="capacity"> + The number of elements that the new <c>PluginCollection</c> is initially capable of storing. + </param> + </member> + <member name="M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)"> + <summary> + Initializes a new instance of the <c>PluginCollection</c> class + that contains elements copied from the specified <c>PluginCollection</c>. + </summary> + <param name="c">The <c>PluginCollection</c> whose elements are copied to the new collection.</param> + </member> + <member name="M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])"> + <summary> + Initializes a new instance of the <c>PluginCollection</c> class + that contains elements copied from the specified <see cref="T:log4net.Plugin.IPlugin"/> array. + </summary> + <param name="a">The <see cref="T:log4net.Plugin.IPlugin"/> array whose elements are copied to the new list.</param> + </member> + <member name="M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)"> + <summary> + Initializes a new instance of the <c>PluginCollection</c> class + that contains elements copied from the specified <see cref="T:log4net.Plugin.IPlugin"/> collection. + </summary> + <param name="col">The <see cref="T:log4net.Plugin.IPlugin"/> collection whose elements are copied to the new list.</param> + </member> + <member name="M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)"> + <summary> + Allow subclasses to avoid our default constructors + </summary> + <param name="tag"></param> + <exclude/> + </member> + <member name="M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])"> + <summary> + Copies the entire <c>PluginCollection</c> to a one-dimensional + <see cref="T:log4net.Plugin.IPlugin"/> array. + </summary> + <param name="array">The one-dimensional <see cref="T:log4net.Plugin.IPlugin"/> array to copy to.</param> + </member> + <member name="M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)"> + <summary> + Copies the entire <c>PluginCollection</c> to a one-dimensional + <see cref="T:log4net.Plugin.IPlugin"/> array, starting at the specified index of the target array. + </summary> + <param name="array">The one-dimensional <see cref="T:log4net.Plugin.IPlugin"/> array to copy to.</param> + <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param> + </member> + <member name="M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)"> + <summary> + Adds a <see cref="T:log4net.Plugin.IPlugin"/> to the end of the <c>PluginCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to be added to the end of the <c>PluginCollection</c>.</param> + <returns>The index at which the value has been added.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.Clear"> + <summary> + Removes all elements from the <c>PluginCollection</c>. + </summary> + </member> + <member name="M:log4net.Plugin.PluginCollection.Clone"> + <summary> + Creates a shallow copy of the <see cref="T:log4net.Plugin.PluginCollection"/>. + </summary> + <returns>A new <see cref="T:log4net.Plugin.PluginCollection"/> with a shallow copy of the collection data.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)"> + <summary> + Determines whether a given <see cref="T:log4net.Plugin.IPlugin"/> is in the <c>PluginCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to check for.</param> + <returns><c>true</c> if <paramref name="item"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)"> + <summary> + Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Plugin.IPlugin"/> + in the <c>PluginCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to locate in the <c>PluginCollection</c>.</param> + <returns> + The zero-based index of the first occurrence of <paramref name="item"/> + in the entire <c>PluginCollection</c>, if found; otherwise, -1. + </returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)"> + <summary> + Inserts an element into the <c>PluginCollection</c> at the specified index. + </summary> + <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param> + <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to insert.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)"> + <summary> + Removes the first occurrence of a specific <see cref="T:log4net.Plugin.IPlugin"/> from the <c>PluginCollection</c>. + </summary> + <param name="item">The <see cref="T:log4net.Plugin.IPlugin"/> to remove from the <c>PluginCollection</c>.</param> + <exception cref="T:System.ArgumentException"> + The specified <see cref="T:log4net.Plugin.IPlugin"/> was not found in the <c>PluginCollection</c>. + </exception> + </member> + <member name="M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)"> + <summary> + Removes the element at the specified index of the <c>PluginCollection</c>. + </summary> + <param name="index">The zero-based index of the element to remove.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero.</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Plugin.PluginCollection.GetEnumerator"> + <summary> + Returns an enumerator that can iterate through the <c>PluginCollection</c>. + </summary> + <returns>An <see cref="T:log4net.Plugin.PluginCollection.Enumerator"/> for the entire <c>PluginCollection</c>.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)"> + <summary> + Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>. + </summary> + <param name="x">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param> + <returns>The new <see cref="P:log4net.Plugin.PluginCollection.Count"/> of the <c>PluginCollection</c>.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])"> + <summary> + Adds the elements of a <see cref="T:log4net.Plugin.IPlugin"/> array to the current <c>PluginCollection</c>. + </summary> + <param name="x">The <see cref="T:log4net.Plugin.IPlugin"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param> + <returns>The new <see cref="P:log4net.Plugin.PluginCollection.Count"/> of the <c>PluginCollection</c>.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)"> + <summary> + Adds the elements of a <see cref="T:log4net.Plugin.IPlugin"/> collection to the current <c>PluginCollection</c>. + </summary> + <param name="col">The <see cref="T:log4net.Plugin.IPlugin"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param> + <returns>The new <see cref="P:log4net.Plugin.PluginCollection.Count"/> of the <c>PluginCollection</c>.</returns> + </member> + <member name="M:log4net.Plugin.PluginCollection.TrimToSize"> + <summary> + Sets the capacity to the actual number of elements. + </summary> + </member> + <member name="M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)"> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero.</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para> + </exception> + </member> + <member name="M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)"> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero.</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para> + </exception> + </member> + <member name="P:log4net.Plugin.PluginCollection.Count"> + <summary> + Gets the number of elements actually contained in the <c>PluginCollection</c>. + </summary> + </member> + <member name="P:log4net.Plugin.PluginCollection.IsSynchronized"> + <summary> + Gets a value indicating whether access to the collection is synchronized (thread-safe). + </summary> + <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns> + </member> + <member name="P:log4net.Plugin.PluginCollection.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the collection. + </summary> + <value> + An object that can be used to synchronize access to the collection. + </value> + </member> + <member name="P:log4net.Plugin.PluginCollection.Item(System.Int32)"> + <summary> + Gets or sets the <see cref="T:log4net.Plugin.IPlugin"/> at the specified index. + </summary> + <value> + The <see cref="T:log4net.Plugin.IPlugin"/> at the specified index. + </value> + <param name="index">The zero-based index of the element to get or set.</param> + <exception cref="T:System.ArgumentOutOfRangeException"> + <para><paramref name="index"/> is less than zero.</para> + <para>-or-</para> + <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Plugin.PluginCollection.Count"/>.</para> + </exception> + </member> + <member name="P:log4net.Plugin.PluginCollection.IsFixedSize"> + <summary> + Gets a value indicating whether the collection has a fixed size. + </summary> + <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value> + </member> + <member name="P:log4net.Plugin.PluginCollection.IsReadOnly"> + <summary> + Gets a value indicating whether the IList is read-only. + </summary> + <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value> + </member> + <member name="P:log4net.Plugin.PluginCollection.Capacity"> + <summary> + Gets or sets the number of elements the <c>PluginCollection</c> can contain. + </summary> + <value> + The number of elements the <c>PluginCollection</c> can contain. + </value> + </member> + <member name="T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator"> + <summary> + Supports type-safe iteration over a <see cref="T:log4net.Plugin.PluginCollection"/>. + </summary> + <exclude/> + </member> + <member name="M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext"> + <summary> + Advances the enumerator to the next element in the collection. + </summary> + <returns> + <c>true</c> if the enumerator was successfully advanced to the next element; + <c>false</c> if the enumerator has passed the end of the collection. + </returns> + <exception cref="T:System.InvalidOperationException"> + The collection was modified after the enumerator was created. + </exception> + </member> + <member name="M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset"> + <summary> + Sets the enumerator to its initial position, before the first element in the collection. + </summary> + </member> + <member name="P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current"> + <summary> + Gets the current element in the collection. + </summary> + </member> + <member name="T:log4net.Plugin.PluginCollection.Tag"> + <summary> + Type visible only to our subclasses + Used to access protected constructor + </summary> + <exclude/> + </member> + <member name="F:log4net.Plugin.PluginCollection.Tag.Default"> + <summary> + A value + </summary> + </member> + <member name="T:log4net.Plugin.PluginCollection.Enumerator"> + <summary> + Supports simple iteration over a <see cref="T:log4net.Plugin.PluginCollection"/>. + </summary> + <exclude/> + </member> + <member name="M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)"> + <summary> + Initializes a new instance of the <c>Enumerator</c> class. + </summary> + <param name="tc"></param> + </member> + <member name="M:log4net.Plugin.PluginCollection.Enumerator.MoveNext"> + <summary> + Advances the enumerator to the next element in the collection. + </summary> + <returns> + <c>true</c> if the enumerator was successfully advanced to the next element; + <c>false</c> if the enumerator has passed the end of the collection. + </returns> + <exception cref="T:System.InvalidOperationException"> + The collection was modified after the enumerator was created. + </exception> + </member> + <member name="M:log4net.Plugin.PluginCollection.Enumerator.Reset"> + <summary> + Sets the enumerator to its initial position, before the first element in the collection. + </summary> + </member> + <member name="P:log4net.Plugin.PluginCollection.Enumerator.Current"> + <summary> + Gets the current element in the collection. + </summary> + <value> + The current element in the collection. + </value> + </member> + <member name="T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection"> + <exclude/> + </member> + <member name="T:log4net.Plugin.PluginMap"> + <summary> + Map of repository plugins. + </summary> + <remarks> + <para> + This class is a name keyed map of the plugins that are + attached to a repository. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)"> + <summary> + Constructor + </summary> + <param name="repository">The repository that the plugins should be attached to.</param> + <remarks> + <para> + Initialize a new instance of the <see cref="T:log4net.Plugin.PluginMap"/> class with a + repository that the plugins should be attached to. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)"> + <summary> + Adds a <see cref="T:log4net.Plugin.IPlugin"/> to the map. + </summary> + <param name="plugin">The <see cref="T:log4net.Plugin.IPlugin"/> to add to the map.</param> + <remarks> + <para> + The <see cref="T:log4net.Plugin.IPlugin"/> will be attached to the repository when added. + </para> + <para> + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be <see cref="M:log4net.Plugin.IPlugin.Shutdown"/> and replaced with + the new plugin. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)"> + <summary> + Removes a <see cref="T:log4net.Plugin.IPlugin"/> from the map. + </summary> + <param name="plugin">The <see cref="T:log4net.Plugin.IPlugin"/> to remove from the map.</param> + <remarks> + <para> + Remove a specific plugin from this map. + </para> + </remarks> + </member> + <member name="P:log4net.Plugin.PluginMap.Item(System.String)"> + <summary> + Gets a <see cref="T:log4net.Plugin.IPlugin"/> by name. + </summary> + <param name="name">The name of the <see cref="T:log4net.Plugin.IPlugin"/> to lookup.</param> + <returns> + The <see cref="T:log4net.Plugin.IPlugin"/> from the map with the name specified, or + <c>null</c> if no plugin is found. + </returns> + <remarks> + <para> + Lookup a plugin by name. If the plugin is not found <c>null</c> + will be returned. + </para> + </remarks> + </member> + <member name="P:log4net.Plugin.PluginMap.AllPlugins"> + <summary> + Gets all possible plugins as a list of <see cref="T:log4net.Plugin.IPlugin"/> objects. + </summary> + <value>All possible plugins as a list of <see cref="T:log4net.Plugin.IPlugin"/> objects.</value> + <remarks> + <para> + Get a collection of all the plugins defined in this map. + </para> + </remarks> + </member> + <member name="T:log4net.Plugin.PluginSkeleton"> + <summary> + Base implementation of <see cref="T:log4net.Plugin.IPlugin"/> + </summary> + <remarks> + <para> + Default abstract implementation of the <see cref="T:log4net.Plugin.IPlugin"/> + interface. This base class can be used by implementors + of the <see cref="T:log4net.Plugin.IPlugin"/> interface. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Plugin.PluginSkeleton.#ctor(System.String)"> + <summary> + Constructor + </summary> + <param name="name">the name of the plugin</param> + <remarks> + Initializes a new Plugin with the specified name. + </remarks> + </member> + <member name="M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)"> + <summary> + Attaches this plugin to a <see cref="T:log4net.Repository.ILoggerRepository"/>. + </summary> + <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin should be attached to.</param> + <remarks> + <para> + A plugin may only be attached to a single repository. + </para> + <para> + This method is called when the plugin is attached to the repository. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.PluginSkeleton.Shutdown"> + <summary> + Is called when the plugin is to shutdown. + </summary> + <remarks> + <para> + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + </para> + </remarks> + </member> + <member name="F:log4net.Plugin.PluginSkeleton.m_name"> + <summary> + The name of this plugin. + </summary> + </member> + <member name="F:log4net.Plugin.PluginSkeleton.m_repository"> + <summary> + The repository this plugin is attached to. + </summary> + </member> + <member name="P:log4net.Plugin.PluginSkeleton.Name"> + <summary> + Gets or sets the name of the plugin. + </summary> + <value> + The name of the plugin. + </value> + <remarks> + <para> + Plugins are stored in the <see cref="T:log4net.Plugin.PluginMap"/> + keyed by name. Each plugin instance attached to a + repository must be a unique name. + </para> + <para> + The name of the plugin must not change one the + plugin has been attached to a repository. + </para> + </remarks> + </member> + <member name="P:log4net.Plugin.PluginSkeleton.LoggerRepository"> + <summary> + The repository for this plugin + </summary> + <value> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin is attached to. + </value> + <remarks> + <para> + Gets or sets the <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin is + attached to. + </para> + </remarks> + </member> + <member name="T:log4net.Plugin.RemoteLoggingServerPlugin"> + <summary> + Plugin that listens for events from the <see cref="T:log4net.Appender.RemotingAppender"/> + </summary> + <remarks> + <para> + This plugin publishes an instance of <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/> + on a specified <see cref="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"/>. This listens for logging events delivered from + a remote <see cref="T:log4net.Appender.RemotingAppender"/>. + </para> + <para> + When an event is received it is relogged within the attached repository + as if it had been raised locally. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Plugin.RemoteLoggingServerPlugin"/> class. + </para> + <para> + The <see cref="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"/> property must be set. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)"> + <summary> + Construct with sink Uri. + </summary> + <param name="sinkUri">The name to publish the sink under in the remoting infrastructure. + See <see cref="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"/> for more details.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Plugin.RemoteLoggingServerPlugin"/> class + with specified name. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)"> + <summary> + Attaches this plugin to a <see cref="T:log4net.Repository.ILoggerRepository"/>. + </summary> + <param name="repository">The <see cref="T:log4net.Repository.ILoggerRepository"/> that this plugin should be attached to.</param> + <remarks> + <para> + A plugin may only be attached to a single repository. + </para> + <para> + This method is called when the plugin is attached to the repository. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown"> + <summary> + Is called when the plugin is to shutdown. + </summary> + <remarks> + <para> + When the plugin is shutdown the remote logging + sink is disconnected. + </para> + </remarks> + </member> + <member name="P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri"> + <summary> + Gets or sets the URI of this sink. + </summary> + <value> + The URI of this sink. + </value> + <remarks> + <para> + This is the name under which the object is marshaled. + <see cref="M:System.Runtime.Remoting.RemotingServices.Marshal(System.MarshalByRefObject,System.String,System.Type)"/> + </para> + </remarks> + </member> + <member name="T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl"> + <summary> + Delivers <see cref="T:log4net.Core.LoggingEvent"/> objects to a remote sink. + </summary> + <remarks> + <para> + Internal class used to listen for logging events + and deliver them to the local repository. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)"> + <summary> + Constructor + </summary> + <param name="repository">The repository to log to.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl"/> for the + specified <see cref="T:log4net.Repository.ILoggerRepository"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])"> + <summary> + Logs the events to the repository. + </summary> + <param name="events">The events to log.</param> + <remarks> + <para> + The events passed are logged to the <see cref="T:log4net.Repository.ILoggerRepository"/> + </para> + </remarks> + </member> + <member name="M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService"> + <summary> + Obtains a lifetime service object to control the lifetime + policy for this instance. + </summary> + <returns><c>null</c> to indicate that this instance should live forever.</returns> + <remarks> + <para> + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns <c>null</c>. + </para> + </remarks> + </member> + <member name="F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository"> + <summary> + The underlying <see cref="T:log4net.Repository.ILoggerRepository"/> that events should + be logged to. + </summary> + </member> + <member name="T:log4net.Repository.Hierarchy.DefaultLoggerFactory"> + <summary> + Default implementation of <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/> + </summary> + <remarks> + <para> + This default implementation of the <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/> + interface is used to create the default subclass + of the <see cref="T:log4net.Repository.Hierarchy.Logger"/> object. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Repository.Hierarchy.ILoggerFactory"> + <summary> + Interface abstracts creation of <see cref="T:log4net.Repository.Hierarchy.Logger"/> instances + </summary> + <remarks> + <para> + This interface is used by the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> to + create new <see cref="T:log4net.Repository.Hierarchy.Logger"/> objects. + </para> + <para> + The <see cref="M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(System.String)"/> method is called + to create a named <see cref="T:log4net.Repository.Hierarchy.Logger"/>. + </para> + <para> + Implement this interface to create new subclasses of <see cref="T:log4net.Repository.Hierarchy.Logger"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(System.String)"> + <summary> + Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance + </summary> + <param name="name">The name of the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param> + <returns>The <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance for the specified name.</returns> + <remarks> + <para> + Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance with the + specified name. + </para> + <para> + Called by the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> to create + new named <see cref="T:log4net.Repository.Hierarchy.Logger"/> instances. + </para> + <para> + If the <paramref name="name"/> is <c>null</c> then the root logger + must be returned. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.DefaultLoggerFactory"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(System.String)"> + <summary> + Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance + </summary> + <param name="name">The name of the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param> + <returns>The <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance for the specified name.</returns> + <remarks> + <para> + Create a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance with the + specified name. + </para> + <para> + Called by the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> to create + new named <see cref="T:log4net.Repository.Hierarchy.Logger"/> instances. + </para> + <para> + If the <paramref name="name"/> is <c>null</c> then the root logger + must be returned. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl"> + <summary> + Default internal subclass of <see cref="T:log4net.Repository.Hierarchy.Logger"/> + </summary> + <remarks> + <para> + This subclass has no additional behavior over the + <see cref="T:log4net.Repository.Hierarchy.Logger"/> class but does allow instances + to be created. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.Logger"> + <summary> + Implementation of <see cref="T:log4net.Core.ILogger"/> used by <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/> + </summary> + <remarks> + <para> + Internal class used to provide implementation of <see cref="T:log4net.Core.ILogger"/> + interface. Applications should use <see cref="T:log4net.LogManager"/> to get + logger instances. + </para> + <para> + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/> organizes the <see cref="T:log4net.Repository.Hierarchy.Logger"/> + instances into a rooted tree hierarchy. + </para> + <para> + The <see cref="T:log4net.Repository.Hierarchy.Logger"/> class is abstract. Only concrete subclasses of + <see cref="T:log4net.Repository.Hierarchy.Logger"/> can be created. The <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/> + is used to create instances of this type for the <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Aspi Havewala</author> + <author>Douglas de la Torre</author> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)"> + <summary> + This constructor created a new <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance and + sets its name. + </summary> + <param name="name">The name of the <see cref="T:log4net.Repository.Hierarchy.Logger"/>.</param> + <remarks> + <para> + This constructor is protected and designed to be used by + a subclass that is not abstract. + </para> + <para> + Loggers are constructed by <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/> + objects. See <see cref="T:log4net.Repository.Hierarchy.DefaultLoggerFactory"/> for the default + logger creator. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)"> + <summary> + Add <paramref name="newAppender"/> to the list of appenders of this + Logger instance. + </summary> + <param name="newAppender">An appender to add to this logger</param> + <remarks> + <para> + Add <paramref name="newAppender"/> to the list of appenders of this + Logger instance. + </para> + <para> + If <paramref name="newAppender"/> is already in the list of + appenders, then it won't be added again. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)"> + <summary> + Look for the appender named as <c>name</c> + </summary> + <param name="name">The name of the appender to lookup</param> + <returns>The appender with the name specified, or <c>null</c>.</returns> + <remarks> + <para> + Returns the named appender, or null if the appender is not found. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders"> + <summary> + Remove all previously added appenders from this Logger instance. + </summary> + <remarks> + <para> + Remove all previously added appenders from this Logger instance. + </para> + <para> + This is useful when re-reading configuration information. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)"> + <summary> + Remove the appender passed as parameter form the list of appenders. + </summary> + <param name="appender">The appender to remove</param> + <returns>The appender removed from the list</returns> + <remarks> + <para> + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)"> + <summary> + Remove the appender passed as parameter form the list of appenders. + </summary> + <param name="name">The name of the appender to remove</param> + <returns>The appender removed from the list</returns> + <remarks> + <para> + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)"> + <summary> + This generic form is intended to be used by wrappers. + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <param name="level">The level of the message to be logged.</param> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Generate a logging event for the specified <paramref name="level"/> using + the <paramref name="message"/> and <paramref name="exception"/>. + </para> + <para> + This method must not throw any exception to the caller. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)"> + <summary> + This is the most generic printing method that is intended to be used + by wrappers. + </summary> + <param name="logEvent">The event being logged.</param> + <remarks> + <para> + Logs the specified logging event through this logger. + </para> + <para> + This method must not throw any exception to the caller. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)"> + <summary> + Checks if this logger is enabled for a given <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/> passed as parameter. + </summary> + <param name="level">The level to check.</param> + <returns> + <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>. + </returns> + <remarks> + <para> + Test if this logger is going to log events of the specified <paramref name="level"/>. + </para> + <para> + This method must not throw any exception to the caller. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)"> + <summary> + Deliver the <see cref="T:log4net.Core.LoggingEvent"/> to the attached appenders. + </summary> + <param name="loggingEvent">The event to log.</param> + <remarks> + <para> + Call the appenders in the hierarchy starting at + <c>this</c>. If no appenders could be found, emit a + warning. + </para> + <para> + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders"> + <summary> + Closes all attached appenders implementing the <see cref="T:log4net.Core.IAppenderAttachable"/> interface. + </summary> + <remarks> + <para> + Used to ensure that the appenders are correctly shutdown. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)"> + <summary> + This is the most generic printing method. This generic form is intended to be used by wrappers + </summary> + <param name="level">The level of the message to be logged.</param> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Generate a logging event for the specified <paramref name="level"/> using + the <paramref name="message"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)"> + <summary> + Creates a new logging event and logs the event without further checks. + </summary> + <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is + the stack boundary into the logging system for this call.</param> + <param name="level">The level of the message to be logged.</param> + <param name="message">The message object to log.</param> + <param name="exception">The exception to log, including its stack trace.</param> + <remarks> + <para> + Generates a logging event and delivers it to the attached + appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)"> + <summary> + Creates a new logging event and logs the event without further checks. + </summary> + <param name="logEvent">The event being logged.</param> + <remarks> + <para> + Delivers the logging event to the attached appenders. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.ThisDeclaringType"> + <summary> + The fully qualified type of the Logger class. + </summary> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_name"> + <summary> + The name of this logger. + </summary> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_level"> + <summary> + The assigned level of this logger. + </summary> + <remarks> + <para> + The <c>level</c> variable need not be + assigned a value in which case it is inherited + form the hierarchy. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_parent"> + <summary> + The parent of this logger. + </summary> + <remarks> + <para> + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_hierarchy"> + <summary> + Loggers need to know what Hierarchy they are in. + </summary> + <remarks> + <para> + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl"> + <summary> + Helper implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface + </summary> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_additive"> + <summary> + Flag indicating if child loggers inherit their parents appenders + </summary> + <remarks> + <para> + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to <c>false</c> then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to <c>false</c> too. See + the user manual for more details. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.Logger.m_appenderLock"> + <summary> + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + </summary> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Parent"> + <summary> + Gets or sets the parent logger in the hierarchy. + </summary> + <value> + The parent logger in the hierarchy. + </value> + <remarks> + <para> + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Additivity"> + <summary> + Gets or sets a value indicating if child loggers inherit their parent's appenders. + </summary> + <value> + <c>true</c> if child loggers inherit their parent's appenders. + </value> + <remarks> + <para> + Additivity is set to <c>true</c> by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to <c>false</c> then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to <c>false</c> too. See + the user manual for more details. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.EffectiveLevel"> + <summary> + Gets the effective level for this logger. + </summary> + <returns>The nearest level in the logger hierarchy.</returns> + <remarks> + <para> + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + </para> + <para>The Logger class is designed so that this method executes as + quickly as possible.</para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Hierarchy"> + <summary> + Gets or sets the <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/> where this + <c>Logger</c> instance is attached to. + </summary> + <value>The hierarchy that this logger belongs to.</value> + <remarks> + <para> + This logger must be attached to a single <see cref="P:log4net.Repository.Hierarchy.Logger.Hierarchy"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Level"> + <summary> + Gets or sets the assigned <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/>, if any, for this Logger. + </summary> + <value> + The <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/> of this logger. + </value> + <remarks> + <para> + The assigned <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/> can be <c>null</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Appenders"> + <summary> + Get the appenders contained in this logger as an + <see cref="T:System.Collections.ICollection"/>. + </summary> + <returns>A collection of the appenders in this logger</returns> + <remarks> + <para> + Get the appenders contained in this logger as an + <see cref="T:System.Collections.ICollection"/>. If no appenders + can be found, then a <see cref="T:log4net.Util.EmptyCollection"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Name"> + <summary> + Gets the logger name. + </summary> + <value> + The name of the logger. + </value> + <remarks> + <para> + The name of this logger + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Logger.Repository"> + <summary> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this + <c>Logger</c> instance is attached to. + </summary> + <value> + The <see cref="T:log4net.Repository.ILoggerRepository"/> that this logger belongs to. + </value> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this + <c>Logger</c> instance is attached to. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)"> + <summary> + Construct a new Logger + </summary> + <param name="name">the name of the logger</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl"/> class + with the specified name. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.LoggerCreationEventHandler"> + <summary> + Delegate used to handle logger creation event notifications. + </summary> + <param name="sender">The <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> in which the <see cref="T:log4net.Repository.Hierarchy.Logger"/> has been created.</param> + <param name="e">The <see cref="T:log4net.Repository.Hierarchy.LoggerCreationEventArgs"/> event args that hold the <see cref="T:log4net.Repository.Hierarchy.Logger"/> instance that has been created.</param> + <remarks> + <para> + Delegate used to handle logger creation event notifications. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.LoggerCreationEventArgs"> + <summary> + Provides data for the <see cref="E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent"/> event. + </summary> + <remarks> + <para> + A <see cref="E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent"/> event is raised every time a + <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> is created. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log"> + <summary> + The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> created + </summary> + </member> + <member name="M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)"> + <summary> + Constructor + </summary> + <param name="log">The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.LoggerCreationEventArgs"/> event argument + class,with the specified <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"> + <summary> + Gets the <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created. + </summary> + <value> + The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created. + </value> + <remarks> + <para> + The <see cref="P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger"/> that has been created. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.Hierarchy"> + <summary> + Hierarchical organization of loggers + </summary> + <remarks> + <para> + <i>The casual user should not have to deal with this class + directly.</i> + </para> + <para> + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + <see cref="T:log4net.Repository.ILoggerRepository"/> interface. + </para> + <para> + The structure of the logger hierarchy is maintained by the + <see cref="M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)"/> method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + </para> + <para> + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Repository.LoggerRepositorySkeleton"> + <summary> + Base implementation of <see cref="T:log4net.Repository.ILoggerRepository"/> + </summary> + <remarks> + <para> + Default abstract implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface. + </para> + <para> + Skeleton implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface. + All <see cref="T:log4net.Repository.ILoggerRepository"/> types can extend this type. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Repository.ILoggerRepository"> + <summary> + Interface implemented by logger repositories. + </summary> + <remarks> + <para> + This interface is implemented by logger repositories. e.g. + <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>. + </para> + <para> + This interface is used by the <see cref="T:log4net.LogManager"/> + to obtain <see cref="T:log4net.ILog"/> interfaces. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.ILoggerRepository.Exists(System.String)"> + <summary> + Check if the named logger exists in the repository. If so return + its reference, otherwise returns <c>null</c>. + </summary> + <param name="name">The name of the logger to lookup</param> + <returns>The Logger object with the name specified</returns> + <remarks> + <para> + If the names logger exists it is returned, otherwise + <c>null</c> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.ILoggerRepository.GetCurrentLoggers"> + <summary> + Returns all the currently defined loggers as an Array. + </summary> + <returns>All the defined loggers</returns> + <remarks> + <para> + Returns all the currently defined loggers as an Array. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.ILoggerRepository.GetLogger(System.String)"> + <summary> + Returns a named logger instance + </summary> + <param name="name">The name of the logger to retrieve</param> + <returns>The logger object with the name specified</returns> + <remarks> + <para> + Returns a named logger instance. + </para> + <para> + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.ILoggerRepository.Shutdown"> + <summary>Shutdown the repository</summary> + <remarks> + <para> + Shutting down a repository will <i>safely</i> close and remove + all appenders in all loggers including the root logger. + </para> + <para> + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + </para> + <para> + The <see cref="M:log4net.Repository.ILoggerRepository.Shutdown"/> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.ILoggerRepository.ResetConfiguration"> + <summary> + Reset the repositories configuration to a default state + </summary> + <remarks> + <para> + Reset all values contained in this instance to their + default state. + </para> + <para> + Existing loggers are not removed. They are just reset. + </para> + <para> + This method should be used sparingly and with care as it will + block all logging until it is completed. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)"> + <summary> + Log the <see cref="T:log4net.Core.LoggingEvent"/> through this repository. + </summary> + <param name="logEvent">the event to log</param> + <remarks> + <para> + This method should not normally be used to log. + The <see cref="T:log4net.ILog"/> interface should be used + for routine logging. This interface can be obtained + using the <see cref="M:log4net.LogManager.GetLogger(System.String)"/> method. + </para> + <para> + The <c>logEvent</c> is delivered to the appropriate logger and + that logger is then responsible for logging the event. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.ILoggerRepository.GetAppenders"> + <summary> + Returns all the Appenders that are configured as an Array. + </summary> + <returns>All the Appenders</returns> + <remarks> + <para> + Returns all the Appenders that are configured as an Array. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.Name"> + <summary> + The name of the repository + </summary> + <value> + The name of the repository + </value> + <remarks> + <para> + The name of the repository. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.RendererMap"> + <summary> + RendererMap accesses the object renderer map for this repository. + </summary> + <value> + RendererMap accesses the object renderer map for this repository. + </value> + <remarks> + <para> + RendererMap accesses the object renderer map for this repository. + </para> + <para> + The RendererMap holds a mapping between types and + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> objects. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.PluginMap"> + <summary> + The plugin map for this repository. + </summary> + <value> + The plugin map for this repository. + </value> + <remarks> + <para> + The plugin map holds the <see cref="T:log4net.Plugin.IPlugin"/> instances + that have been attached to this repository. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.LevelMap"> + <summary> + Get the level map for the Repository. + </summary> + <remarks> + <para> + Get the level map for the Repository. + </para> + <para> + The level map defines the mappings between + level names and <see cref="T:log4net.Core.Level"/> objects in + this repository. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.Threshold"> + <summary> + The threshold for all events in this repository + </summary> + <value> + The threshold for all events in this repository + </value> + <remarks> + <para> + The threshold for all events in this repository. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.Configured"> + <summary> + Flag indicates if this repository has been configured. + </summary> + <value> + Flag indicates if this repository has been configured. + </value> + <remarks> + <para> + Flag indicates if this repository has been configured. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.ILoggerRepository.ShutdownEvent"> + <summary> + Event to notify that the repository has been shutdown. + </summary> + <value> + Event to notify that the repository has been shutdown. + </value> + <remarks> + <para> + Event raised when the repository has been shutdown. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.ILoggerRepository.ConfigurationReset"> + <summary> + Event to notify that the repository has had its configuration reset. + </summary> + <value> + Event to notify that the repository has had its configuration reset. + </value> + <remarks> + <para> + Event raised when the repository's configuration has been + reset to default. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.ILoggerRepository.ConfigurationChanged"> + <summary> + Event to notify that the repository has had its configuration changed. + </summary> + <value> + Event to notify that the repository has had its configuration changed. + </value> + <remarks> + <para> + Event raised when the repository's configuration has been changed. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.ILoggerRepository.Properties"> + <summary> + Repository specific properties + </summary> + <value> + Repository specific properties + </value> + <remarks> + <para> + These properties can be specified on a repository specific basis. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.#ctor"> + <summary> + Default Constructor + </summary> + <remarks> + <para> + Initializes the repository with default (empty) properties. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)"> + <summary> + Construct the repository using specific properties + </summary> + <param name="properties">the properties to set for this repository</param> + <remarks> + <para> + Initializes the repository with specified properties. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)"> + <summary> + Test if logger exists + </summary> + <param name="name">The name of the logger to lookup</param> + <returns>The Logger object with the name specified</returns> + <remarks> + <para> + Check if the named logger exists in the repository. If so return + its reference, otherwise returns <c>null</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers"> + <summary> + Returns all the currently defined loggers in the repository + </summary> + <returns>All the defined loggers</returns> + <remarks> + <para> + Returns all the currently defined loggers in the repository as an Array. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)"> + <summary> + Return a new logger instance + </summary> + <param name="name">The name of the logger to retrieve</param> + <returns>The logger object with the name specified</returns> + <remarks> + <para> + Return a new logger instance. + </para> + <para> + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.Shutdown"> + <summary> + Shutdown the repository + </summary> + <remarks> + <para> + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the <see cref="E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent"/> + listeners and all attached plugins of the shutdown event. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration"> + <summary> + Reset the repositories configuration to a default state + </summary> + <remarks> + <para> + Reset all values contained in this instance to their + default state. + </para> + <para> + Existing loggers are not removed. They are just reset. + </para> + <para> + This method should be used sparingly and with care as it will + block all logging until it is completed. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)"> + <summary> + Log the logEvent through this repository. + </summary> + <param name="logEvent">the event to log</param> + <remarks> + <para> + This method should not normally be used to log. + The <see cref="T:log4net.ILog"/> interface should be used + for routine logging. This interface can be obtained + using the <see cref="M:log4net.LogManager.GetLogger(System.String)"/> method. + </para> + <para> + The <c>logEvent</c> is delivered to the appropriate logger and + that logger is then responsible for logging the event. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders"> + <summary> + Returns all the Appenders that are configured as an Array. + </summary> + <returns>All the Appenders</returns> + <remarks> + <para> + Returns all the Appenders that are configured as an Array. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)"> + <summary> + Adds an object renderer for a specific class. + </summary> + <param name="typeToRender">The type that will be rendered by the renderer supplied.</param> + <param name="rendererInstance">The object renderer used to render the object.</param> + <remarks> + <para> + Adds an object renderer for a specific class. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)"> + <summary> + Notify the registered listeners that the repository is shutting down + </summary> + <param name="e">Empty EventArgs</param> + <remarks> + <para> + Notify any listeners that this repository is shutting down. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)"> + <summary> + Notify the registered listeners that the repository has had its configuration reset + </summary> + <param name="e">Empty EventArgs</param> + <remarks> + <para> + Notify any listeners that this repository's configuration has been reset. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)"> + <summary> + Notify the registered listeners that the repository has had its configuration changed + </summary> + <param name="e">Empty EventArgs</param> + <remarks> + <para> + Notify any listeners that this repository's configuration has changed. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)"> + <summary> + Raise a configuration changed event on this repository + </summary> + <param name="e">EventArgs.Empty</param> + <remarks> + <para> + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.Name"> + <summary> + The name of the repository + </summary> + <value> + The string name of the repository + </value> + <remarks> + <para> + The name of this repository. The name is + used to store and lookup the repositories + stored by the <see cref="T:log4net.Core.IRepositorySelector"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.Threshold"> + <summary> + The threshold for all events in this repository + </summary> + <value> + The threshold for all events in this repository + </value> + <remarks> + <para> + The threshold for all events in this repository + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.RendererMap"> + <summary> + RendererMap accesses the object renderer map for this repository. + </summary> + <value> + RendererMap accesses the object renderer map for this repository. + </value> + <remarks> + <para> + RendererMap accesses the object renderer map for this repository. + </para> + <para> + The RendererMap holds a mapping between types and + <see cref="T:log4net.ObjectRenderer.IObjectRenderer"/> objects. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.PluginMap"> + <summary> + The plugin map for this repository. + </summary> + <value> + The plugin map for this repository. + </value> + <remarks> + <para> + The plugin map holds the <see cref="T:log4net.Plugin.IPlugin"/> instances + that have been attached to this repository. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.LevelMap"> + <summary> + Get the level map for the Repository. + </summary> + <remarks> + <para> + Get the level map for the Repository. + </para> + <para> + The level map defines the mappings between + level names and <see cref="T:log4net.Core.Level"/> objects in + this repository. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.Configured"> + <summary> + Flag indicates if this repository has been configured. + </summary> + <value> + Flag indicates if this repository has been configured. + </value> + <remarks> + <para> + Flag indicates if this repository has been configured. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent"> + <summary> + Event to notify that the repository has been shutdown. + </summary> + <value> + Event to notify that the repository has been shutdown. + </value> + <remarks> + <para> + Event raised when the repository has been shutdown. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset"> + <summary> + Event to notify that the repository has had its configuration reset. + </summary> + <value> + Event to notify that the repository has had its configuration reset. + </value> + <remarks> + <para> + Event raised when the repository's configuration has been + reset to default. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged"> + <summary> + Event to notify that the repository has had its configuration changed. + </summary> + <value> + Event to notify that the repository has had its configuration changed. + </value> + <remarks> + <para> + Event raised when the repository's configuration has been changed. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.LoggerRepositorySkeleton.Properties"> + <summary> + Repository specific properties + </summary> + <value> + Repository specific properties + </value> + <remarks> + These properties can be specified on a repository specific basis + </remarks> + </member> + <member name="T:log4net.Repository.IBasicRepositoryConfigurator"> + <summary> + Basic Configurator interface for repositories + </summary> + <remarks> + <para> + Interface used by basic configurator to configure a <see cref="T:log4net.Repository.ILoggerRepository"/> + with a default <see cref="T:log4net.Appender.IAppender"/>. + </para> + <para> + A <see cref="T:log4net.Repository.ILoggerRepository"/> should implement this interface to support + configuration by the <see cref="T:log4net.Config.BasicConfigurator"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)"> + <summary> + Initialize the repository using the specified appender + </summary> + <param name="appender">the appender to use to log all logging events</param> + <remarks> + <para> + Configure the repository to route all logging events to the + specified appender. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.IXmlRepositoryConfigurator"> + <summary> + Configure repository using XML + </summary> + <remarks> + <para> + Interface used by Xml configurator to configure a <see cref="T:log4net.Repository.ILoggerRepository"/>. + </para> + <para> + A <see cref="T:log4net.Repository.ILoggerRepository"/> should implement this interface to support + configuration by the <see cref="T:log4net.Config.XmlConfigurator"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)"> + <summary> + Initialize the repository using the specified config + </summary> + <param name="element">the element containing the root of the config</param> + <remarks> + <para> + The schema for the XML configuration data is defined by + the implementation. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)"> + <summary> + Construct with properties + </summary> + <param name="properties">The properties to pass to this repository.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)"> + <summary> + Construct with a logger factory + </summary> + <param name="loggerFactory">The factory to use to create new logger instances.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class with + the specified <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)"> + <summary> + Construct with properties and a logger factory + </summary> + <param name="properties">The properties to pass to this repository.</param> + <param name="loggerFactory">The factory to use to create new logger instances.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> class with + the specified <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)"> + <summary> + Test if a logger exists + </summary> + <param name="name">The name of the logger to lookup</param> + <returns>The Logger object with the name specified</returns> + <remarks> + <para> + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns <c>null</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers"> + <summary> + Returns all the currently defined loggers in the hierarchy as an Array + </summary> + <returns>All the defined loggers</returns> + <remarks> + <para> + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is <b>not</b> included in the returned + enumeration. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)"> + <summary> + Return a new logger instance named as the first parameter using + the default factory. + </summary> + <remarks> + <para> + Return a new logger instance named as the first parameter using + the default factory. + </para> + <para> + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + </para> + </remarks> + <param name="name">The name of the logger to retrieve</param> + <returns>The logger object with the name specified</returns> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.Shutdown"> + <summary> + Shutting down a hierarchy will <i>safely</i> close and remove + all appenders in all loggers including the root logger. + </summary> + <remarks> + <para> + Shutting down a hierarchy will <i>safely</i> close and remove + all appenders in all loggers including the root logger. + </para> + <para> + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + </para> + <para> + The <c>Shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration"> + <summary> + Reset all values contained in this hierarchy instance to their default. + </summary> + <remarks> + <para> + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to <c>null</c>, + sets their additivity flag to <c>true</c> and sets the level + of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover, + message disabling is set its default "off" value. + </para> + <para> + Existing loggers are not removed. They are just reset. + </para> + <para> + This method should be used sparingly and with care as it will + block all logging until it is completed. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)"> + <summary> + Log the logEvent through this hierarchy. + </summary> + <param name="logEvent">the event to log</param> + <remarks> + <para> + This method should not normally be used to log. + The <see cref="T:log4net.ILog"/> interface should be used + for routine logging. This interface can be obtained + using the <see cref="M:log4net.LogManager.GetLogger(System.String)"/> method. + </para> + <para> + The <c>logEvent</c> is delivered to the appropriate logger and + that logger is then responsible for logging the event. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders"> + <summary> + Returns all the Appenders that are currently configured + </summary> + <returns>An array containing all the currently configured appenders</returns> + <remarks> + <para> + Returns all the <see cref="T:log4net.Appender.IAppender"/> instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + </para> + <para> + The list returned is unordered but does not contain duplicates. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)"> + <summary> + Collect the appenders from an <see cref="T:log4net.Core.IAppenderAttachable"/>. + The appender may also be a container. + </summary> + <param name="appenderList"></param> + <param name="appender"></param> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)"> + <summary> + Collect the appenders from an <see cref="T:log4net.Core.IAppenderAttachable"/> container + </summary> + <param name="appenderList"></param> + <param name="container"></param> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)"> + <summary> + Initialize the log4net system using the specified appender + </summary> + <param name="appender">the appender to use to log all logging events</param> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender)"> + <summary> + Initialize the log4net system using the specified appender + </summary> + <param name="appender">the appender to use to log all logging events</param> + <remarks> + <para> + This method provides the same functionality as the + <see cref="M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)"/> method implemented + on this object, but it is protected and therefore can be called by subclasses. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)"> + <summary> + Initialize the log4net system using the specified config + </summary> + <param name="element">the element containing the root of the config</param> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)"> + <summary> + Initialize the log4net system using the specified config + </summary> + <param name="element">the element containing the root of the config</param> + <remarks> + <para> + This method provides the same functionality as the + <see cref="M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)"/> method implemented + on this object, but it is protected and therefore can be called by subclasses. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)"> + <summary> + Test if this hierarchy is disabled for the specified <see cref="T:log4net.Core.Level"/>. + </summary> + <param name="level">The level to check against.</param> + <returns> + <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise. + </returns> + <remarks> + <para> + If this hierarchy has not been configured then this method will + always return <c>true</c>. + </para> + <para> + This method will return <c>true</c> if this repository is + disabled for <c>level</c> object passed as parameter and + <c>false</c> otherwise. + </para> + <para> + See also the <see cref="P:log4net.Repository.ILoggerRepository.Threshold"/> property. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.Clear"> + <summary> + Clear all logger definitions from the internal hashtable + </summary> + <remarks> + <para> + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + </para> + <para> + You should <b>really</b> know what you are doing before + invoking this method. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)"> + <summary> + Return a new logger instance named as the first parameter using + <paramref name="factory"/>. + </summary> + <param name="name">The name of the logger to retrieve</param> + <param name="factory">The factory that will make the new logger instance</param> + <returns>The logger object with the name specified</returns> + <remarks> + <para> + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + <paramref name="factory"/> parameter and linked with its existing + ancestors as well as children. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)"> + <summary> + Sends a logger creation event to all registered listeners + </summary> + <param name="logger">The newly created logger</param> + <remarks> + Raises the logger creation event. + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)"> + <summary> + Updates all the parents of the specified logger + </summary> + <param name="log">The logger to update the parents for</param> + <remarks> + <para> + This method loops through all the <i>potential</i> parents of + <paramref name="log"/>. There 3 possible cases: + </para> + <list type="number"> + <item> + <term>No entry for the potential parent of <paramref name="log"/> exists</term> + <description> + We create a ProvisionNode for this potential + parent and insert <paramref name="log"/> in that provision node. + </description> + </item> + <item> + <term>The entry is of type Logger for the potential parent.</term> + <description> + The entry is <paramref name="log"/>'s nearest existing parent. We + update <paramref name="log"/>'s parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + </description> + </item> + <item> + <term>The entry is of type ProvisionNode for this potential parent.</term> + <description> + We add <paramref name="log"/> to the list of children for this + potential parent. + </description> + </item> + </list> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)"> + <summary> + Replace a <see cref="T:log4net.Repository.Hierarchy.ProvisionNode"/> with a <see cref="T:log4net.Repository.Hierarchy.Logger"/> in the hierarchy. + </summary> + <param name="pn"></param> + <param name="log"></param> + <remarks> + <para> + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + </para> + <para> + We loop on all the children 'c' in 'pn'. + </para> + <para> + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + </para> + <para> + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)"> + <summary> + Define or redefine a Level using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument + </summary> + <param name="levelEntry">the level values</param> + <remarks> + <para> + Define or redefine a Level using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument + </para> + <para> + Supports setting levels via the configuration file. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Repository.Hierarchy.Hierarchy.PropertyEntry)"> + <summary> + Set a Property using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument + </summary> + <param name="propertyEntry">the property value</param> + <remarks> + <para> + Set a Property using the values in the <see cref="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"/> argument. + </para> + <para> + Supports setting property values via the configuration file. + </para> + </remarks> + </member> + <member name="E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent"> + <summary> + Event used to notify that a logger has been created. + </summary> + <remarks> + <para> + Event raised when a logger is created. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning"> + <summary> + Has no appender warning been emitted + </summary> + <remarks> + <para> + Flag to indicate if we have already issued a warning + about not having an appender warning. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.Root"> + <summary> + Get the root of this hierarchy + </summary> + <remarks> + <para> + Get the root of this hierarchy. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory"> + <summary> + Gets or sets the default <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/> instance. + </summary> + <value>The default <see cref="T:log4net.Repository.Hierarchy.ILoggerFactory"/></value> + <remarks> + <para> + The logger factory is used to create logger instances. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry"> + <summary> + A class to hold the value, name and display name for a level + </summary> + <remarks> + <para> + A class to hold the value, name and display name for a level + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString"> + <summary> + Override <c>Object.ToString</c> to return sensible debug info + </summary> + <returns>string info about this object</returns> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value"> + <summary> + Value of the level + </summary> + <remarks> + <para> + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name"> + <summary> + Name of the level + </summary> + <value> + The name of the level + </value> + <remarks> + <para> + The name of the level. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName"> + <summary> + Display name for the level + </summary> + <value> + The display name of the level + </value> + <remarks> + <para> + The display name of the level. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.Hierarchy.PropertyEntry"> + <summary> + A class to hold the key and data for a property set in the config file + </summary> + <remarks> + <para> + A class to hold the key and data for a property set in the config file + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.Hierarchy.PropertyEntry.ToString"> + <summary> + Override <c>Object.ToString</c> to return sensible debug info + </summary> + <returns>string info about this object</returns> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.PropertyEntry.Key"> + <summary> + Property Key + </summary> + <value> + Property Key + </value> + <remarks> + <para> + Property Key. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.Hierarchy.PropertyEntry.Value"> + <summary> + Property Value + </summary> + <value> + Property Value + </value> + <remarks> + <para> + Property Value. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.LoggerKey"> + <summary> + Used internally to accelerate hash table searches. + </summary> + <remarks> + <para> + Internal class used to improve performance of + string keyed hashtables. + </para> + <para> + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/> objects for equality + the reference equality of the interned strings is compared. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)"> + <summary> + Construct key with string name + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/> class + with the specified name. + </para> + <para> + Stores the hashcode of the string and interns + the string key to optimize comparisons. + </para> + <note> + The Compact Framework 1.0 the <see cref="M:System.String.Intern(System.String)"/> + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + </note> + </remarks> + <param name="name">The name of the logger.</param> + </member> + <member name="M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode"> + <summary> + Returns a hash code for the current instance. + </summary> + <returns>A hash code for the current instance.</returns> + <remarks> + <para> + Returns the cached hashcode. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)"> + <summary> + Determines whether two <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/> instances + are equal. + </summary> + <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/>.</param> + <returns> + <c>true</c> if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:log4net.Repository.Hierarchy.LoggerKey"/>; otherwise, <c>false</c>. + </returns> + <remarks> + <para> + Compares the references of the interned strings. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.ProvisionNode"> + <summary> + Provision nodes are used where no logger instance has been specified + </summary> + <remarks> + <para> + <see cref="T:log4net.Repository.Hierarchy.ProvisionNode"/> instances are used in the + <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> when there is no specified + <see cref="T:log4net.Repository.Hierarchy.Logger"/> for that node. + </para> + <para> + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)"> + <summary> + Create a new provision node with child node + </summary> + <param name="log">A child logger to add to this node.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.ProvisionNode"/> class + with the specified child logger. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.RootLogger"> + <summary> + The <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> sits at the root of the logger hierarchy tree. + </summary> + <remarks> + <para> + The <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> is a regular <see cref="T:log4net.Repository.Hierarchy.Logger"/> except + that it provides several guarantees. + </para> + <para> + First, it cannot be assigned a <c>null</c> + level. Second, since the root logger cannot have a parent, the + <see cref="P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel"/> property always returns the value of the + level field without walking the hierarchy. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)"> + <summary> + Construct a <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> + </summary> + <param name="level">The level to assign to the root logger.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.RootLogger"/> class with + the specified logging level. + </para> + <para> + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel"> + <summary> + Gets the assigned level value without walking the logger hierarchy. + </summary> + <value>The assigned level value without walking the logger hierarchy.</value> + <remarks> + <para> + Because the root logger cannot have a parent and its level + must not be <c>null</c> this property just returns the + value of <see cref="P:log4net.Repository.Hierarchy.Logger.Level"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Repository.Hierarchy.RootLogger.Level"> + <summary> + Gets or sets the assigned <see cref="P:log4net.Repository.Hierarchy.RootLogger.Level"/> for the root logger. + </summary> + <value> + The <see cref="P:log4net.Repository.Hierarchy.RootLogger.Level"/> of the root logger. + </value> + <remarks> + <para> + Setting the level of the root logger to a <c>null</c> reference + may have catastrophic results. We prevent this here. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator"> + <summary> + Initializes the log4net environment using an XML DOM. + </summary> + <remarks> + <para> + Configures a <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> using an XML DOM. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)"> + <summary> + Construct the configurator for a hierarchy + </summary> + <param name="hierarchy">The hierarchy to build.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator"/> class + with the specified <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)"> + <summary> + Configure the hierarchy by parsing a DOM tree of XML elements. + </summary> + <param name="element">The root element to parse.</param> + <remarks> + <para> + Configure the hierarchy by parsing a DOM tree of XML elements. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)"> + <summary> + Parse appenders by IDREF. + </summary> + <param name="appenderRef">The appender ref element.</param> + <returns>The instance of the appender that the ref refers to.</returns> + <remarks> + <para> + Parse an XML element that represents an appender and return + the appender. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)"> + <summary> + Parses an appender element. + </summary> + <param name="appenderElement">The appender element.</param> + <returns>The appender instance or <c>null</c> when parsing failed.</returns> + <remarks> + <para> + Parse an XML element that represents an appender and return + the appender instance. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)"> + <summary> + Parses a logger element. + </summary> + <param name="loggerElement">The logger element.</param> + <remarks> + <para> + Parse an XML element that represents a logger. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)"> + <summary> + Parses the root logger element. + </summary> + <param name="rootElement">The root element.</param> + <remarks> + <para> + Parse an XML element that represents the root logger. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)"> + <summary> + Parses the children of a logger element. + </summary> + <param name="catElement">The category element.</param> + <param name="log">The logger instance.</param> + <param name="isRoot">Flag to indicate if the logger is the root logger.</param> + <remarks> + <para> + Parse the child elements of a <logger> element. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)"> + <summary> + Parses an object renderer. + </summary> + <param name="element">The renderer element.</param> + <remarks> + <para> + Parse an XML element that represents a renderer. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)"> + <summary> + Parses a level element. + </summary> + <param name="element">The level element.</param> + <param name="log">The logger object to set the level on.</param> + <param name="isRoot">Flag to indicate if the logger is the root logger.</param> + <remarks> + <para> + Parse an XML element that represents a level. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)"> + <summary> + Sets a parameter on an object. + </summary> + <param name="element">The parameter element.</param> + <param name="target">The object to set the parameter on.</param> + <remarks> + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called <c>Parse</c> on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)"> + <summary> + Test if an element has no attributes or child elements + </summary> + <param name="element">the element to inspect</param> + <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)"> + <summary> + Test if a <see cref="T:System.Type"/> is constructible with <c>Activator.CreateInstance</c>. + </summary> + <param name="type">the type to inspect</param> + <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)"> + <summary> + Look for a method on the <paramref name="targetType"/> that matches the <paramref name="name"/> supplied + </summary> + <param name="targetType">the type that has the method</param> + <param name="name">the name of the method</param> + <returns>the method info found</returns> + <remarks> + <para> + The method must be a public instance method on the <paramref name="targetType"/>. + The method must be named <paramref name="name"/> or "Add" followed by <paramref name="name"/>. + The method must take a single parameter. + </para> + </remarks> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)"> + <summary> + Converts a string value to a target type. + </summary> + <param name="type">The type of object to convert the string to.</param> + <param name="value">The string value to use as the value of the object.</param> + <returns> + <para> + An object of type <paramref name="type"/> with value <paramref name="value"/> or + <c>null</c> when the conversion could not be performed. + </para> + </returns> + </member> + <member name="M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)"> + <summary> + Creates an object as specified in XML. + </summary> + <param name="element">The XML element that contains the definition of the object.</param> + <param name="defaultTargetType">The object type to use if not explicitly specified.</param> + <param name="typeConstraint">The type that the returned object must be or must inherit from.</param> + <returns>The object or <c>null</c></returns> + <remarks> + <para> + Parse an XML element and create an object instance based on the configuration + data. + </para> + <para> + The type of the instance may be specified in the XML. If not + specified then the <paramref name="defaultTargetType"/> is used + as the type. However the type is specified it must support the + <paramref name="typeConstraint"/> type. + </para> + </remarks> + </member> + <member name="F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag"> + <summary> + key: appenderName, value: appender. + </summary> + </member> + <member name="F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy"> + <summary> + The Hierarchy being configured. + </summary> + </member> + <member name="T:log4net.Repository.LoggerRepositoryShutdownEventHandler"> + <summary> + Delegate used to handle logger repository shutdown event notifications + </summary> + <param name="sender">The <see cref="T:log4net.Repository.ILoggerRepository"/> that is shutting down.</param> + <param name="e">Empty event args</param> + <remarks> + <para> + Delegate used to handle logger repository shutdown event notifications. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler"> + <summary> + Delegate used to handle logger repository configuration reset event notifications + </summary> + <param name="sender">The <see cref="T:log4net.Repository.ILoggerRepository"/> that has had its configuration reset.</param> + <param name="e">Empty event args</param> + <remarks> + <para> + Delegate used to handle logger repository configuration reset event notifications. + </para> + </remarks> + </member> + <member name="T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler"> + <summary> + Delegate used to handle event notifications for logger repository configuration changes. + </summary> + <param name="sender">The <see cref="T:log4net.Repository.ILoggerRepository"/> that has had its configuration changed.</param> + <param name="e">Empty event arguments.</param> + <remarks> + <para> + Delegate used to handle event notifications for logger repository configuration changes. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.AppDomainPatternConverter"> + <summary> + Write the name of the current AppDomain to the output + </summary> + <remarks> + <para> + Write the name of the current AppDomain to the output writer + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the name of the current AppDomain to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Writes name of the current AppDomain to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.DatePatternConverter"> + <summary> + Write the current date to the output + </summary> + <remarks> + <para> + Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format + the current date and time to the writer as a string. + </para> + <para> + The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines + the formatting of the date. The following values are allowed: + <list type="definition"> + <listheader> + <term>Option value</term> + <description>Output</description> + </listheader> + <item> + <term>ISO8601</term> + <description> + Uses the <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/> formatter. + Formats using the <c>"yyyy-MM-dd HH:mm:ss,fff"</c> pattern. + </description> + </item> + <item> + <term>DATE</term> + <description> + Uses the <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> formatter. + Formats using the <c>"dd MMM yyyy HH:mm:ss,fff"</c> for example, <c>"06 Nov 1994 15:49:37,459"</c>. + </description> + </item> + <item> + <term>ABSOLUTE</term> + <description> + Uses the <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/> formatter. + Formats using the <c>"HH:mm:ss,fff"</c> for example, <c>"15:49:37,459"</c>. + </description> + </item> + <item> + <term>other</term> + <description> + Any other pattern string uses the <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/> formatter. + This formatter passes the pattern string to the <see cref="T:System.DateTime"/> + <see cref="M:System.DateTime.ToString(System.String)"/> method. + For details on valid patterns see + <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp">DateTimeFormatInfo Class</a>. + </description> + </item> + </list> + </para> + <para> + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see <see cref="T:log4net.Util.PatternStringConverters.UtcDatePatternConverter"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter"> + <summary> + The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string + </summary> + <remarks> + <para> + The <see cref="T:log4net.DateFormatter.IDateFormatter"/> used to render the date to a string + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"> + <summary> + Initialize the converter options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the current date to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Pass the current date and time to the <see cref="T:log4net.DateFormatter.IDateFormatter"/> + for it to render it to the writer. + </para> + <para> + The date and time passed is in the local time zone. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter"> + <summary> + Write an environment variable to the output + </summary> + <remarks> + <para> + Write an environment variable to the output writer. + The value of the <see cref="P:log4net.Util.PatternConverter.Option"/> determines + the name of the variable to output. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write an environment variable to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Writes the environment variable to the output <paramref name="writer"/>. + The name of the environment variable to output must be set + using the <see cref="P:log4net.Util.PatternConverter.Option"/> + property. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.IdentityPatternConverter"> + <summary> + Write the current thread identity to the output + </summary> + <remarks> + <para> + Write the current thread identity to the output writer + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the current thread identity to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Writes the current thread identity to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.LiteralPatternConverter"> + <summary> + Pattern converter for literal string instances in the pattern + </summary> + <remarks> + <para> + Writes the literal string value specified in the + <see cref="P:log4net.Util.PatternConverter.Option"/> property to + the output. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)"> + <summary> + Set the next converter in the chain + </summary> + <param name="pc">The next pattern converter in the chain</param> + <returns>The next pattern converter</returns> + <remarks> + <para> + Special case the building of the pattern converter chain + for <see cref="T:log4net.Util.PatternStringConverters.LiteralPatternConverter"/> instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + <see cref="T:log4net.Util.PatternStringConverters.LiteralPatternConverter"/> is added to the chain + after this converter and combines its value with this converter's + literal value. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)"> + <summary> + Write the literal to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, not set</param> + <remarks> + <para> + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + </para> + <para> + Writes the value of <see cref="P:log4net.Util.PatternConverter.Option"/> + to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Convert this pattern into the rendered message + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">null, not set</param> + <remarks> + <para> + This method is not used. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.NewLinePatternConverter"> + <summary> + Writes a newline to the output + </summary> + <remarks> + <para> + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the <see cref="P:log4net.Util.PatternConverter.Option"/>: + </para> + <list type="definition"> + <listheader> + <term>Option Value</term> + <description>Output</description> + </listheader> + <item> + <term>DOS</term> + <description>DOS or Windows line terminator <c>"\r\n"</c></description> + </item> + <item> + <term>UNIX</term> + <description>UNIX line terminator <c>"\n"</c></description> + </item> + </list> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"> + <summary> + Initialize the converter + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter"> + <summary> + Write the current process ID to the output + </summary> + <remarks> + <para> + Write the current process ID to the output writer + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the current process ID to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Write the current process ID to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.PropertyPatternConverter"> + <summary> + Property pattern converter + </summary> + <remarks> + <para> + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See <see cref="P:log4net.ThreadContext.Properties"/> for details of the + thread properties. See <see cref="P:log4net.GlobalContext.Properties"/> for + details of the global properties. + </para> + <para> + If the <see cref="P:log4net.Util.PatternConverter.Option"/> is specified then that will be used to + lookup a single property. If no <see cref="P:log4net.Util.PatternConverter.Option"/> is specified + then all properties will be dumped as a list of key value pairs. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the property value to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Writes out the value of a named property. The property name + should be set in the <see cref="P:log4net.Util.PatternConverter.Option"/> + property. + </para> + <para> + If the <see cref="P:log4net.Util.PatternConverter.Option"/> is set to <c>null</c> + then all the properties are written as key value pairs. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.RandomStringPatternConverter"> + <summary> + A Pattern converter that generates a string of random characters + </summary> + <remarks> + <para> + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the <see cref="P:log4net.Util.PatternConverter.Option"/> + to the string value of the length required. + </para> + <para> + The random characters in the string are limited to uppercase letters + and numbers only. + </para> + <para> + The random number generator used by this class is not cryptographically secure. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random"> + <summary> + Shared random number generator + </summary> + </member> + <member name="F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length"> + <summary> + Length of random string to generate. Default length 4. + </summary> + </member> + <member name="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"> + <summary> + Initialize the converter options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write a randoim string to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Write a randoim string to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.UserNamePatternConverter"> + <summary> + Write the current threads username to the output + </summary> + <remarks> + <para> + Write the current threads username to the output writer + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the current threads username to the output + </summary> + <param name="writer">the writer to write to</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Write the current threads username to the output <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternStringConverters.UtcDatePatternConverter"> + <summary> + Write the UTC date time to the output + </summary> + <remarks> + <para> + Date pattern converter, uses a <see cref="T:log4net.DateFormatter.IDateFormatter"/> to format + the current date and time in Universal time. + </para> + <para> + See the <see cref="T:log4net.Util.PatternStringConverters.DatePatternConverter"/> for details on the date pattern syntax. + </para> + </remarks> + <seealso cref="T:log4net.Util.PatternStringConverters.DatePatternConverter"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)"> + <summary> + Write the current date and time to the output + </summary> + <param name="writer"><see cref="T:System.IO.TextWriter"/> that will receive the formatted result.</param> + <param name="state">null, state is not set</param> + <remarks> + <para> + Pass the current date and time to the <see cref="T:log4net.DateFormatter.IDateFormatter"/> + for it to render it to the writer. + </para> + <para> + The date is in Universal time when it is rendered. + </para> + </remarks> + <seealso cref="T:log4net.Util.PatternStringConverters.DatePatternConverter"/> + </member> + <member name="T:log4net.Util.TypeConverters.BooleanConverter"> + <summary> + Type converter for Boolean. + </summary> + <remarks> + <para> + Supports conversion from string to <c>bool</c> type. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="sourceType"/> is + the <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)"> + <summary> + Convert the source object to the type supported by this object + </summary> + <param name="source">the object to convert</param> + <returns>the converted object</returns> + <remarks> + <para> + Uses the <see cref="M:System.Boolean.Parse(System.String)"/> method to convert the + <see cref="T:System.String"/> argument to a <see cref="T:System.Boolean"/>. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)"/> + method. + </exception> + </member> + <member name="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + <summary> + Exception base type for conversion errors. + </summary> + <remarks> + <para> + This type extends <see cref="T:System.ApplicationException"/>. It + does not add any new functionality but does differentiate the + type of exception being thrown. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)"> + <summary> + Constructor + </summary> + <param name="message">A message to include with the exception.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class + with the specified message. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)"> + <summary> + Constructor + </summary> + <param name="message">A message to include with the exception.</param> + <param name="innerException">A nested exception to include.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class + with the specified message and inner exception. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Serialization constructor + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param> + <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class + with serialized data. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)"> + <summary> + Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class. + </summary> + <param name="destinationType">The conversion destination type.</param> + <param name="sourceValue">The value to convert.</param> + <returns>An instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/>.</returns> + <remarks> + <para> + Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)"> + <summary> + Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class. + </summary> + <param name="destinationType">The conversion destination type.</param> + <param name="sourceValue">The value to convert.</param> + <param name="innerException">A nested exception to include.</param> + <returns>An instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/>.</returns> + <remarks> + <para> + Creates a new instance of the <see cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"/> class. + </para> + </remarks> + </member> + <member name="T:log4net.Util.TypeConverters.ConverterRegistry"> + <summary> + Register of type converters for specific types. + </summary> + <remarks> + <para> + Maintains a registry of type converters used to convert between + types. + </para> + <para> + Use the <see cref="M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)"/> and + <see cref="M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)"/> methods to register new converters. + The <see cref="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)"/> and <see cref="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)"/> methods + lookup appropriate converters to use. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.#ctor"> + <summary> + Private constructor + </summary> + <remarks> + Initializes a new instance of the <see cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> class. + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.#cctor"> + <summary> + Static constructor. + </summary> + <remarks> + <para> + This constructor defines the intrinsic type converters. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)"> + <summary> + Adds a converter for a specific type. + </summary> + <param name="destinationType">The type being converted to.</param> + <param name="converter">The type converter to use to convert to the destination type.</param> + <remarks> + <para> + Adds a converter instance for a specific type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)"> + <summary> + Adds a converter for a specific type. + </summary> + <param name="destinationType">The type being converted to.</param> + <param name="converterType">The type of the type converter to use to convert to the destination type.</param> + <remarks> + <para> + Adds a converter <see cref="T:System.Type"/> for a specific type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)"> + <summary> + Gets the type converter to use to convert values to the destination type. + </summary> + <param name="sourceType">The type being converted from.</param> + <param name="destinationType">The type being converted to.</param> + <returns> + The type converter instance to use for type conversions or <c>null</c> + if no type converter is found. + </returns> + <remarks> + <para> + Gets the type converter to use to convert values to the destination type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)"> + <summary> + Gets the type converter to use to convert values to the destination type. + </summary> + <param name="destinationType">The type being converted to.</param> + <returns> + The type converter instance to use for type conversions or <c>null</c> + if no type converter is found. + </returns> + <remarks> + <para> + Gets the type converter to use to convert values to the destination type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)"> + <summary> + Lookups the type converter to use as specified by the attributes on the + destination type. + </summary> + <param name="destinationType">The type being converted to.</param> + <returns> + The type converter instance to use for type conversions or <c>null</c> + if no type converter is found. + </returns> + </member> + <member name="M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)"> + <summary> + Creates the instance of the type converter. + </summary> + <param name="converterType">The type of the type converter.</param> + <returns> + The type converter instance to use for type conversions or <c>null</c> + if no type converter is found. + </returns> + <remarks> + <para> + The type specified for the type converter must implement + the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/> or <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces + and must have a public default (no argument) constructor. + </para> + </remarks> + </member> + <member name="F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter"> + <summary> + Mapping from <see cref="T:System.Type"/> to type converter. + </summary> + </member> + <member name="T:log4net.Util.TypeConverters.EncodingConverter"> + <summary> + Supports conversion from string to <see cref="T:System.Text.Encoding"/> type. + </summary> + <remarks> + <para> + Supports conversion from string to <see cref="T:System.Text.Encoding"/> type. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="sourceType"/> is + the <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)"> + <summary> + Overrides the ConvertFrom method of IConvertFrom. + </summary> + <param name="source">the object to convert to an encoding</param> + <returns>the encoding</returns> + <remarks> + <para> + Uses the <see cref="M:System.Text.Encoding.GetEncoding(System.String)"/> method to + convert the <see cref="T:System.String"/> argument to an <see cref="T:System.Text.Encoding"/>. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)"/> + method. + </exception> + </member> + <member name="T:log4net.Util.TypeConverters.IConvertTo"> + <summary> + Interface supported by type converters + </summary> + <remarks> + <para> + This interface supports conversion from a single type to arbitrary types. + See <see cref="T:log4net.Util.TypeConverters.TypeConverterAttribute"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)"> + <summary> + Returns whether this converter can convert the object to the specified type + </summary> + <param name="targetType">A Type that represents the type you want to convert to</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Test if the type supported by this converter can be converted to the + <paramref name="targetType"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)"> + <summary> + Converts the given value object to the specified type, using the arguments + </summary> + <param name="source">the object to convert</param> + <param name="targetType">The Type to convert the value parameter to</param> + <returns>the converted object</returns> + <remarks> + <para> + Converts the <paramref name="source"/> (which must be of the type supported + by this converter) to the <paramref name="targetType"/> specified.. + </para> + </remarks> + </member> + <member name="T:log4net.Util.TypeConverters.IPAddressConverter"> + <summary> + Supports conversion from string to <see cref="T:System.Net.IPAddress"/> type. + </summary> + <remarks> + <para> + Supports conversion from string to <see cref="T:System.Net.IPAddress"/> type. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="sourceType"/> is + the <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)"> + <summary> + Overrides the ConvertFrom method of IConvertFrom. + </summary> + <param name="source">the object to convert to an IPAddress</param> + <returns>the IPAddress</returns> + <remarks> + <para> + Uses the <see cref="M:System.Net.IPAddress.Parse(System.String)"/> method to convert the + <see cref="T:System.String"/> argument to an <see cref="T:System.Net.IPAddress"/>. + If that fails then the string is resolved as a DNS hostname. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)"/> + method. + </exception> + </member> + <member name="F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars"> + <summary> + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + </summary> + </member> + <member name="T:log4net.Util.TypeConverters.PatternLayoutConverter"> + <summary> + Supports conversion from string to <see cref="T:log4net.Layout.PatternLayout"/> type. + </summary> + <remarks> + <para> + Supports conversion from string to <see cref="T:log4net.Layout.PatternLayout"/> type. + </para> + <para> + The string is used as the <see cref="P:log4net.Layout.PatternLayout.ConversionPattern"/> + of the <see cref="T:log4net.Layout.PatternLayout"/>. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="sourceType"/> is + the <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)"> + <summary> + Overrides the ConvertFrom method of IConvertFrom. + </summary> + <param name="source">the object to convert to a PatternLayout</param> + <returns>the PatternLayout</returns> + <remarks> + <para> + Creates and returns a new <see cref="T:log4net.Layout.PatternLayout"/> using + the <paramref name="source"/> <see cref="T:System.String"/> as the + <see cref="P:log4net.Layout.PatternLayout.ConversionPattern"/>. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)"/> + method. + </exception> + </member> + <member name="T:log4net.Util.TypeConverters.PatternStringConverter"> + <summary> + Convert between string and <see cref="T:log4net.Util.PatternString"/> + </summary> + <remarks> + <para> + Supports conversion from string to <see cref="T:log4net.Util.PatternString"/> type, + and from a <see cref="T:log4net.Util.PatternString"/> type to a string. + </para> + <para> + The string is used as the <see cref="P:log4net.Util.PatternString.ConversionPattern"/> + of the <see cref="T:log4net.Util.PatternString"/>. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)"> + <summary> + Can the target type be converted to the type supported by this object + </summary> + <param name="targetType">A <see cref="T:System.Type"/> that represents the type you want to convert to</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="targetType"/> is + assignable from a <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)"> + <summary> + Converts the given value object to the specified type, using the arguments + </summary> + <param name="source">the object to convert</param> + <param name="targetType">The Type to convert the value parameter to</param> + <returns>the converted object</returns> + <remarks> + <para> + Uses the <see cref="M:log4net.Util.PatternString.Format"/> method to convert the + <see cref="T:log4net.Util.PatternString"/> argument to a <see cref="T:System.String"/>. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + <paramref name="targetType"/>. To check for this condition use the + <see cref="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)"/> method. + </exception> + </member> + <member name="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="sourceType"/> is + the <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)"> + <summary> + Overrides the ConvertFrom method of IConvertFrom. + </summary> + <param name="source">the object to convert to a PatternString</param> + <returns>the PatternString</returns> + <remarks> + <para> + Creates and returns a new <see cref="T:log4net.Util.PatternString"/> using + the <paramref name="source"/> <see cref="T:System.String"/> as the + <see cref="P:log4net.Util.PatternString.ConversionPattern"/>. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)"/> + method. + </exception> + </member> + <member name="T:log4net.Util.TypeConverters.TypeConverter"> + <summary> + Supports conversion from string to <see cref="T:System.Type"/> type. + </summary> + <remarks> + <para> + Supports conversion from string to <see cref="T:System.Type"/> type. + </para> + </remarks> + <seealso cref="T:log4net.Util.TypeConverters.ConverterRegistry"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + <seealso cref="T:log4net.Util.TypeConverters.IConvertTo"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)"> + <summary> + Can the source type be converted to the type supported by this object + </summary> + <param name="sourceType">the type to convert</param> + <returns>true if the conversion is possible</returns> + <remarks> + <para> + Returns <c>true</c> if the <paramref name="sourceType"/> is + the <see cref="T:System.String"/> type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)"> + <summary> + Overrides the ConvertFrom method of IConvertFrom. + </summary> + <param name="source">the object to convert to a Type</param> + <returns>the Type</returns> + <remarks> + <para> + Uses the <see cref="M:System.Type.GetType(System.String,System.Boolean)"/> method to convert the + <see cref="T:System.String"/> argument to a <see cref="T:System.Type"/>. + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + </para> + </remarks> + <exception cref="T:log4net.Util.TypeConverters.ConversionNotSupportedException"> + The <paramref name="source"/> object cannot be converted to the + target type. To check for this condition use the <see cref="M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)"/> + method. + </exception> + </member> + <member name="T:log4net.Util.TypeConverters.TypeConverterAttribute"> + <summary> + Attribute used to associate a type converter + </summary> + <remarks> + <para> + Class and Interface level attribute that specifies a type converter + to use with the associated type. + </para> + <para> + To associate a type converter with a target type apply a + <c>TypeConverterAttribute</c> to the target type. Specify the + type of the type converter on the attribute. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName"> + <summary> + The string type name of the type converter + </summary> + </member> + <member name="M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Default constructor + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)"> + <summary> + Create a new type converter attribute for the specified type name + </summary> + <param name="typeName">The string type name of the type converter</param> + <remarks> + <para> + The type specified must implement the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + or the <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)"> + <summary> + Create a new type converter attribute for the specified type + </summary> + <param name="converterType">The type of the type converter</param> + <remarks> + <para> + The type specified must implement the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + or the <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces. + </para> + </remarks> + </member> + <member name="P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName"> + <summary> + The string type name of the type converter + </summary> + <value> + The string type name of the type converter + </value> + <remarks> + <para> + The type specified must implement the <see cref="T:log4net.Util.TypeConverters.IConvertFrom"/> + or the <see cref="T:log4net.Util.TypeConverters.IConvertTo"/> interfaces. + </para> + </remarks> + </member> + <member name="T:log4net.Util.AppenderAttachedImpl"> + <summary> + A straightforward implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface. + </summary> + <remarks> + <para> + This is the default implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> + interface. Implementors of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface + should aggregate an instance of this type. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.AppenderAttachedImpl"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)"> + <summary> + Append on on all attached appenders. + </summary> + <param name="loggingEvent">The event being logged.</param> + <returns>The number of appenders called.</returns> + <remarks> + <para> + Calls the <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method on all + attached appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])"> + <summary> + Append on on all attached appenders. + </summary> + <param name="loggingEvents">The array of events being logged.</param> + <returns>The number of appenders called.</returns> + <remarks> + <para> + Calls the <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method on all + attached appenders. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])"> + <summary> + Calls the DoAppende method on the <see cref="T:log4net.Appender.IAppender"/> with + the <see cref="T:log4net.Core.LoggingEvent"/> objects supplied. + </summary> + <param name="appender">The appender</param> + <param name="loggingEvents">The events</param> + <remarks> + <para> + If the <paramref name="appender"/> supports the <see cref="T:log4net.Appender.IBulkAppender"/> + interface then the <paramref name="loggingEvents"/> will be passed + through using that interface. Otherwise the <see cref="T:log4net.Core.LoggingEvent"/> + objects in the array will be passed one at a time. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)"> + <summary> + Attaches an appender. + </summary> + <param name="newAppender">The appender to add.</param> + <remarks> + <para> + If the appender is already in the list it won't be added again. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)"> + <summary> + Gets an attached appender with the specified name. + </summary> + <param name="name">The name of the appender to get.</param> + <returns> + The appender with the name specified, or <c>null</c> if no appender with the + specified name is found. + </returns> + <remarks> + <para> + Lookup an attached appender by name. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders"> + <summary> + Removes all attached appenders. + </summary> + <remarks> + <para> + Removes and closes all attached appenders + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)"> + <summary> + Removes the specified appender from the list of attached appenders. + </summary> + <param name="appender">The appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + <para> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </para> + </remarks> + </member> + <member name="M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)"> + <summary> + Removes the appender with the specified name from the list of appenders. + </summary> + <param name="name">The name of the appender to remove.</param> + <returns>The appender removed from the list</returns> + <remarks> + <para> + The appender removed is not closed. + If you are discarding the appender you must call + <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed. + </para> + </remarks> + </member> + <member name="F:log4net.Util.AppenderAttachedImpl.m_appenderList"> + <summary> + List of appenders + </summary> + </member> + <member name="F:log4net.Util.AppenderAttachedImpl.m_appenderArray"> + <summary> + Array of appenders, used to cache the m_appenderList + </summary> + </member> + <member name="P:log4net.Util.AppenderAttachedImpl.Appenders"> + <summary> + Gets all attached appenders. + </summary> + <returns> + A collection of attached appenders, or <c>null</c> if there + are no attached appenders. + </returns> + <remarks> + <para> + The read only collection of all currently attached appenders. + </para> + </remarks> + </member> + <member name="T:log4net.Util.CompositeProperties"> + <summary> + This class aggregates several PropertiesDictionary collections together. + </summary> + <remarks> + <para> + Provides a dictionary style lookup over an ordered list of + <see cref="T:log4net.Util.PropertiesDictionary"/> collections. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.CompositeProperties.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.CompositeProperties"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)"> + <summary> + Add a Properties Dictionary to this composite collection + </summary> + <param name="properties">the properties to add</param> + <remarks> + <para> + Properties dictionaries added first take precedence over dictionaries added + later. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CompositeProperties.Flatten"> + <summary> + Flatten this composite collection into a single properties dictionary + </summary> + <returns>the flattened dictionary</returns> + <remarks> + <para> + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + </para> + </remarks> + </member> + <member name="P:log4net.Util.CompositeProperties.Item(System.String)"> + <summary> + Gets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Looks up the value for the <paramref name="key"/> specified. + The <see cref="T:log4net.Util.PropertiesDictionary"/> collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + </para> + <para> + If none of the collections contain the specified key then + <c>null</c> is returned. + </para> + </remarks> + </member> + <member name="T:log4net.Util.ContextPropertiesBase"> + <summary> + Base class for Context Properties implementations + </summary> + <remarks> + <para> + This class defines a basic property get set accessor + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="P:log4net.Util.ContextPropertiesBase.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="T:log4net.Util.CountingQuietTextWriter"> + <summary> + Subclass of <see cref="T:log4net.Util.QuietTextWriter"/> that maintains a count of + the number of bytes written. + </summary> + <remarks> + <para> + This writer counts the number of bytes written. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Util.QuietTextWriter"> + <summary> + <see cref="T:System.IO.TextWriter"/> that does not leak exceptions + </summary> + <remarks> + <para> + <see cref="T:log4net.Util.QuietTextWriter"/> does not throw exceptions when things go wrong. + Instead, it delegates error handling to its <see cref="T:log4net.Core.IErrorHandler"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Util.TextWriterAdapter"> + <summary> + Adapter that extends <see cref="T:System.IO.TextWriter"/> and forwards all + messages to an instance of <see cref="T:System.IO.TextWriter"/>. + </summary> + <remarks> + <para> + Adapter that extends <see cref="T:System.IO.TextWriter"/> and forwards all + messages to an instance of <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.TextWriterAdapter.m_writer"> + <summary> + The writer to forward messages to + </summary> + </member> + <member name="M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)"> + <summary> + Create an instance of <see cref="T:log4net.Util.TextWriterAdapter"/> that forwards all + messages to a <see cref="T:System.IO.TextWriter"/>. + </summary> + <param name="writer">The <see cref="T:System.IO.TextWriter"/> to forward to</param> + <remarks> + <para> + Create an instance of <see cref="T:log4net.Util.TextWriterAdapter"/> that forwards all + messages to a <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.TextWriterAdapter.Close"> + <summary> + Closes the writer and releases any system resources associated with the writer + </summary> + <remarks> + <para> + </para> + </remarks> + </member> + <member name="M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)"> + <summary> + Dispose this writer + </summary> + <param name="disposing">flag indicating if we are being disposed</param> + <remarks> + <para> + Dispose this writer + </para> + </remarks> + </member> + <member name="M:log4net.Util.TextWriterAdapter.Flush"> + <summary> + Flushes any buffered output + </summary> + <remarks> + <para> + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + </para> + </remarks> + </member> + <member name="M:log4net.Util.TextWriterAdapter.Write(System.Char)"> + <summary> + Writes a character to the wrapped TextWriter + </summary> + <param name="value">the value to write to the TextWriter</param> + <remarks> + <para> + Writes a character to the wrapped TextWriter + </para> + </remarks> + </member> + <member name="M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)"> + <summary> + Writes a character buffer to the wrapped TextWriter + </summary> + <param name="buffer">the data buffer</param> + <param name="index">the start index</param> + <param name="count">the number of characters to write</param> + <remarks> + <para> + Writes a character buffer to the wrapped TextWriter + </para> + </remarks> + </member> + <member name="M:log4net.Util.TextWriterAdapter.Write(System.String)"> + <summary> + Writes a string to the wrapped TextWriter + </summary> + <param name="value">the value to write to the TextWriter</param> + <remarks> + <para> + Writes a string to the wrapped TextWriter + </para> + </remarks> + </member> + <member name="P:log4net.Util.TextWriterAdapter.Writer"> + <summary> + Gets or sets the underlying <see cref="T:System.IO.TextWriter"/>. + </summary> + <value> + The underlying <see cref="T:System.IO.TextWriter"/>. + </value> + <remarks> + <para> + Gets or sets the underlying <see cref="T:System.IO.TextWriter"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.TextWriterAdapter.Encoding"> + <summary> + The Encoding in which the output is written + </summary> + <value> + The <see cref="P:log4net.Util.TextWriterAdapter.Encoding"/> + </value> + <remarks> + <para> + The Encoding in which the output is written + </para> + </remarks> + </member> + <member name="P:log4net.Util.TextWriterAdapter.FormatProvider"> + <summary> + Gets an object that controls formatting + </summary> + <value> + The format provider + </value> + <remarks> + <para> + Gets an object that controls formatting + </para> + </remarks> + </member> + <member name="P:log4net.Util.TextWriterAdapter.NewLine"> + <summary> + Gets or sets the line terminator string used by the TextWriter + </summary> + <value> + The line terminator to use + </value> + <remarks> + <para> + Gets or sets the line terminator string used by the TextWriter + </para> + </remarks> + </member> + <member name="M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)"> + <summary> + Constructor + </summary> + <param name="writer">the writer to actually write to</param> + <param name="errorHandler">the error handler to report error to</param> + <remarks> + <para> + Create a new QuietTextWriter using a writer and error handler + </para> + </remarks> + </member> + <member name="M:log4net.Util.QuietTextWriter.Write(System.Char)"> + <summary> + Writes a character to the underlying writer + </summary> + <param name="value">the char to write</param> + <remarks> + <para> + Writes a character to the underlying writer + </para> + </remarks> + </member> + <member name="M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)"> + <summary> + Writes a buffer to the underlying writer + </summary> + <param name="buffer">the buffer to write</param> + <param name="index">the start index to write from</param> + <param name="count">the number of characters to write</param> + <remarks> + <para> + Writes a buffer to the underlying writer + </para> + </remarks> + </member> + <member name="M:log4net.Util.QuietTextWriter.Write(System.String)"> + <summary> + Writes a string to the output. + </summary> + <param name="value">The string data to write to the output.</param> + <remarks> + <para> + Writes a string to the output. + </para> + </remarks> + </member> + <member name="M:log4net.Util.QuietTextWriter.Close"> + <summary> + Closes the underlying output writer. + </summary> + <remarks> + <para> + Closes the underlying output writer. + </para> + </remarks> + </member> + <member name="F:log4net.Util.QuietTextWriter.m_errorHandler"> + <summary> + The error handler instance to pass all errors to + </summary> + </member> + <member name="F:log4net.Util.QuietTextWriter.m_closed"> + <summary> + Flag to indicate if this writer is closed + </summary> + </member> + <member name="P:log4net.Util.QuietTextWriter.ErrorHandler"> + <summary> + Gets or sets the error handler that all errors are passed to. + </summary> + <value> + The error handler that all errors are passed to. + </value> + <remarks> + <para> + Gets or sets the error handler that all errors are passed to. + </para> + </remarks> + </member> + <member name="P:log4net.Util.QuietTextWriter.Closed"> + <summary> + Gets a value indicating whether this writer is closed. + </summary> + <value> + <c>true</c> if this writer is closed, otherwise <c>false</c>. + </value> + <remarks> + <para> + Gets a value indicating whether this writer is closed. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)"> + <summary> + Constructor + </summary> + <param name="writer">The <see cref="T:System.IO.TextWriter"/> to actually write to.</param> + <param name="errorHandler">The <see cref="T:log4net.Core.IErrorHandler"/> to report errors to.</param> + <remarks> + <para> + Creates a new instance of the <see cref="T:log4net.Util.CountingQuietTextWriter"/> class + with the specified <see cref="T:System.IO.TextWriter"/> and <see cref="T:log4net.Core.IErrorHandler"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CountingQuietTextWriter.Write(System.Char)"> + <summary> + Writes a character to the underlying writer and counts the number of bytes written. + </summary> + <param name="value">the char to write</param> + <remarks> + <para> + Overrides implementation of <see cref="T:log4net.Util.QuietTextWriter"/>. Counts + the number of bytes written. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)"> + <summary> + Writes a buffer to the underlying writer and counts the number of bytes written. + </summary> + <param name="buffer">the buffer to write</param> + <param name="index">the start index to write from</param> + <param name="count">the number of characters to write</param> + <remarks> + <para> + Overrides implementation of <see cref="T:log4net.Util.QuietTextWriter"/>. Counts + the number of bytes written. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CountingQuietTextWriter.Write(System.String)"> + <summary> + Writes a string to the output and counts the number of bytes written. + </summary> + <param name="str">The string data to write to the output.</param> + <remarks> + <para> + Overrides implementation of <see cref="T:log4net.Util.QuietTextWriter"/>. Counts + the number of bytes written. + </para> + </remarks> + </member> + <member name="F:log4net.Util.CountingQuietTextWriter.m_countBytes"> + <summary> + Total number of bytes written. + </summary> + </member> + <member name="P:log4net.Util.CountingQuietTextWriter.Count"> + <summary> + Gets or sets the total number of bytes written. + </summary> + <value> + The total number of bytes written. + </value> + <remarks> + <para> + Gets or sets the total number of bytes written. + </para> + </remarks> + </member> + <member name="T:log4net.Util.CyclicBuffer"> + <summary> + A fixed size rolling buffer of logging events. + </summary> + <remarks> + <para> + An array backed fixed size leaky bucket. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.CyclicBuffer.#ctor(System.Int32)"> + <summary> + Constructor + </summary> + <param name="maxSize">The maximum number of logging events in the buffer.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.CyclicBuffer"/> class with + the specified maximum number of buffered logging events. + </para> + </remarks> + <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="maxSize"/> argument is not a positive integer.</exception> + </member> + <member name="M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)"> + <summary> + Appends a <paramref name="loggingEvent"/> to the buffer. + </summary> + <param name="loggingEvent">The event to append to the buffer.</param> + <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns> + <remarks> + <para> + Append an event to the buffer. If the buffer still contains free space then + <c>null</c> is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CyclicBuffer.PopOldest"> + <summary> + Get and remove the oldest event in the buffer. + </summary> + <returns>The oldest logging event in the buffer</returns> + <remarks> + <para> + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CyclicBuffer.PopAll"> + <summary> + Pops all the logging events from the buffer into an array. + </summary> + <returns>An array of all the logging events in the buffer.</returns> + <remarks> + <para> + Get all the events in the buffer and clear the buffer. + </para> + </remarks> + </member> + <member name="M:log4net.Util.CyclicBuffer.Clear"> + <summary> + Clear the buffer + </summary> + <remarks> + <para> + Clear the buffer of all events. The events in the buffer are lost. + </para> + </remarks> + </member> + <member name="P:log4net.Util.CyclicBuffer.Item(System.Int32)"> + <summary> + Gets the <paramref name="i"/>th oldest event currently in the buffer. + </summary> + <value>The <paramref name="i"/>th oldest event currently in the buffer.</value> + <remarks> + <para> + If <paramref name="i"/> is outside the range 0 to the number of events + currently in the buffer, then <c>null</c> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Util.CyclicBuffer.MaxSize"> + <summary> + Gets the maximum size of the buffer. + </summary> + <value>The maximum size of the buffer.</value> + <remarks> + <para> + Gets the maximum size of the buffer + </para> + </remarks> + </member> + <member name="P:log4net.Util.CyclicBuffer.Length"> + <summary> + Gets the number of logging events in the buffer. + </summary> + <value>The number of logging events in the buffer.</value> + <remarks> + <para> + This number is guaranteed to be in the range 0 to <see cref="P:log4net.Util.CyclicBuffer.MaxSize"/> + (inclusive). + </para> + </remarks> + </member> + <member name="T:log4net.Util.EmptyCollection"> + <summary> + An always empty <see cref="T:System.Collections.ICollection"/>. + </summary> + <remarks> + <para> + A singleton implementation of the <see cref="T:System.Collections.ICollection"/> + interface that always represents an empty collection. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.EmptyCollection.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.EmptyCollection"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to enforce the singleton pattern. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an + <see cref="T:System.Array"/>, starting at a particular Array index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"/> + that is the destination of the elements copied from + <see cref="T:System.Collections.ICollection"/>. The Array must have zero-based + indexing.</param> + <param name="index">The zero-based index in array at which + copying begins.</param> + <remarks> + <para> + As the collection is empty no values are copied into the array. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyCollection.GetEnumerator"> + <summary> + Returns an enumerator that can iterate through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"/> that can be used to + iterate through the collection. + </returns> + <remarks> + <para> + As the collection is empty a <see cref="T:log4net.Util.NullEnumerator"/> is returned. + </para> + </remarks> + </member> + <member name="F:log4net.Util.EmptyCollection.s_instance"> + <summary> + The singleton instance of the empty collection. + </summary> + </member> + <member name="P:log4net.Util.EmptyCollection.Instance"> + <summary> + Gets the singleton instance of the empty collection. + </summary> + <returns>The singleton instance of the empty collection.</returns> + <remarks> + <para> + Gets the singleton instance of the empty collection. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyCollection.IsSynchronized"> + <summary> + Gets a value indicating if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe). + </summary> + <value> + <b>true</b> if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe); otherwise, <b>false</b>. + </value> + <remarks> + <para> + For the <see cref="T:log4net.Util.EmptyCollection"/> this property is always <c>true</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyCollection.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/>. + </summary> + <value> + The number of elements contained in the <see cref="T:System.Collections.ICollection"/>. + </value> + <remarks> + <para> + As the collection is empty the <see cref="P:log4net.Util.EmptyCollection.Count"/> is always <c>0</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyCollection.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>. + </summary> + <value> + An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>. + </value> + <remarks> + <para> + As the collection is empty and thread safe and synchronized this instance is also + the <see cref="P:log4net.Util.EmptyCollection.SyncRoot"/> object. + </para> + </remarks> + </member> + <member name="T:log4net.Util.EmptyDictionary"> + <summary> + An always empty <see cref="T:System.Collections.IDictionary"/>. + </summary> + <remarks> + <para> + A singleton implementation of the <see cref="T:System.Collections.IDictionary"/> + interface that always represents an empty collection. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.EmptyDictionary.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.EmptyDictionary"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to enforce the singleton pattern. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)"> + <summary> + Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an + <see cref="T:System.Array"/>, starting at a particular Array index. + </summary> + <param name="array">The one-dimensional <see cref="T:System.Array"/> + that is the destination of the elements copied from + <see cref="T:System.Collections.ICollection"/>. The Array must have zero-based + indexing.</param> + <param name="index">The zero-based index in array at which + copying begins.</param> + <remarks> + <para> + As the collection is empty no values are copied into the array. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator"> + <summary> + Returns an enumerator that can iterate through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"/> that can be used to + iterate through the collection. + </returns> + <remarks> + <para> + As the collection is empty a <see cref="T:log4net.Util.NullEnumerator"/> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)"> + <summary> + Adds an element with the provided key and value to the + <see cref="T:log4net.Util.EmptyDictionary"/>. + </summary> + <param name="key">The <see cref="T:System.Object"/> to use as the key of the element to add.</param> + <param name="value">The <see cref="T:System.Object"/> to use as the value of the element to add.</param> + <remarks> + <para> + As the collection is empty no new values can be added. A <see cref="T:System.InvalidOperationException"/> + is thrown if this method is called. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception> + </member> + <member name="M:log4net.Util.EmptyDictionary.Clear"> + <summary> + Removes all elements from the <see cref="T:log4net.Util.EmptyDictionary"/>. + </summary> + <remarks> + <para> + As the collection is empty no values can be removed. A <see cref="T:System.InvalidOperationException"/> + is thrown if this method is called. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception> + </member> + <member name="M:log4net.Util.EmptyDictionary.Contains(System.Object)"> + <summary> + Determines whether the <see cref="T:log4net.Util.EmptyDictionary"/> contains an element + with the specified key. + </summary> + <param name="key">The key to locate in the <see cref="T:log4net.Util.EmptyDictionary"/>.</param> + <returns><c>false</c></returns> + <remarks> + <para> + As the collection is empty the <see cref="M:log4net.Util.EmptyDictionary.Contains(System.Object)"/> method always returns <c>false</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyDictionary.GetEnumerator"> + <summary> + Returns an enumerator that can iterate through a collection. + </summary> + <returns> + An <see cref="T:System.Collections.IEnumerator"/> that can be used to + iterate through the collection. + </returns> + <remarks> + <para> + As the collection is empty a <see cref="T:log4net.Util.NullEnumerator"/> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.EmptyDictionary.Remove(System.Object)"> + <summary> + Removes the element with the specified key from the <see cref="T:log4net.Util.EmptyDictionary"/>. + </summary> + <param name="key">The key of the element to remove.</param> + <remarks> + <para> + As the collection is empty no values can be removed. A <see cref="T:System.InvalidOperationException"/> + is thrown if this method is called. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception> + </member> + <member name="F:log4net.Util.EmptyDictionary.s_instance"> + <summary> + The singleton instance of the empty dictionary. + </summary> + </member> + <member name="P:log4net.Util.EmptyDictionary.Instance"> + <summary> + Gets the singleton instance of the <see cref="T:log4net.Util.EmptyDictionary"/>. + </summary> + <returns>The singleton instance of the <see cref="T:log4net.Util.EmptyDictionary"/>.</returns> + <remarks> + <para> + Gets the singleton instance of the <see cref="T:log4net.Util.EmptyDictionary"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.IsSynchronized"> + <summary> + Gets a value indicating if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe). + </summary> + <value> + <b>true</b> if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread-safe); otherwise, <b>false</b>. + </value> + <remarks> + <para> + For the <see cref="T:log4net.Util.EmptyCollection"/> this property is always <b>true</b>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.Count"> + <summary> + Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/> + </summary> + <value> + The number of elements contained in the <see cref="T:System.Collections.ICollection"/>. + </value> + <remarks> + <para> + As the collection is empty the <see cref="P:log4net.Util.EmptyDictionary.Count"/> is always <c>0</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.SyncRoot"> + <summary> + Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>. + </summary> + <value> + An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>. + </value> + <remarks> + <para> + As the collection is empty and thread safe and synchronized this instance is also + the <see cref="P:log4net.Util.EmptyDictionary.SyncRoot"/> object. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.IsFixedSize"> + <summary> + Gets a value indicating whether the <see cref="T:log4net.Util.EmptyDictionary"/> has a fixed size. + </summary> + <value><c>true</c></value> + <remarks> + <para> + As the collection is empty <see cref="P:log4net.Util.EmptyDictionary.IsFixedSize"/> always returns <c>true</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.IsReadOnly"> + <summary> + Gets a value indicating whether the <see cref="T:log4net.Util.EmptyDictionary"/> is read-only. + </summary> + <value><c>true</c></value> + <remarks> + <para> + As the collection is empty <see cref="P:log4net.Util.EmptyDictionary.IsReadOnly"/> always returns <c>true</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.Keys"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"/> containing the keys of the <see cref="T:log4net.Util.EmptyDictionary"/>. + </summary> + <value>An <see cref="T:System.Collections.ICollection"/> containing the keys of the <see cref="T:log4net.Util.EmptyDictionary"/>.</value> + <remarks> + <para> + As the collection is empty a <see cref="T:log4net.Util.EmptyCollection"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.Values"> + <summary> + Gets an <see cref="T:System.Collections.ICollection"/> containing the values of the <see cref="T:log4net.Util.EmptyDictionary"/>. + </summary> + <value>An <see cref="T:System.Collections.ICollection"/> containing the values of the <see cref="T:log4net.Util.EmptyDictionary"/>.</value> + <remarks> + <para> + As the collection is empty a <see cref="T:log4net.Util.EmptyCollection"/> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Util.EmptyDictionary.Item(System.Object)"> + <summary> + Gets or sets the element with the specified key. + </summary> + <param name="key">The key of the element to get or set.</param> + <value><c>null</c></value> + <remarks> + <para> + As the collection is empty no values can be looked up or stored. + If the index getter is called then <c>null</c> is returned. + A <see cref="T:System.InvalidOperationException"/> is thrown if the setter is called. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">This dictionary is always empty and cannot be modified.</exception> + </member> + <member name="T:log4net.Util.FormattingInfo"> + <summary> + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + </summary> + <remarks> + <para> + Holds the formatting information extracted from the format string by + the <see cref="T:log4net.Util.PatternParser"/>. This is used by the <see cref="T:log4net.Util.PatternConverter"/> + objects when rendering the output. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.FormattingInfo.#ctor"> + <summary> + Defaut Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.FormattingInfo"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.FormattingInfo"/> class + with the specified parameters. + </para> + </remarks> + </member> + <member name="P:log4net.Util.FormattingInfo.Min"> + <summary> + Gets or sets the minimum value. + </summary> + <value> + The minimum value. + </value> + <remarks> + <para> + Gets or sets the minimum value. + </para> + </remarks> + </member> + <member name="P:log4net.Util.FormattingInfo.Max"> + <summary> + Gets or sets the maximum value. + </summary> + <value> + The maximum value. + </value> + <remarks> + <para> + Gets or sets the maximum value. + </para> + </remarks> + </member> + <member name="P:log4net.Util.FormattingInfo.LeftAlign"> + <summary> + Gets or sets a flag indicating whether left align is enabled + or not. + </summary> + <value> + A flag indicating whether left align is enabled or not. + </value> + <remarks> + <para> + Gets or sets a flag indicating whether left align is enabled or not. + </para> + </remarks> + </member> + <member name="T:log4net.Util.GlobalContextProperties"> + <summary> + Implementation of Properties collection for the <see cref="T:log4net.GlobalContext"/> + </summary> + <remarks> + <para> + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + </para> + <para> + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.GlobalContextProperties.m_readOnlyProperties"> + <summary> + The read only copy of the properties. + </summary> + <remarks> + <para> + This variable is declared <c>volatile</c> to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + </para> + </remarks> + </member> + <member name="F:log4net.Util.GlobalContextProperties.m_syncRoot"> + <summary> + Lock object used to synchronize updates within this instance + </summary> + </member> + <member name="M:log4net.Util.GlobalContextProperties.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.GlobalContextProperties"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.GlobalContextProperties.Remove(System.String)"> + <summary> + Remove a property from the global context + </summary> + <param name="key">the key for the entry to remove</param> + <remarks> + <para> + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + </para> + </remarks> + </member> + <member name="M:log4net.Util.GlobalContextProperties.Clear"> + <summary> + Clear the global context properties + </summary> + </member> + <member name="M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties"> + <summary> + Get a readonly immutable copy of the properties + </summary> + <returns>the current global context properties</returns> + <remarks> + <para> + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + </para> + </remarks> + </member> + <member name="P:log4net.Util.GlobalContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + </para> + </remarks> + </member> + <member name="T:log4net.Util.LevelMapping"> + <summary> + Manages a mapping from levels to <see cref="T:log4net.Util.LevelMappingEntry"/> + </summary> + <remarks> + <para> + Manages an ordered mapping from <see cref="T:log4net.Core.Level"/> instances + to <see cref="T:log4net.Util.LevelMappingEntry"/> subclasses. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.LevelMapping.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Initialise a new instance of <see cref="T:log4net.Util.LevelMapping"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)"> + <summary> + Add a <see cref="T:log4net.Util.LevelMappingEntry"/> to this mapping + </summary> + <param name="entry">the entry to add</param> + <remarks> + <para> + If a <see cref="T:log4net.Util.LevelMappingEntry"/> has previously been added + for the same <see cref="T:log4net.Core.Level"/> then that entry will be + overwritten. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)"> + <summary> + Lookup the mapping for the specified level + </summary> + <param name="level">the level to lookup</param> + <returns>the <see cref="T:log4net.Util.LevelMappingEntry"/> for the level or <c>null</c> if no mapping found</returns> + <remarks> + <para> + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + <paramref name="level"/> specified. + </para> + <para> + If no mapping could be found then <c>null</c> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LevelMapping.ActivateOptions"> + <summary> + Initialize options + </summary> + <remarks> + <para> + Caches the sorted list of <see cref="T:log4net.Util.LevelMappingEntry"/> in an array + </para> + </remarks> + </member> + <member name="T:log4net.Util.LogicalThreadContextProperties"> + <summary> + Implementation of Properties collection for the <see cref="T:log4net.LogicalThreadContext"/> + </summary> + <remarks> + <para> + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own <see cref="T:log4net.Util.PropertiesDictionary"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.LogicalThreadContextProperties.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.LogicalThreadContextProperties"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)"> + <summary> + Remove a property + </summary> + <param name="key">the key for the entry to remove</param> + <remarks> + <para> + Remove the value for the specified <paramref name="key"/> from the context. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogicalThreadContextProperties.Clear"> + <summary> + Clear all the context properties + </summary> + <remarks> + <para> + Clear all the context properties + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)"> + <summary> + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + </summary> + <param name="create">create the dictionary if it does not exist, otherwise return null if is does not exist</param> + <returns>the properties for this thread</returns> + <remarks> + <para> + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + </para> + </remarks> + </member> + <member name="P:log4net.Util.LogicalThreadContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Get or set the property value for the <paramref name="key"/> specified. + </para> + </remarks> + </member> + <member name="T:log4net.Util.LogLog"> + <summary> + Outputs log statements from within the log4net assembly. + </summary> + <remarks> + <para> + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + </para> + <para> + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.LogLog.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.LogLog"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to prevent instantiation of this class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.#cctor"> + <summary> + Static constructor that initializes logging by reading + settings from the application configuration file. + </summary> + <remarks> + <para> + The <c>log4net.Internal.Debug</c> application setting + controls internal debugging. This setting should be set + to <c>true</c> to enable debugging. + </para> + <para> + The <c>log4net.Internal.Quiet</c> application setting + suppresses all internal logging including error messages. + This setting should be set to <c>true</c> to enable message + suppression. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.Debug(System.String)"> + <summary> + Writes log4net internal debug messages to the + standard output stream. + </summary> + <param name="message">The message to log.</param> + <remarks> + <para> + All internal debug messages are prepended with + the string "log4net: ". + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.Debug(System.String,System.Exception)"> + <summary> + Writes log4net internal debug messages to the + standard output stream. + </summary> + <param name="message">The message to log.</param> + <param name="exception">An exception to log.</param> + <remarks> + <para> + All internal debug messages are prepended with + the string "log4net: ". + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.Warn(System.String)"> + <summary> + Writes log4net internal warning messages to the + standard error stream. + </summary> + <param name="message">The message to log.</param> + <remarks> + <para> + All internal warning messages are prepended with + the string "log4net:WARN ". + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.Warn(System.String,System.Exception)"> + <summary> + Writes log4net internal warning messages to the + standard error stream. + </summary> + <param name="message">The message to log.</param> + <param name="exception">An exception to log.</param> + <remarks> + <para> + All internal warning messages are prepended with + the string "log4net:WARN ". + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.Error(System.String)"> + <summary> + Writes log4net internal error messages to the + standard error stream. + </summary> + <param name="message">The message to log.</param> + <remarks> + <para> + All internal error messages are prepended with + the string "log4net:ERROR ". + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.Error(System.String,System.Exception)"> + <summary> + Writes log4net internal error messages to the + standard error stream. + </summary> + <param name="message">The message to log.</param> + <param name="exception">An exception to log.</param> + <remarks> + <para> + All internal debug messages are prepended with + the string "log4net:ERROR ". + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.EmitOutLine(System.String)"> + <summary> + Writes output to the standard output stream. + </summary> + <param name="message">The message to log.</param> + <remarks> + <para> + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + </para> + <para> + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + </para> + </remarks> + </member> + <member name="M:log4net.Util.LogLog.EmitErrorLine(System.String)"> + <summary> + Writes output to the standard error stream. + </summary> + <param name="message">The message to log.</param> + <remarks> + <para> + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + </para> + <para> + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + </para> + </remarks> + </member> + <member name="F:log4net.Util.LogLog.s_debugEnabled"> + <summary> + Default debug level + </summary> + </member> + <member name="F:log4net.Util.LogLog.s_quietMode"> + <summary> + In quietMode not even errors generate any output. + </summary> + </member> + <member name="P:log4net.Util.LogLog.InternalDebugging"> + <summary> + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + </summary> + <value> + <c>true</c> if log4net internal logging is enabled, otherwise + <c>false</c>. + </value> + <remarks> + <para> + When set to <c>true</c>, internal debug level logging will be + displayed. + </para> + <para> + This value can be set by setting the application setting + <c>log4net.Internal.Debug</c> in the application configuration + file. + </para> + <para> + The default value is <c>false</c>, i.e. debugging is + disabled. + </para> + </remarks> + <example> + <para> + The following example enables internal debugging using the + application configuration file : + </para> + <code lang="XML" escaped="true"> + <configuration> + <appSettings> + <add key="log4net.Internal.Debug" value="true" /> + </appSettings> + </configuration> + </code> + </example> + </member> + <member name="P:log4net.Util.LogLog.QuietMode"> + <summary> + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + </summary> + <value> + <c>true</c> if log4net should generate no output at all from internal + logging, otherwise <c>false</c>. + </value> + <remarks> + <para> + When set to <c>true</c> will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the <see cref="P:log4net.Util.LogLog.InternalDebugging"/> setting and + disables all debug also. + </para> + <para>This value can be set by setting the application setting + <c>log4net.Internal.Quiet</c> in the application configuration file. + </para> + <para> + The default value is <c>false</c>, i.e. internal logging is not + disabled. + </para> + </remarks> + <example> + The following example disables internal logging using the + application configuration file : + <code lang="XML" escaped="true"> + <configuration> + <appSettings> + <add key="log4net.Internal.Quiet" value="true"/> + </appSettings> + </configuration> + </code> + </example> + </member> + <member name="P:log4net.Util.LogLog.IsDebugEnabled"> + <summary> + Test if LogLog.Debug is enabled for output. + </summary> + <value> + <c>true</c> if Debug is enabled + </value> + <remarks> + <para> + Test if LogLog.Debug is enabled for output. + </para> + </remarks> + </member> + <member name="P:log4net.Util.LogLog.IsWarnEnabled"> + <summary> + Test if LogLog.Warn is enabled for output. + </summary> + <value> + <c>true</c> if Warn is enabled + </value> + <remarks> + <para> + Test if LogLog.Warn is enabled for output. + </para> + </remarks> + </member> + <member name="P:log4net.Util.LogLog.IsErrorEnabled"> + <summary> + Test if LogLog.Error is enabled for output. + </summary> + <value> + <c>true</c> if Error is enabled + </value> + <remarks> + <para> + Test if LogLog.Error is enabled for output. + </para> + </remarks> + </member> + <member name="T:log4net.Util.NullDictionaryEnumerator"> + <summary> + An always empty <see cref="T:System.Collections.IDictionaryEnumerator"/>. + </summary> + <remarks> + <para> + A singleton implementation of the <see cref="T:System.Collections.IDictionaryEnumerator"/> over a collection + that is empty and not modifiable. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.NullDictionaryEnumerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to enforce the singleton pattern. + </para> + </remarks> + </member> + <member name="M:log4net.Util.NullDictionaryEnumerator.MoveNext"> + <summary> + Test if the enumerator can advance, if so advance. + </summary> + <returns><c>false</c> as the <see cref="T:log4net.Util.NullDictionaryEnumerator"/> cannot advance.</returns> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="M:log4net.Util.NullDictionaryEnumerator.MoveNext"/> + will always return <c>false</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.NullDictionaryEnumerator.Reset"> + <summary> + Resets the enumerator back to the start. + </summary> + <remarks> + <para> + As the enumerator is over an empty collection <see cref="M:log4net.Util.NullDictionaryEnumerator.Reset"/> does nothing. + </para> + </remarks> + </member> + <member name="F:log4net.Util.NullDictionaryEnumerator.s_instance"> + <summary> + The singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>. + </summary> + </member> + <member name="P:log4net.Util.NullDictionaryEnumerator.Instance"> + <summary> + Gets the singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>. + </summary> + <returns>The singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>.</returns> + <remarks> + <para> + Gets the singleton instance of the <see cref="T:log4net.Util.NullDictionaryEnumerator"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.NullDictionaryEnumerator.Current"> + <summary> + Gets the current object from the enumerator. + </summary> + <remarks> + Throws an <see cref="T:System.InvalidOperationException"/> because the + <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current value. + </remarks> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + will throw an <see cref="T:System.InvalidOperationException"/>. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + cannot be positioned over a valid location.</exception> + </member> + <member name="P:log4net.Util.NullDictionaryEnumerator.Key"> + <summary> + Gets the current key from the enumerator. + </summary> + <remarks> + Throws an exception because the <see cref="T:log4net.Util.NullDictionaryEnumerator"/> + never has a current value. + </remarks> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Key"/> + will throw an <see cref="T:System.InvalidOperationException"/>. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + cannot be positioned over a valid location.</exception> + </member> + <member name="P:log4net.Util.NullDictionaryEnumerator.Value"> + <summary> + Gets the current value from the enumerator. + </summary> + <value>The current value from the enumerator.</value> + <remarks> + Throws an <see cref="T:System.InvalidOperationException"/> because the + <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current value. + </remarks> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Value"/> + will throw an <see cref="T:System.InvalidOperationException"/>. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + cannot be positioned over a valid location.</exception> + </member> + <member name="P:log4net.Util.NullDictionaryEnumerator.Entry"> + <summary> + Gets the current entry from the enumerator. + </summary> + <remarks> + Throws an <see cref="T:System.InvalidOperationException"/> because the + <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current entry. + </remarks> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullDictionaryEnumerator.Entry"/> + will throw an <see cref="T:System.InvalidOperationException"/>. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullDictionaryEnumerator.Current"/> + cannot be positioned over a valid location.</exception> + </member> + <member name="T:log4net.Util.NullEnumerator"> + <summary> + An always empty <see cref="T:System.Collections.IEnumerator"/>. + </summary> + <remarks> + <para> + A singleton implementation of the <see cref="T:System.Collections.IEnumerator"/> over a collection + that is empty and not modifiable. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.NullEnumerator.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.NullEnumerator"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to enforce the singleton pattern. + </para> + </remarks> + </member> + <member name="M:log4net.Util.NullEnumerator.MoveNext"> + <summary> + Test if the enumerator can advance, if so advance + </summary> + <returns><c>false</c> as the <see cref="T:log4net.Util.NullEnumerator"/> cannot advance.</returns> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="M:log4net.Util.NullEnumerator.MoveNext"/> + will always return <c>false</c>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.NullEnumerator.Reset"> + <summary> + Resets the enumerator back to the start. + </summary> + <remarks> + <para> + As the enumerator is over an empty collection <see cref="M:log4net.Util.NullEnumerator.Reset"/> does nothing. + </para> + </remarks> + </member> + <member name="F:log4net.Util.NullEnumerator.s_instance"> + <summary> + The singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>. + </summary> + </member> + <member name="P:log4net.Util.NullEnumerator.Instance"> + <summary> + Get the singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>. + </summary> + <returns>The singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>.</returns> + <remarks> + <para> + Gets the singleton instance of the <see cref="T:log4net.Util.NullEnumerator"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.NullEnumerator.Current"> + <summary> + Gets the current object from the enumerator. + </summary> + <remarks> + Throws an <see cref="T:System.InvalidOperationException"/> because the + <see cref="T:log4net.Util.NullDictionaryEnumerator"/> never has a current value. + </remarks> + <remarks> + <para> + As the enumerator is over an empty collection its <see cref="P:log4net.Util.NullEnumerator.Current"/> + value cannot be moved over a valid position, therefore <see cref="P:log4net.Util.NullEnumerator.Current"/> + will throw an <see cref="T:System.InvalidOperationException"/>. + </para> + </remarks> + <exception cref="T:System.InvalidOperationException">The collection is empty and <see cref="P:log4net.Util.NullEnumerator.Current"/> + cannot be positioned over a valid location.</exception> + </member> + <member name="T:log4net.Util.NullSecurityContext"> + <summary> + A SecurityContext used when a SecurityContext is not required + </summary> + <remarks> + <para> + The <see cref="T:log4net.Util.NullSecurityContext"/> is a no-op implementation of the + <see cref="T:log4net.Core.SecurityContext"/> base class. It is used where a <see cref="T:log4net.Core.SecurityContext"/> + is required but one has not been provided. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.NullSecurityContext.Instance"> + <summary> + Singleton instance of <see cref="T:log4net.Util.NullSecurityContext"/> + </summary> + <remarks> + <para> + Singleton instance of <see cref="T:log4net.Util.NullSecurityContext"/> + </para> + </remarks> + </member> + <member name="M:log4net.Util.NullSecurityContext.#ctor"> + <summary> + Private constructor + </summary> + <remarks> + <para> + Private constructor for singleton pattern. + </para> + </remarks> + </member> + <member name="M:log4net.Util.NullSecurityContext.Impersonate(System.Object)"> + <summary> + Impersonate this SecurityContext + </summary> + <param name="state">State supplied by the caller</param> + <returns><c>null</c></returns> + <remarks> + <para> + No impersonation is done and <c>null</c> is always returned. + </para> + </remarks> + </member> + <member name="T:log4net.Util.OnlyOnceErrorHandler"> + <summary> + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + </summary> + <remarks> + <para> + The error message is printed on the standard error output stream. + </para> + <para> + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.OnlyOnceErrorHandler.#ctor"> + <summary> + Default Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.OnlyOnceErrorHandler"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)"> + <summary> + Constructor + </summary> + <param name="prefix">The prefix to use for each message.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.OnlyOnceErrorHandler"/> class + with the specified prefix. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)"> + <summary> + Log an Error + </summary> + <param name="message">The error message.</param> + <param name="e">The exception.</param> + <param name="errorCode">The internal error code.</param> + <remarks> + <para> + Prints the message and the stack trace of the exception on the standard + error output stream. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)"> + <summary> + Log an Error + </summary> + <param name="message">The error message.</param> + <param name="e">The exception.</param> + <remarks> + <para> + Prints the message and the stack trace of the exception on the standard + error output stream. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)"> + <summary> + Log an error + </summary> + <param name="message">The error message.</param> + <remarks> + <para> + Print a the error message passed as parameter on the standard + error output stream. + </para> + </remarks> + </member> + <member name="F:log4net.Util.OnlyOnceErrorHandler.m_firstTime"> + <summary> + Flag to indicate if it is the first error + </summary> + </member> + <member name="F:log4net.Util.OnlyOnceErrorHandler.m_prefix"> + <summary> + String to prefix each message with + </summary> + </member> + <member name="P:log4net.Util.OnlyOnceErrorHandler.IsEnabled"> + <summary> + Is error logging enabled + </summary> + <remarks> + <para> + Is error logging enabled. Logging is only enabled for the + first error delivered to the <see cref="T:log4net.Util.OnlyOnceErrorHandler"/>. + </para> + </remarks> + </member> + <member name="T:log4net.Util.OptionConverter"> + <summary> + A convenience class to convert property values to specific types. + </summary> + <remarks> + <para> + Utility functions for converting types and parsing values. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.OptionConverter.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.OptionConverter"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to prevent instantiation of this class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)"> + <summary> + Converts a string to a <see cref="T:System.Boolean"/> value. + </summary> + <param name="argValue">String to convert.</param> + <param name="defaultValue">The default value.</param> + <returns>The <see cref="T:System.Boolean"/> value of <paramref name="argValue"/>.</returns> + <remarks> + <para> + If <paramref name="argValue"/> is "true", then <c>true</c> is returned. + If <paramref name="argValue"/> is "false", then <c>false</c> is returned. + Otherwise, <paramref name="defaultValue"/> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)"> + <summary> + Parses a file size into a number. + </summary> + <param name="argValue">String to parse.</param> + <param name="defaultValue">The default value.</param> + <returns>The <see cref="T:System.Int64"/> value of <paramref name="argValue"/>.</returns> + <remarks> + <para> + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + </para> + <para> + <paramref name="defaultValue"/> is returned when <paramref name="argValue"/> + cannot be converted to a <see cref="T:System.Int64"/> value. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)"> + <summary> + Converts a string to an object. + </summary> + <param name="target">The target type to convert to.</param> + <param name="txt">The string to convert to an object.</param> + <returns> + The object converted from a string or <c>null</c> when the + conversion failed. + </returns> + <remarks> + <para> + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)"> + <summary> + Checks if there is an appropriate type conversion from the source type to the target type. + </summary> + <param name="sourceType">The type to convert from.</param> + <param name="targetType">The type to convert to.</param> + <returns><c>true</c> if there is a conversion from the source type to the target type.</returns> + <remarks> + Checks if there is an appropriate type conversion from the source type to the target type. + <para> + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)"> + <summary> + Converts an object to the target type. + </summary> + <param name="sourceInstance">The object to convert to the target type.</param> + <param name="targetType">The type to convert to.</param> + <returns>The converted object.</returns> + <remarks> + <para> + Converts an object to the target type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)"> + <summary> + Instantiates an object given a class name. + </summary> + <param name="className">The fully qualified class name of the object to instantiate.</param> + <param name="superClass">The class to which the new object should belong.</param> + <param name="defaultValue">The object to return in case of non-fulfillment.</param> + <returns> + An instance of the <paramref name="className"/> or <paramref name="defaultValue"/> + if the object could not be instantiated. + </returns> + <remarks> + <para> + Checks that the <paramref name="className"/> is a subclass of + <paramref name="superClass"/>. If that test fails or the object could + not be instantiated, then <paramref name="defaultValue"/> is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)"> + <summary> + Performs variable substitution in string <paramref name="val"/> from the + values of keys found in <paramref name="props"/>. + </summary> + <param name="value">The string on which variable substitution is performed.</param> + <param name="props">The dictionary to use to lookup variables.</param> + <returns>The result of the substitutions.</returns> + <remarks> + <para> + The variable substitution delimiters are <b>${</b> and <b>}</b>. + </para> + <para> + For example, if props contains <c>key=value</c>, then the call + </para> + <para> + <code lang="C#"> + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + </code> + </para> + <para> + will set the variable <c>s</c> to "Value of key is value.". + </para> + <para> + If no value could be found for the specified key, then substitution + defaults to an empty string. + </para> + <para> + For example, if system properties contains no value for the key + "nonExistentKey", then the call + </para> + <para> + <code lang="C#"> + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + </code> + </para> + <para> + will set <s>s</s> to "Value of nonExistentKey is []". + </para> + <para> + An Exception is thrown if <paramref name="value"/> contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + </para> + </remarks> + </member> + <member name="M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)"> + <summary> + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + </summary> + <param name="enumType">The type to convert to.</param> + <param name="value">The enum string value.</param> + <param name="ignoreCase">If <c>true</c>, ignore case; otherwise, regard case.</param> + <returns>An object of type <paramref name="enumType" /> whose value is represented by <paramref name="value" />.</returns> + </member> + <member name="T:log4net.Util.PatternParser"> + <summary> + Most of the work of the <see cref="T:log4net.Layout.PatternLayout"/> class + is delegated to the PatternParser class. + </summary> + <remarks> + <para> + The <c>PatternParser</c> processes a pattern string and + returns a chain of <see cref="T:log4net.Util.PatternConverter"/> objects. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.PatternParser.#ctor(System.String)"> + <summary> + Constructor + </summary> + <param name="pattern">The pattern to parse.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.PatternParser"/> class + with the specified pattern string. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternParser.Parse"> + <summary> + Parses the pattern into a chain of pattern converters. + </summary> + <returns>The head of a chain of pattern converters.</returns> + <remarks> + <para> + Parses the pattern into a chain of pattern converters. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternParser.BuildCache"> + <summary> + Build the unified cache of converters from the static and instance maps + </summary> + <returns>the list of all the converter names</returns> + <remarks> + <para> + Build the unified cache of converters from the static and instance maps + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])"> + <summary> + Internal method to parse the specified pattern to find specified matches + </summary> + <param name="pattern">the pattern to parse</param> + <param name="matches">the converter names to match in the pattern</param> + <remarks> + <para> + The matches param must be sorted such that longer strings come before shorter ones. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternParser.ProcessLiteral(System.String)"> + <summary> + Process a parsed literal + </summary> + <param name="text">the literal text</param> + </member> + <member name="M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)"> + <summary> + Process a parsed converter pattern + </summary> + <param name="converterName">the name of the converter</param> + <param name="option">the optional option for the converter</param> + <param name="formattingInfo">the formatting info for the converter</param> + </member> + <member name="M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)"> + <summary> + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + </summary> + <param name="pc">The pattern converter to add.</param> + </member> + <member name="F:log4net.Util.PatternParser.m_head"> + <summary> + The first pattern converter in the chain + </summary> + </member> + <member name="F:log4net.Util.PatternParser.m_tail"> + <summary> + the last pattern converter in the chain + </summary> + </member> + <member name="F:log4net.Util.PatternParser.m_pattern"> + <summary> + The pattern + </summary> + </member> + <member name="F:log4net.Util.PatternParser.m_patternConverters"> + <summary> + Internal map of converter identifiers to converter types + </summary> + <remarks> + <para> + This map overrides the static s_globalRulesRegistry map. + </para> + </remarks> + </member> + <member name="P:log4net.Util.PatternParser.PatternConverters"> + <summary> + Get the converter registry used by this parser + </summary> + <value> + The converter registry used by this parser + </value> + <remarks> + <para> + Get the converter registry used by this parser + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternParser.StringLengthComparer"> + <summary> + Sort strings by length + </summary> + <remarks> + <para> + <see cref="T:System.Collections.IComparer"/> that orders strings by string length. + The longest strings are placed first + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternString"> + <summary> + This class implements a patterned string. + </summary> + <remarks> + <para> + This string has embedded patterns that are resolved and expanded + when the string is formatted. + </para> + <para> + This class functions similarly to the <see cref="T:log4net.Layout.PatternLayout"/> + in that it accepts a pattern and renders it to a string. Unlike the + <see cref="T:log4net.Layout.PatternLayout"/> however the <c>PatternString</c> + does not render the properties of a specific <see cref="T:log4net.Core.LoggingEvent"/> but + of the process in general. + </para> + <para> + The recognized conversion pattern names are: + </para> + <list type="table"> + <listheader> + <term>Conversion Pattern Name</term> + <description>Effect</description> + </listheader> + <item> + <term>appdomain</term> + <description> + <para> + Used to output the friendly name of the current AppDomain. + </para> + </description> + </item> + <item> + <term>date</term> + <description> + <para> + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the <c>%utcdate</c> pattern. + The date conversion + specifier may be followed by a <i>date format specifier</i> enclosed + between braces. For example, <b>%date{HH:mm:ss,fff}</b> or + <b>%date{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is + given then ISO8601 format is + assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>). + </para> + <para> + The date format specifier admits the same syntax as the + time pattern string of the <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + <para> + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>, + <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively + <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example, + <b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>. + </para> + <para> + These dedicated date formatters perform significantly + better than <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + </description> + </item> + <item> + <term>env</term> + <description> + <para> + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value + of the <c>COMPUTERNAME</c> environment variable. + </para> + <para> + The <c>env</c> pattern is not supported on the .NET Compact Framework. + </para> + </description> + </item> + <item> + <term>identity</term> + <description> + <para> + Used to output the user name for the currently active user + (Principal.Identity.Name). + </para> + </description> + </item> + <item> + <term>newline</term> + <description> + <para> + Outputs the platform dependent line separator character or + characters. + </para> + <para> + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + </para> + </description> + </item> + <item> + <term>processid</term> + <description> + <para> + Used to output the system process ID for the current process. + </para> + </description> + </item> + <item> + <term>property</term> + <description> + <para> + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. <b>%property{user}</b> would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the <c>log4net:HostName</c> property is set to the name of machine on + which the event was originally logged. + </para> + <para> + If no key is specified, e.g. <b>%property</b> then all the keys and their + values are printed in a comma separated list. + </para> + <para> + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + </para> + <list type="definition"> + <item> + <term>the thread properties</term> + <description> + The <see cref="P:log4net.ThreadContext.Properties"/> that are set on the current + thread. These properties are shared by all events logged on this thread. + </description> + </item> + <item> + <term>the global properties</term> + <description> + The <see cref="P:log4net.GlobalContext.Properties"/> that are set globally. These + properties are shared by all the threads in the AppDomain. + </description> + </item> + </list> + </description> + </item> + <item> + <term>random</term> + <description> + <para> + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. <b>%random{8}</b> would output an 8 character string. + </para> + </description> + </item> + <item> + <term>username</term> + <description> + <para> + Used to output the WindowsIdentity for the currently + active user. + </para> + </description> + </item> + <item> + <term>utcdate</term> + <description> + <para> + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a <i>date format specifier</i> enclosed + between braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or + <b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>. If no date format specifier is + given then ISO8601 format is + assumed (<see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>). + </para> + <para> + The date format specifier admits the same syntax as the + time pattern string of the <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + <para> + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + <see cref="T:log4net.DateFormatter.AbsoluteTimeDateFormatter"/>, + <see cref="T:log4net.DateFormatter.DateTimeDateFormatter"/> and respectively + <see cref="T:log4net.DateFormatter.Iso8601DateFormatter"/>. For example, + <b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>. + </para> + <para> + These dedicated date formatters perform significantly + better than <see cref="M:System.DateTime.ToString(System.String)"/>. + </para> + </description> + </item> + <item> + <term>%</term> + <description> + <para> + The sequence %% outputs a single percent sign. + </para> + </description> + </item> + </list> + <para> + Additional pattern converters may be registered with a specific <see cref="T:log4net.Util.PatternString"/> + instance using <see cref="M:log4net.Util.PatternString.AddConverter(log4net.Util.PatternString.ConverterInfo)"/> or + <see cref="M:log4net.Util.PatternString.AddConverter(System.String,System.Type)"/>. + </para> + <para> + See the <see cref="T:log4net.Layout.PatternLayout"/> for details on the + <i>format modifiers</i> supported by the patterns. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.PatternString.s_globalRulesRegistry"> + <summary> + Internal map of converter identifiers to converter types. + </summary> + </member> + <member name="F:log4net.Util.PatternString.m_pattern"> + <summary> + the pattern + </summary> + </member> + <member name="F:log4net.Util.PatternString.m_head"> + <summary> + the head of the pattern converter chain + </summary> + </member> + <member name="F:log4net.Util.PatternString.m_instanceRulesRegistry"> + <summary> + patterns defined on this PatternString only + </summary> + </member> + <member name="M:log4net.Util.PatternString.#cctor"> + <summary> + Initialize the global registry + </summary> + </member> + <member name="M:log4net.Util.PatternString.#ctor"> + <summary> + Default constructor + </summary> + <remarks> + <para> + Initialize a new instance of <see cref="T:log4net.Util.PatternString"/> + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.#ctor(System.String)"> + <summary> + Constructs a PatternString + </summary> + <param name="pattern">The pattern to use with this PatternString</param> + <remarks> + <para> + Initialize a new instance of <see cref="T:log4net.Util.PatternString"/> with the pattern specified. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.ActivateOptions"> + <summary> + Initialize object options + </summary> + <remarks> + <para> + This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object + activation scheme. The <see cref="M:log4net.Util.PatternString.ActivateOptions"/> method must + be called on this object after the configuration properties have + been set. Until <see cref="M:log4net.Util.PatternString.ActivateOptions"/> is called this + object is in an undefined state and must not be used. + </para> + <para> + If any of the configuration properties are modified then + <see cref="M:log4net.Util.PatternString.ActivateOptions"/> must be called again. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.CreatePatternParser(System.String)"> + <summary> + Create the <see cref="T:log4net.Util.PatternParser"/> used to parse the pattern + </summary> + <param name="pattern">the pattern to parse</param> + <returns>The <see cref="T:log4net.Util.PatternParser"/></returns> + <remarks> + <para> + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.Format(System.IO.TextWriter)"> + <summary> + Produces a formatted string as specified by the conversion pattern. + </summary> + <param name="writer">The TextWriter to write the formatted event to</param> + <remarks> + <para> + Format the pattern to the <paramref name="writer"/>. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.Format"> + <summary> + Format the pattern as a string + </summary> + <returns>the pattern formatted as a string</returns> + <remarks> + <para> + Format the pattern to a string. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.AddConverter(log4net.Util.PatternString.ConverterInfo)"> + <summary> + Add a converter to this PatternString + </summary> + <param name="converterInfo">the converter info</param> + <remarks> + <para> + This version of the method is used by the configurator. + Programmatic users should use the alternative <see cref="M:log4net.Util.PatternString.AddConverter(System.String,System.Type)"/> method. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.AddConverter(System.String,System.Type)"> + <summary> + Add a converter to this PatternString + </summary> + <param name="name">the name of the conversion pattern for this converter</param> + <param name="type">the type of the converter</param> + <remarks> + <para> + Add a converter to this PatternString + </para> + </remarks> + </member> + <member name="P:log4net.Util.PatternString.ConversionPattern"> + <summary> + Gets or sets the pattern formatting string + </summary> + <value> + The pattern formatting string + </value> + <remarks> + <para> + The <b>ConversionPattern</b> option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + </para> + </remarks> + </member> + <member name="T:log4net.Util.PatternString.ConverterInfo"> + <summary> + Wrapper class used to map converter names to converter types + </summary> + <remarks> + <para> + Wrapper class used to map converter names to converter types + </para> + </remarks> + </member> + <member name="M:log4net.Util.PatternString.ConverterInfo.#ctor"> + <summary> + default constructor + </summary> + </member> + <member name="P:log4net.Util.PatternString.ConverterInfo.Name"> + <summary> + Gets or sets the name of the conversion pattern + </summary> + <value> + The name of the conversion pattern + </value> + <remarks> + <para> + Gets or sets the name of the conversion pattern + </para> + </remarks> + </member> + <member name="P:log4net.Util.PatternString.ConverterInfo.Type"> + <summary> + Gets or sets the type of the converter + </summary> + <value> + The type of the converter + </value> + <remarks> + <para> + Gets or sets the type of the converter + </para> + </remarks> + </member> + <member name="T:log4net.Util.PropertiesDictionary"> + <summary> + String keyed object map. + </summary> + <remarks> + <para> + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="T:log4net.Util.ReadOnlyPropertiesDictionary"> + <summary> + String keyed object map that is read only. + </summary> + <remarks> + <para> + This collection is readonly and cannot be modified. + </para> + <para> + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable"> + <summary> + The Hashtable used to store the properties data + </summary> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ReadOnlyPropertiesDictionary"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)"> + <summary> + Copy Constructor + </summary> + <param name="propertiesDictionary">properties to copy</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ReadOnlyPropertiesDictionary"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Deserialization constructor + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param> + <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ReadOnlyPropertiesDictionary"/> class + with serialized data. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys"> + <summary> + Gets the key names. + </summary> + <returns>An array of all the keys.</returns> + <remarks> + <para> + Gets the key names. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)"> + <summary> + Test if the dictionary contains a specified key + </summary> + <param name="key">the key to look for</param> + <returns>true if the dictionary contains the specified key</returns> + <remarks> + <para> + Test if the dictionary contains a specified key + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided. + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param> + <param name="context">The destination for this serialization.</param> + <remarks> + <para> + Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator"> + <summary> + See <see cref="M:System.Collections.IDictionary.GetEnumerator"/> + </summary> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)"> + <summary> + See <see cref="M:System.Collections.IDictionary.Remove(System.Object)"/> + </summary> + <param name="key"></param> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)"> + <summary> + See <see cref="M:System.Collections.IDictionary.Contains(System.Object)"/> + </summary> + <param name="key"></param> + <returns></returns> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.Clear"> + <summary> + Remove all properties from the properties collection + </summary> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)"> + <summary> + See <see cref="M:System.Collections.IDictionary.Add(System.Object,System.Object)"/> + </summary> + <param name="key"></param> + <param name="value"></param> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + See <see cref="M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)"/> + </summary> + <param name="array"></param> + <param name="index"></param> + </member> + <member name="M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator"> + <summary> + See <see cref="M:System.Collections.IEnumerable.GetEnumerator"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)"> + <summary> + Gets or sets the value of the property with the specified key. + </summary> + <value> + The value of the property with the specified key. + </value> + <param name="key">The key of the property to get or set.</param> + <remarks> + <para> + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + </para> + </remarks> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable"> + <summary> + The hashtable used to store the properties + </summary> + <value> + The internal collection used to store the properties + </value> + <remarks> + <para> + The hashtable used to store the properties + </para> + </remarks> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly"> + <summary> + See <see cref="P:System.Collections.IDictionary.IsReadOnly"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#$Item$(System.Object)"> + <summary> + See <see cref="P:System.Collections.IDictionary.Item(System.Object)"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values"> + <summary> + See <see cref="P:System.Collections.IDictionary.Values"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys"> + <summary> + See <see cref="P:System.Collections.IDictionary.Keys"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize"> + <summary> + See <see cref="P:System.Collections.IDictionary.IsFixedSize"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized"> + <summary> + See <see cref="P:System.Collections.ICollection.IsSynchronized"/> + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.Count"> + <summary> + The number of properties in this collection + </summary> + </member> + <member name="P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot"> + <summary> + See <see cref="P:System.Collections.ICollection.SyncRoot"/> + </summary> + </member> + <member name="M:log4net.Util.PropertiesDictionary.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.PropertiesDictionary"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)"> + <summary> + Constructor + </summary> + <param name="propertiesDictionary">properties to copy</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.PropertiesDictionary"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.PropertiesDictionary"/> class + with serialized data. + </summary> + <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param> + <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param> + <remarks> + <para> + Because this class is sealed the serialization constructor is private. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.Remove(System.String)"> + <summary> + Remove the entry with the specified key from this dictionary + </summary> + <param name="key">the key for the entry to remove</param> + <remarks> + <para> + Remove the entry with the specified key from this dictionary + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator"> + <summary> + See <see cref="M:System.Collections.IDictionary.GetEnumerator"/> + </summary> + <returns>an enumerator</returns> + <remarks> + <para> + Returns a <see cref="T:System.Collections.IDictionaryEnumerator"/> over the contest of this collection. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)"> + <summary> + See <see cref="M:System.Collections.IDictionary.Remove(System.Object)"/> + </summary> + <param name="key">the key to remove</param> + <remarks> + <para> + Remove the entry with the specified key from this dictionary + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)"> + <summary> + See <see cref="M:System.Collections.IDictionary.Contains(System.Object)"/> + </summary> + <param name="key">the key to lookup in the collection</param> + <returns><c>true</c> if the collection contains the specified key</returns> + <remarks> + <para> + Test if this collection contains a specified key. + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.Clear"> + <summary> + Remove all properties from the properties collection + </summary> + <remarks> + <para> + Remove all properties from the properties collection + </para> + </remarks> + </member> + <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)"> + <summary> + See <see cref="M:System.Collections.IDictionary.Add(System.Object,System.Object)"/> + </summary> + <param name="key">the key</param> + <param name="value">the value to store for the key</param> + <remarks> + <para> + Store a value for the specified <see cref="T:System.String"/> <paramref name="key"/>. + </para> + </remarks> + <exception cref="T:System.ArgumentException">Thrown if the <paramref name="key"/> is not a string</exception> + </member> + <member name="M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)"> + <summary> + See <see cref="M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)"/> + </summary> + <param name="array"></param> + <param name="index"></param> + </member> + <member name="M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator"> + <summary> + See <see cref="M:System.Collections.IEnumerable.GetEnumerator"/> + </summary> + </member> + <member name="P:log4net.Util.PropertiesDictionary.Item(System.String)"> + <summary> + Gets or sets the value of the property with the specified key. + </summary> + <value> + The value of the property with the specified key. + </value> + <param name="key">The key of the property to get or set.</param> + <remarks> + <para> + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + </para> + </remarks> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly"> + <summary> + See <see cref="P:System.Collections.IDictionary.IsReadOnly"/> + </summary> + <value> + <c>false</c> + </value> + <remarks> + <para> + This collection is modifiable. This property always + returns <c>false</c>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#$Item$(System.Object)"> + <summary> + See <see cref="P:System.Collections.IDictionary.Item(System.Object)"/> + </summary> + <value> + The value for the key specified. + </value> + <remarks> + <para> + Get or set a value for the specified <see cref="T:System.String"/> <paramref name="key"/>. + </para> + </remarks> + <exception cref="T:System.ArgumentException">Thrown if the <paramref name="key"/> is not a string</exception> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values"> + <summary> + See <see cref="P:System.Collections.IDictionary.Values"/> + </summary> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys"> + <summary> + See <see cref="P:System.Collections.IDictionary.Keys"/> + </summary> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize"> + <summary> + See <see cref="P:System.Collections.IDictionary.IsFixedSize"/> + </summary> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized"> + <summary> + See <see cref="P:System.Collections.ICollection.IsSynchronized"/> + </summary> + </member> + <member name="P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot"> + <summary> + See <see cref="P:System.Collections.ICollection.SyncRoot"/> + </summary> + </member> + <member name="T:log4net.Util.ProtectCloseTextWriter"> + <summary> + A <see cref="T:System.IO.TextWriter"/> that ignores the <see cref="M:log4net.Util.ProtectCloseTextWriter.Close"/> message + </summary> + <remarks> + <para> + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)"> + <summary> + Constructor + </summary> + <param name="writer">the writer to actually write to</param> + <remarks> + <para> + Create a new ProtectCloseTextWriter using a writer + </para> + </remarks> + </member> + <member name="M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)"> + <summary> + Attach this instance to a different underlying <see cref="T:System.IO.TextWriter"/> + </summary> + <param name="writer">the writer to attach to</param> + <remarks> + <para> + Attach this instance to a different underlying <see cref="T:System.IO.TextWriter"/> + </para> + </remarks> + </member> + <member name="M:log4net.Util.ProtectCloseTextWriter.Close"> + <summary> + Does not close the underlying output writer. + </summary> + <remarks> + <para> + Does not close the underlying output writer. + This method does nothing. + </para> + </remarks> + </member> + <member name="T:log4net.Util.ReaderWriterLock"> + <summary> + Defines a lock that supports single writers and multiple readers + </summary> + <remarks> + <para> + <c>ReaderWriterLock</c> is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + <c>ReaderWriterLock</c> provides better throughput than a simple + one-at-a-time lock, such as <see cref="T:System.Threading.Monitor"/>. + </para> + <para> + If a platform does not support a <c>System.Threading.ReaderWriterLock</c> + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.ReaderWriterLock.#ctor"> + <summary> + Constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ReaderWriterLock"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReaderWriterLock.AcquireReaderLock"> + <summary> + Acquires a reader lock + </summary> + <remarks> + <para> + <see cref="M:log4net.Util.ReaderWriterLock.AcquireReaderLock"/> blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReaderWriterLock.ReleaseReaderLock"> + <summary> + Decrements the lock count + </summary> + <remarks> + <para> + <see cref="M:log4net.Util.ReaderWriterLock.ReleaseReaderLock"/> decrements the lock count. When the count + reaches zero, the lock is released. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReaderWriterLock.AcquireWriterLock"> + <summary> + Acquires the writer lock + </summary> + <remarks> + <para> + This method blocks if another thread has a reader lock or writer lock. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReaderWriterLock.ReleaseWriterLock"> + <summary> + Decrements the lock count on the writer lock + </summary> + <remarks> + <para> + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + </para> + </remarks> + </member> + <member name="T:log4net.Util.ReusableStringWriter"> + <summary> + A <see cref="T:System.IO.StringWriter"/> that can be <see cref="M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)"/> and reused + </summary> + <remarks> + <para> + A <see cref="T:System.IO.StringWriter"/> that can be <see cref="M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)"/> and reused. + This uses a single buffer for string operations. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)"> + <summary> + Create an instance of <see cref="T:log4net.Util.ReusableStringWriter"/> + </summary> + <param name="formatProvider">the format provider to use</param> + <remarks> + <para> + Create an instance of <see cref="T:log4net.Util.ReusableStringWriter"/> + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)"> + <summary> + Override Dispose to prevent closing of writer + </summary> + <param name="disposing">flag</param> + <remarks> + <para> + Override Dispose to prevent closing of writer + </para> + </remarks> + </member> + <member name="M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)"> + <summary> + Reset this string writer so that it can be reused. + </summary> + <param name="maxCapacity">the maximum buffer capacity before it is trimmed</param> + <param name="defaultSize">the default size to make the buffer</param> + <remarks> + <para> + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + </para> + </remarks> + </member> + <member name="T:log4net.Util.SystemInfo"> + <summary> + Utility class for system specific information. + </summary> + <remarks> + <para> + Utility class of static methods for system specific information. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + <author>Alexey Solofnenko</author> + </member> + <member name="M:log4net.Util.SystemInfo.#ctor"> + <summary> + Private constructor to prevent instances. + </summary> + <remarks> + <para> + Only static methods are exposed from this type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.#cctor"> + <summary> + Initialize default values for private static fields. + </summary> + <remarks> + <para> + Only static methods are exposed from this type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)"> + <summary> + Gets the assembly location path for the specified assembly. + </summary> + <param name="myAssembly">The assembly to get the location for.</param> + <returns>The location of the assembly.</returns> + <remarks> + <para> + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)"> + <summary> + Gets the fully qualified name of the <see cref="T:System.Type"/>, including + the name of the assembly from which the <see cref="T:System.Type"/> was + loaded. + </summary> + <param name="type">The <see cref="T:System.Type"/> to get the fully qualified name for.</param> + <returns>The fully qualified name for the <see cref="T:System.Type"/>.</returns> + <remarks> + <para> + This is equivalent to the <c>Type.AssemblyQualifiedName</c> property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)"> + <summary> + Gets the short name of the <see cref="T:System.Reflection.Assembly"/>. + </summary> + <param name="myAssembly">The <see cref="T:System.Reflection.Assembly"/> to get the name for.</param> + <returns>The short name of the <see cref="T:System.Reflection.Assembly"/>.</returns> + <remarks> + <para> + The short name of the assembly is the <see cref="P:System.Reflection.Assembly.FullName"/> + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + </para> + <para> + Use this rather than <c>Assembly.GetName().Name</c> because that + is not available on the Compact Framework. + </para> + <para> + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the <see cref="P:System.Reflection.Assembly.FullName"/> of the assembly so we + start from there and strip out just the assembly name. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)"> + <summary> + Gets the file name portion of the <see cref="T:System.Reflection.Assembly"/>, including the extension. + </summary> + <param name="myAssembly">The <see cref="T:System.Reflection.Assembly"/> to get the file name for.</param> + <returns>The file name of the assembly.</returns> + <remarks> + <para> + Gets the file name portion of the <see cref="T:System.Reflection.Assembly"/>, including the extension. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)"> + <summary> + Loads the type specified in the type string. + </summary> + <param name="relativeType">A sibling type to use to load the type.</param> + <param name="typeName">The name of the type to load.</param> + <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param> + <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param> + <returns>The type loaded or <c>null</c> if it could not be loaded.</returns> + <remarks> + <para> + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + <see cref="M:System.Type.GetType(System.String,System.Boolean)"/>. + </para> + <para> + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)"> + <summary> + Loads the type specified in the type string. + </summary> + <param name="typeName">The name of the type to load.</param> + <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param> + <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param> + <returns>The type loaded or <c>null</c> if it could not be loaded.</returns> + <remarks> + <para> + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + <see cref="M:System.Type.GetType(System.String,System.Boolean)"/>. + </para> + <para> + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)"> + <summary> + Loads the type specified in the type string. + </summary> + <param name="relativeAssembly">An assembly to load the type from.</param> + <param name="typeName">The name of the type to load.</param> + <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param> + <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param> + <returns>The type loaded or <c>null</c> if it could not be loaded.</returns> + <remarks> + <para> + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + <see cref="M:System.Type.GetType(System.String,System.Boolean)"/>. + </para> + <para> + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.NewGuid"> + <summary> + Generate a new guid + </summary> + <returns>A new Guid</returns> + <remarks> + <para> + Generate a new guid + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)"> + <summary> + Create an <see cref="T:System.ArgumentOutOfRangeException"/> + </summary> + <param name="parameterName">The name of the parameter that caused the exception</param> + <param name="actualValue">The value of the argument that causes this exception</param> + <param name="message">The message that describes the error</param> + <returns>the ArgumentOutOfRangeException object</returns> + <remarks> + <para> + Create a new instance of the <see cref="T:System.ArgumentOutOfRangeException"/> class + with a specified error message, the parameter name, and the value + of the argument. + </para> + <para> + The Compact Framework does not support the 3 parameter constructor for the + <see cref="T:System.ArgumentOutOfRangeException"/> type. This method provides an + implementation that works for all platforms. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)"> + <summary> + Parse a string into an <see cref="T:System.Int32"/> value + </summary> + <param name="s">the string to parse</param> + <param name="val">out param where the parsed value is placed</param> + <returns><c>true</c> if the string was able to be parsed into an integer</returns> + <remarks> + <para> + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns <c>false</c>. The method does not throw an exception. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)"> + <summary> + Parse a string into an <see cref="T:System.Int64"/> value + </summary> + <param name="s">the string to parse</param> + <param name="val">out param where the parsed value is placed</param> + <returns><c>true</c> if the string was able to be parsed into an integer</returns> + <remarks> + <para> + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns <c>false</c>. The method does not throw an exception. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.GetAppSetting(System.String)"> + <summary> + Lookup an application setting + </summary> + <param name="key">the application settings key to lookup</param> + <returns>the value for the key, or <c>null</c></returns> + <remarks> + <para> + Configuration APIs are not supported under the Compact Framework + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)"> + <summary> + Convert a path into a fully qualified local file path. + </summary> + <param name="path">The path to convert.</param> + <returns>The fully qualified path.</returns> + <remarks> + <para> + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + </para> + <para> + The path specified must be a local file path, a URI is not supported. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable"> + <summary> + Creates a new case-insensitive instance of the <see cref="T:System.Collections.Hashtable"/> class with the default initial capacity. + </summary> + <returns>A new case-insensitive instance of the <see cref="T:System.Collections.Hashtable"/> class with the default initial capacity</returns> + <remarks> + <para> + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + </para> + </remarks> + </member> + <member name="F:log4net.Util.SystemInfo.EmptyTypes"> + <summary> + Gets an empty array of types. + </summary> + <remarks> + <para> + The <c>Type.EmptyTypes</c> field is not available on + the .NET Compact Framework 1.0. + </para> + </remarks> + </member> + <member name="F:log4net.Util.SystemInfo.s_hostName"> + <summary> + Cache the host name for the current machine + </summary> + </member> + <member name="F:log4net.Util.SystemInfo.s_appFriendlyName"> + <summary> + Cache the application friendly name + </summary> + </member> + <member name="F:log4net.Util.SystemInfo.s_nullText"> + <summary> + Text to output when a <c>null</c> is encountered. + </summary> + </member> + <member name="F:log4net.Util.SystemInfo.s_notAvailableText"> + <summary> + Text to output when an unsupported feature is requested. + </summary> + </member> + <member name="F:log4net.Util.SystemInfo.s_processStartTime"> + <summary> + Start time for the current process. + </summary> + </member> + <member name="P:log4net.Util.SystemInfo.NewLine"> + <summary> + Gets the system dependent line terminator. + </summary> + <value> + The system dependent line terminator. + </value> + <remarks> + <para> + Gets the system dependent line terminator. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.ApplicationBaseDirectory"> + <summary> + Gets the base directory for this <see cref="T:System.AppDomain"/>. + </summary> + <value>The base directory path for the current <see cref="T:System.AppDomain"/>.</value> + <remarks> + <para> + Gets the base directory for this <see cref="T:System.AppDomain"/>. + </para> + <para> + The value returned may be either a local file path or a URI. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.ConfigurationFileLocation"> + <summary> + Gets the path to the configuration file for the current <see cref="T:System.AppDomain"/>. + </summary> + <value>The path to the configuration file for the current <see cref="T:System.AppDomain"/>.</value> + <remarks> + <para> + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + </para> + <para> + The value returned may be either a local file path or a URI. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.EntryAssemblyLocation"> + <summary> + Gets the path to the file that first executed in the current <see cref="T:System.AppDomain"/>. + </summary> + <value>The path to the entry assembly.</value> + <remarks> + <para> + Gets the path to the file that first executed in the current <see cref="T:System.AppDomain"/>. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.CurrentThreadId"> + <summary> + Gets the ID of the current thread. + </summary> + <value>The ID of the current thread.</value> + <remarks> + <para> + On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + </para> + <para> + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + <c>GetCurrentThreadId</c> is implemented inline in a header file + and cannot be called. + </para> + <para> + On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.HostName"> + <summary> + Get the host name or machine name for the current machine + </summary> + <value> + The hostname or machine name + </value> + <remarks> + <para> + Get the host name or machine name for the current machine + </para> + <para> + The host name (<see cref="M:System.Net.Dns.GetHostName"/>) or + the machine name (<c>Environment.MachineName</c>) for + the current machine, or if neither of these are available + then <c>NOT AVAILABLE</c> is returned. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.ApplicationFriendlyName"> + <summary> + Get this application's friendly name + </summary> + <value> + The friendly name of this application as a string + </value> + <remarks> + <para> + If available the name of the application is retrieved from + the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>. + </para> + <para> + Otherwise the file name of the entry assembly is used. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.ProcessStartTime"> + <summary> + Get the start time for the current process. + </summary> + <remarks> + <para> + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c> + this is not the start time for the current process. + </para> + <para> + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + </para> + <para> + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.NullText"> + <summary> + Text to output when a <c>null</c> is encountered. + </summary> + <remarks> + <para> + Use this value to indicate a <c>null</c> has been encountered while + outputting a string representation of an item. + </para> + <para> + The default value is <c>(null)</c>. This value can be overridden by specifying + a value for the <c>log4net.NullText</c> appSetting in the application's + .config file. + </para> + </remarks> + </member> + <member name="P:log4net.Util.SystemInfo.NotAvailableText"> + <summary> + Text to output when an unsupported feature is requested. + </summary> + <remarks> + <para> + Use this value when an unsupported feature is requested. + </para> + <para> + The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying + a value for the <c>log4net.NotAvailableText</c> appSetting in the application's + .config file. + </para> + </remarks> + </member> + <member name="T:log4net.Util.SystemStringFormat"> + <summary> + Utility class that represents a format string. + </summary> + <remarks> + <para> + Utility class that represents a format string. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Initialise the <see cref="T:log4net.Util.SystemStringFormat"/> + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information.</param> + <param name="format">A <see cref="T:System.String"/> containing zero or more format items.</param> + <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param> + </member> + <member name="M:log4net.Util.SystemStringFormat.ToString"> + <summary> + Format the string and arguments + </summary> + <returns>the formatted string</returns> + </member> + <member name="M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])"> + <summary> + Replaces the format item in a specified <see cref="T:System.String"/> with the text equivalent + of the value of a corresponding <see cref="T:System.Object"/> instance in a specified array. + A specified parameter supplies culture-specific formatting information. + </summary> + <param name="provider">An <see cref="T:System.IFormatProvider"/> that supplies culture-specific formatting information.</param> + <param name="format">A <see cref="T:System.String"/> containing zero or more format items.</param> + <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param> + <returns> + A copy of format in which the format items have been replaced by the <see cref="T:System.String"/> + equivalent of the corresponding instances of <see cref="T:System.Object"/> in args. + </returns> + <remarks> + <para> + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + </para> + </remarks> + </member> + <member name="M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])"> + <summary> + Process an error during StringFormat + </summary> + </member> + <member name="M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)"> + <summary> + Dump the contents of an array into a string builder + </summary> + </member> + <member name="M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)"> + <summary> + Dump an object to a string + </summary> + </member> + <member name="T:log4net.Util.ThreadContextProperties"> + <summary> + Implementation of Properties collection for the <see cref="T:log4net.ThreadContext"/> + </summary> + <remarks> + <para> + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own <see cref="T:log4net.Util.PropertiesDictionary"/>. + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.ThreadContextProperties.s_threadLocalSlot"> + <summary> + The thread local data slot to use to store a PropertiesDictionary. + </summary> + </member> + <member name="M:log4net.Util.ThreadContextProperties.#ctor"> + <summary> + Internal constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextProperties"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextProperties.Remove(System.String)"> + <summary> + Remove a property + </summary> + <param name="key">the key for the entry to remove</param> + <remarks> + <para> + Remove a property + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextProperties.Clear"> + <summary> + Clear all properties + </summary> + <remarks> + <para> + Clear all properties + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)"> + <summary> + Get the <c>PropertiesDictionary</c> for this thread. + </summary> + <param name="create">create the dictionary if it does not exist, otherwise return null if is does not exist</param> + <returns>the properties for this thread</returns> + <remarks> + <para> + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + </para> + </remarks> + </member> + <member name="P:log4net.Util.ThreadContextProperties.Item(System.String)"> + <summary> + Gets or sets the value of a property + </summary> + <value> + The value for the property with the specified key + </value> + <remarks> + <para> + Gets or sets the value of a property + </para> + </remarks> + </member> + <member name="T:log4net.Util.ThreadContextStack"> + <summary> + Implementation of Stack for the <see cref="T:log4net.ThreadContext"/> + </summary> + <remarks> + <para> + Implementation of Stack for the <see cref="T:log4net.ThreadContext"/> + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="F:log4net.Util.ThreadContextStack.m_stack"> + <summary> + The stack store. + </summary> + </member> + <member name="M:log4net.Util.ThreadContextStack.#ctor"> + <summary> + Internal constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStack"/> class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextStack.Clear"> + <summary> + Clears all the contextual information held in this stack. + </summary> + <remarks> + <para> + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the <see cref="M:System.IDisposable.Dispose"/> method of the <see cref="T:System.IDisposable"/> + returned from <see cref="M:log4net.Util.ThreadContextStack.Push(System.String)"/> even in exceptional circumstances, + for example by using the <c>using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message"))</c> + syntax. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextStack.Pop"> + <summary> + Removes the top context from this stack. + </summary> + <returns>The message in the context that was removed from the top of this stack.</returns> + <remarks> + <para> + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not <see langword="null"/>) is returned. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextStack.Push(System.String)"> + <summary> + Pushes a new context message into this stack. + </summary> + <param name="message">The new context message.</param> + <returns> + An <see cref="T:System.IDisposable"/> that can be used to clean up the context stack. + </returns> + <remarks> + <para> + Pushes a new context onto this stack. An <see cref="T:System.IDisposable"/> + is returned that can be used to clean up this stack. This + can be easily combined with the <c>using</c> keyword to scope the + context. + </para> + </remarks> + <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword. + <code lang="C#"> + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + </code> + </example> + </member> + <member name="M:log4net.Util.ThreadContextStack.GetFullMessage"> + <summary> + Gets the current context information for this stack. + </summary> + <returns>The current context information.</returns> + </member> + <member name="M:log4net.Util.ThreadContextStack.ToString"> + <summary> + Gets the current context information for this stack. + </summary> + <returns>Gets the current context information</returns> + <remarks> + <para> + Gets the current context information for this stack. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject"> + <summary> + Get a portable version of this object + </summary> + <returns>the portable instance of this object</returns> + <remarks> + <para> + Get a cross thread portable version of this object + </para> + </remarks> + </member> + <member name="P:log4net.Util.ThreadContextStack.Count"> + <summary> + The number of messages in the stack + </summary> + <value> + The current number of messages in the stack + </value> + <remarks> + <para> + The current number of messages in the stack. That is + the number of times <see cref="M:log4net.Util.ThreadContextStack.Push(System.String)"/> has been called + minus the number of times <see cref="M:log4net.Util.ThreadContextStack.Pop"/> has been called. + </para> + </remarks> + </member> + <member name="P:log4net.Util.ThreadContextStack.InternalStack"> + <summary> + Gets and sets the internal stack used by this <see cref="T:log4net.Util.ThreadContextStack"/> + </summary> + <value>The internal storage stack</value> + <remarks> + <para> + This property is provided only to support backward compatability + of the <see cref="T:log4net.NDC"/>. Tytpically the internal stack should not + be modified. + </para> + </remarks> + </member> + <member name="T:log4net.Util.ThreadContextStack.StackFrame"> + <summary> + Inner class used to represent a single context frame in the stack. + </summary> + <remarks> + <para> + Inner class used to represent a single context frame in the stack. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)"> + <summary> + Constructor + </summary> + <param name="message">The message for this context.</param> + <param name="parent">The parent context in the chain.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStack.StackFrame"/> class + with the specified message and parent context. + </para> + </remarks> + </member> + <member name="P:log4net.Util.ThreadContextStack.StackFrame.Message"> + <summary> + Get the message. + </summary> + <value>The message.</value> + <remarks> + <para> + Get the message. + </para> + </remarks> + </member> + <member name="P:log4net.Util.ThreadContextStack.StackFrame.FullMessage"> + <summary> + Gets the full text of the context down to the root level. + </summary> + <value> + The full text of the context down to the root level. + </value> + <remarks> + <para> + Gets the full text of the context down to the root level. + </para> + </remarks> + </member> + <member name="T:log4net.Util.ThreadContextStack.AutoPopStackFrame"> + <summary> + Struct returned from the <see cref="M:log4net.Util.ThreadContextStack.Push(System.String)"/> method. + </summary> + <remarks> + <para> + This struct implements the <see cref="T:System.IDisposable"/> and is designed to be used + with the <see langword="using"/> pattern to remove the stack frame at the end of the scope. + </para> + </remarks> + </member> + <member name="F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack"> + <summary> + The ThreadContextStack internal stack + </summary> + </member> + <member name="F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth"> + <summary> + The depth to trim the stack to when this instance is disposed + </summary> + </member> + <member name="M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)"> + <summary> + Constructor + </summary> + <param name="frameStack">The internal stack used by the ThreadContextStack.</param> + <param name="frameDepth">The depth to return the stack to when this object is disposed.</param> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStack.AutoPopStackFrame"/> class with + the specified stack and return depth. + </para> + </remarks> + </member> + <member name="M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose"> + <summary> + Returns the stack to the correct depth. + </summary> + <remarks> + <para> + Returns the stack to the correct depth. + </para> + </remarks> + </member> + <member name="T:log4net.Util.ThreadContextStacks"> + <summary> + Implementation of Stacks collection for the <see cref="T:log4net.ThreadContext"/> + </summary> + <remarks> + <para> + Implementation of Stacks collection for the <see cref="T:log4net.ThreadContext"/> + </para> + </remarks> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)"> + <summary> + Internal constructor + </summary> + <remarks> + <para> + Initializes a new instance of the <see cref="T:log4net.Util.ThreadContextStacks"/> class. + </para> + </remarks> + </member> + <member name="P:log4net.Util.ThreadContextStacks.Item(System.String)"> + <summary> + Gets the named thread context stack + </summary> + <value> + The named stack + </value> + <remarks> + <para> + Gets the named thread context stack + </para> + </remarks> + </member> + <member name="T:log4net.Util.Transform"> + <summary> + Utility class for transforming strings. + </summary> + <remarks> + <para> + Utility class for transforming strings. + </para> + </remarks> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.Util.Transform.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.Util.Transform"/> class. + </summary> + <remarks> + <para> + Uses a private access modifier to prevent instantiation of this class. + </para> + </remarks> + </member> + <member name="M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)"> + <summary> + Write a string to an <see cref="T:System.Xml.XmlWriter"/> + </summary> + <param name="writer">the writer to write to</param> + <param name="textData">the string to write</param> + <param name="invalidCharReplacement">The string to replace non XML compliant chars with</param> + <remarks> + <para> + The test is escaped either using XML escape entities + or using CDATA sections. + </para> + </remarks> + </member> + <member name="M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)"> + <summary> + Replace invalid XML characters in text string + </summary> + <param name="textData">the XML text input string</param> + <param name="mask">the string to use in place of invalid characters</param> + <returns>A string that does not contain invalid XML characters.</returns> + <remarks> + <para> + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: <a href="http://www.w3.org/TR/REC-xml/#charsets">http://www.w3.org/TR/REC-xml/#charsets</a>. + </para> + <para> + This method replaces any illegal characters in the input string + with the mask string specified. + </para> + </remarks> + </member> + <member name="M:log4net.Util.Transform.CountSubstrings(System.String,System.String)"> + <summary> + Count the number of times that the substring occurs in the text + </summary> + <param name="text">the text to search</param> + <param name="substring">the substring to find</param> + <returns>the number of times the substring occurs in the text</returns> + <remarks> + <para> + The substring is assumed to be non repeating within itself. + </para> + </remarks> + </member> + <member name="T:log4net.GlobalContext"> + <summary> + The log4net Global Context. + </summary> + <remarks> + <para> + The <c>GlobalContext</c> provides a location for global debugging + information to be stored. + </para> + <para> + The global context has a properties map and these properties can + be included in the output of log messages. The <see cref="T:log4net.Layout.PatternLayout"/> + supports selecting and outputing these properties. + </para> + <para> + By default the <c>log4net:HostName</c> property is set to the name of + the current machine. + </para> + </remarks> + <example> + <code lang="C#"> + GlobalContext.Properties["hostname"] = Environment.MachineName; + </code> + </example> + <threadsafety static="true" instance="true"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.GlobalContext.#ctor"> + <summary> + Private Constructor. + </summary> + <remarks> + Uses a private access modifier to prevent instantiation of this class. + </remarks> + </member> + <member name="F:log4net.GlobalContext.s_properties"> + <summary> + The global context properties instance + </summary> + </member> + <member name="P:log4net.GlobalContext.Properties"> + <summary> + The global properties map. + </summary> + <value> + The global properties map. + </value> + <remarks> + <para> + The global properties map. + </para> + </remarks> + </member> + <member name="T:log4net.LogicalThreadContext"> + <summary> + The log4net Logical Thread Context. + </summary> + <remarks> + <para> + The <c>LogicalThreadContext</c> provides a location for <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> specific debugging + information to be stored. + The <c>LogicalThreadContext</c> properties override any <see cref="T:log4net.ThreadContext"/> or <see cref="T:log4net.GlobalContext"/> + properties with the same name. + </para> + <para> + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The <see cref="T:log4net.Layout.PatternLayout"/> + supports selecting and outputting these properties. + </para> + <para> + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + </para> + <para> + The Logical Thread Context is managed on a per <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/> basis. + </para> + </remarks> + <example>Example of using the thread context properties to store a username. + <code lang="C#"> + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + </code> + </example> + <example>Example of how to push a message into the context stack + <code lang="C#"> + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + </code> + </example> + <threadsafety static="true" instance="true"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.LogicalThreadContext.#ctor"> + <summary> + Private Constructor. + </summary> + <remarks> + <para> + Uses a private access modifier to prevent instantiation of this class. + </para> + </remarks> + </member> + <member name="F:log4net.LogicalThreadContext.s_properties"> + <summary> + The thread context properties instance + </summary> + </member> + <member name="F:log4net.LogicalThreadContext.s_stacks"> + <summary> + The thread context stacks instance + </summary> + </member> + <member name="P:log4net.LogicalThreadContext.Properties"> + <summary> + The thread properties map + </summary> + <value> + The thread properties map + </value> + <remarks> + <para> + The <c>LogicalThreadContext</c> properties override any <see cref="T:log4net.ThreadContext"/> + or <see cref="T:log4net.GlobalContext"/> properties with the same name. + </para> + </remarks> + </member> + <member name="P:log4net.LogicalThreadContext.Stacks"> + <summary> + The thread stacks + </summary> + <value> + stack map + </value> + <remarks> + <para> + The logical thread stacks. + </para> + </remarks> + </member> + <member name="T:log4net.LogManager"> + <summary> + This class is used by client applications to request logger instances. + </summary> + <remarks> + <para> + This class has static methods that are used by a client to request + a logger instance. The <see cref="M:log4net.LogManager.GetLogger(System.String)"/> method is + used to retrieve a logger. + </para> + <para> + See the <see cref="T:log4net.ILog"/> interface for more details. + </para> + </remarks> + <example>Simple example of logging messages + <code lang="C#"> + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + </code> + </example> + <threadsafety static="true" instance="true"/> + <seealso cref="T:log4net.ILog"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.LogManager.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.LogManager"/> class. + </summary> + <remarks> + Uses a private access modifier to prevent instantiation of this class. + </remarks> + </member> + <member name="M:log4net.LogManager.Exists(System.String)"> + <overloads>Returns the named logger if it exists.</overloads> + <summary> + Returns the named logger if it exists. + </summary> + <remarks> + <para> + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns <c>null</c>. + </para> + </remarks> + <param name="name">The fully qualified logger name to look for.</param> + <returns>The logger found, or <c>null</c> if no logger could be found.</returns> + </member> + <member name="M:log4net.LogManager.Exists(System.String,System.String)"> + <summary> + Returns the named logger if it exists. + </summary> + <remarks> + <para> + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + <c>null</c>. + </para> + </remarks> + <param name="repository">The repository to lookup in.</param> + <param name="name">The fully qualified logger name to look for.</param> + <returns> + The logger found, or <c>null</c> if the logger doesn't exist in the specified + repository. + </returns> + </member> + <member name="M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)"> + <summary> + Returns the named logger if it exists. + </summary> + <remarks> + <para> + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + <c>null</c>. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <param name="name">The fully qualified logger name to look for.</param> + <returns> + The logger, or <c>null</c> if the logger doesn't exist in the specified + assembly's repository. + </returns> + </member> + <member name="M:log4net.LogManager.GetCurrentLoggers"> + <overloads>Get the currently defined loggers.</overloads> + <summary> + Returns all the currently defined loggers in the default repository. + </summary> + <remarks> + <para>The root logger is <b>not</b> included in the returned array.</para> + </remarks> + <returns>All the defined loggers.</returns> + </member> + <member name="M:log4net.LogManager.GetCurrentLoggers(System.String)"> + <summary> + Returns all the currently defined loggers in the specified repository. + </summary> + <param name="repository">The repository to lookup in.</param> + <remarks> + The root logger is <b>not</b> included in the returned array. + </remarks> + <returns>All the defined loggers.</returns> + </member> + <member name="M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)"> + <summary> + Returns all the currently defined loggers in the specified assembly's repository. + </summary> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <remarks> + The root logger is <b>not</b> included in the returned array. + </remarks> + <returns>All the defined loggers.</returns> + </member> + <member name="M:log4net.LogManager.GetLogger(System.String)"> + <overloads>Get or create a logger.</overloads> + <summary> + Retrieves or creates a named logger. + </summary> + <remarks> + <para> + Retrieves a logger named as the <paramref name="name"/> + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + </para> + <para>By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + </para> + </remarks> + <param name="name">The name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + </member> + <member name="M:log4net.LogManager.GetLogger(System.String,System.String)"> + <summary> + Retrieves or creates a named logger. + </summary> + <remarks> + <para> + Retrieve a logger named as the <paramref name="name"/> + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + </para> + <para> + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + </para> + </remarks> + <param name="repository">The repository to lookup in.</param> + <param name="name">The name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + </member> + <member name="M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)"> + <summary> + Retrieves or creates a named logger. + </summary> + <remarks> + <para> + Retrieve a logger named as the <paramref name="name"/> + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + </para> + <para> + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <param name="name">The name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + </member> + <member name="M:log4net.LogManager.GetLogger(System.Type)"> + <summary> + Shorthand for <see cref="M:log4net.LogManager.GetLogger(System.String)"/>. + </summary> + <remarks> + Get the logger for the fully qualified name of the type specified. + </remarks> + <param name="type">The full name of <paramref name="type"/> will be used as the name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + </member> + <member name="M:log4net.LogManager.GetLogger(System.String,System.Type)"> + <summary> + Shorthand for <see cref="M:log4net.LogManager.GetLogger(System.String)"/>. + </summary> + <remarks> + Gets the logger for the fully qualified name of the type specified. + </remarks> + <param name="repository">The repository to lookup in.</param> + <param name="type">The full name of <paramref name="type"/> will be used as the name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + </member> + <member name="M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)"> + <summary> + Shorthand for <see cref="M:log4net.LogManager.GetLogger(System.String)"/>. + </summary> + <remarks> + Gets the logger for the fully qualified name of the type specified. + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + <param name="type">The full name of <paramref name="type"/> will be used as the name of the logger to retrieve.</param> + <returns>The logger with the name specified.</returns> + </member> + <member name="M:log4net.LogManager.Shutdown"> + <summary> + Shuts down the log4net system. + </summary> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in all the + default repositories. + </para> + <para> + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para>The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.LogManager.ShutdownRepository"> + <overloads>Shutdown a logger repository.</overloads> + <summary> + Shuts down the default repository. + </summary> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in the + default repository. + </para> + <para>Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para>The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + </member> + <member name="M:log4net.LogManager.ShutdownRepository(System.String)"> + <summary> + Shuts down the repository for the repository specified. + </summary> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in the + <paramref name="repository"/> specified. + </para> + <para> + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para>The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + <param name="repository">The repository to shutdown.</param> + </member> + <member name="M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)"> + <summary> + Shuts down the repository specified. + </summary> + <remarks> + <para> + Calling this method will <b>safely</b> close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the <paramref name="repositoryAssembly"/> specified. + </para> + <para> + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + </para> + <para> + The <c>shutdown</c> method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + </member> + <member name="M:log4net.LogManager.ResetConfiguration"> + <overloads>Reset the configuration of a repository</overloads> + <summary> + Resets all values contained in this repository instance to their defaults. + </summary> + <remarks> + <para> + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to <c>null</c>, + sets their additivity flag to <c>true</c> and sets the level + of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover, + message disabling is set to its default "off" value. + </para> + </remarks> + </member> + <member name="M:log4net.LogManager.ResetConfiguration(System.String)"> + <summary> + Resets all values contained in this repository instance to their defaults. + </summary> + <remarks> + <para> + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to <c>null</c>, + sets their additivity flag to <c>true</c> and sets the level + of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover, + message disabling is set to its default "off" value. + </para> + </remarks> + <param name="repository">The repository to reset.</param> + </member> + <member name="M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)"> + <summary> + Resets all values contained in this repository instance to their defaults. + </summary> + <remarks> + <para> + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to <c>null</c>, + sets their additivity flag to <c>true</c> and sets the level + of the root logger to <see cref="F:log4net.Core.Level.Debug"/>. Moreover, + message disabling is set to its default "off" value. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param> + </member> + <member name="M:log4net.LogManager.GetLoggerRepository"> + <overloads>Get the logger repository.</overloads> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the callers assembly (<see cref="M:System.Reflection.Assembly.GetCallingAssembly"/>). + </para> + </remarks> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> instance for the default repository.</returns> + </member> + <member name="M:log4net.LogManager.GetLoggerRepository(System.String)"> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the <paramref name="repository"/> argument. + </para> + </remarks> + <param name="repository">The repository to lookup in.</param> + </member> + <member name="M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)"> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the <paramref name="repositoryAssembly"/> argument. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + </member> + <member name="M:log4net.LogManager.GetRepository"> + <overloads>Get a logger repository.</overloads> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the callers assembly (<see cref="M:System.Reflection.Assembly.GetCallingAssembly"/>). + </para> + </remarks> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> instance for the default repository.</returns> + </member> + <member name="M:log4net.LogManager.GetRepository(System.String)"> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the <paramref name="repository"/> argument. + </para> + </remarks> + <param name="repository">The repository to lookup in.</param> + </member> + <member name="M:log4net.LogManager.GetRepository(System.Reflection.Assembly)"> + <summary> + Returns the default <see cref="T:log4net.Repository.ILoggerRepository"/> instance. + </summary> + <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/> instance.</returns> + <remarks> + <para> + Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified + by the <paramref name="repositoryAssembly"/> argument. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to lookup the repository.</param> + </member> + <member name="M:log4net.LogManager.CreateDomain(System.Type)"> + <overloads>Create a domain</overloads> + <summary> + Creates a repository with the specified repository type. + </summary> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.LogManager.GetRepository"/> will return + the same repository instance. + </para> + </remarks> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + </member> + <member name="M:log4net.LogManager.CreateRepository(System.Type)"> + <overloads>Create a logger repository.</overloads> + <summary> + Creates a repository with the specified repository type. + </summary> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.LogManager.GetRepository"/> will return + the same repository instance. + </para> + </remarks> + </member> + <member name="M:log4net.LogManager.CreateDomain(System.String)"> + <summary> + Creates a repository with the specified name. + </summary> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a + <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object. + </para> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An <see cref="T:System.Exception"/> will be thrown if the repository already exists. + </para> + </remarks> + <param name="repository">The name of the repository, this must be unique amongst repositories.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.LogManager.CreateRepository(System.String)"> + <summary> + Creates a repository with the specified name. + </summary> + <remarks> + <para> + Creates the default type of <see cref="T:log4net.Repository.ILoggerRepository"/> which is a + <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> object. + </para> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An <see cref="T:System.Exception"/> will be thrown if the repository already exists. + </para> + </remarks> + <param name="repository">The name of the repository, this must be unique amongst repositories.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.LogManager.CreateDomain(System.String,System.Type)"> + <summary> + Creates a repository with the specified name and repository type. + </summary> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An <see cref="T:System.Exception"/> will be thrown if the repository already exists. + </para> + </remarks> + <param name="repository">The name of the repository, this must be unique to the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.LogManager.CreateRepository(System.String,System.Type)"> + <summary> + Creates a repository with the specified name and repository type. + </summary> + <remarks> + <para> + The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. + An <see cref="T:System.Exception"/> will be thrown if the repository already exists. + </para> + </remarks> + <param name="repository">The name of the repository, this must be unique to the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + <exception cref="T:log4net.Core.LogException">The specified repository already exists.</exception> + </member> + <member name="M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)"> + <summary> + Creates a repository for the specified assembly and repository type. + </summary> + <remarks> + <para> + <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b> + </para> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.LogManager.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + </member> + <member name="M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)"> + <summary> + Creates a repository for the specified assembly and repository type. + </summary> + <remarks> + <para> + The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository + specified such that a call to <see cref="M:log4net.LogManager.GetRepository(System.Reflection.Assembly)"/> with the + same assembly specified will return the same repository instance. + </para> + </remarks> + <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param> + <param name="repositoryType">A <see cref="T:System.Type"/> that implements <see cref="T:log4net.Repository.ILoggerRepository"/> + and has a no arg constructor. An instance of this type will be created to act + as the <see cref="T:log4net.Repository.ILoggerRepository"/> for the repository specified.</param> + <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> created for the repository.</returns> + </member> + <member name="M:log4net.LogManager.GetAllRepositories"> + <summary> + Gets the list of currently defined repositories. + </summary> + <remarks> + <para> + Get an array of all the <see cref="T:log4net.Repository.ILoggerRepository"/> objects that have been created. + </para> + </remarks> + <returns>An array of all the known <see cref="T:log4net.Repository.ILoggerRepository"/> objects.</returns> + </member> + <member name="M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)"> + <summary> + Looks up the wrapper object for the logger specified. + </summary> + <param name="logger">The logger to get the wrapper for.</param> + <returns>The wrapper for the logger specified.</returns> + </member> + <member name="M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])"> + <summary> + Looks up the wrapper objects for the loggers specified. + </summary> + <param name="loggers">The loggers to get the wrappers for.</param> + <returns>The wrapper objects for the loggers specified.</returns> + </member> + <member name="M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)"> + <summary> + Create the <see cref="T:log4net.Core.ILoggerWrapper"/> objects used by + this manager. + </summary> + <param name="logger">The logger to wrap.</param> + <returns>The wrapper for the logger specified.</returns> + </member> + <member name="F:log4net.LogManager.s_wrapperMap"> + <summary> + The wrapper map to use to hold the <see cref="T:log4net.Core.LogImpl"/> objects. + </summary> + </member> + <member name="T:log4net.MDC"> + <summary> + Implementation of Mapped Diagnostic Contexts. + </summary> + <remarks> + <note> + <para> + The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>. + The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. + </para> + </note> + <para> + The MDC class is similar to the <see cref="T:log4net.NDC"/> class except that it is + based on a map instead of a stack. It provides <i>mapped + diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + </para> + <para> + The MDC is managed on a per thread basis. + </para> + </remarks> + <threadsafety static="true" instance="true"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.MDC.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.MDC"/> class. + </summary> + <remarks> + Uses a private access modifier to prevent instantiation of this class. + </remarks> + </member> + <member name="M:log4net.MDC.Get(System.String)"> + <summary> + Gets the context value identified by the <paramref name="key"/> parameter. + </summary> + <param name="key">The key to lookup in the MDC.</param> + <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns> + <remarks> + <note> + <para> + The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>. + The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. + </para> + </note> + <para> + If the <paramref name="key"/> parameter does not look up to a + previously defined context then <c>null</c> will be returned. + </para> + </remarks> + </member> + <member name="M:log4net.MDC.Set(System.String,System.String)"> + <summary> + Add an entry to the MDC + </summary> + <param name="key">The key to store the value under.</param> + <param name="value">The value to store.</param> + <remarks> + <note> + <para> + The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>. + The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. + </para> + </note> + <para> + Puts a context value (the <paramref name="val"/> parameter) as identified + with the <paramref name="key"/> parameter into the current thread's + context map. + </para> + <para> + If a value is already defined for the <paramref name="key"/> + specified then the value will be replaced. If the <paramref name="val"/> + is specified as <c>null</c> then the key value mapping will be removed. + </para> + </remarks> + </member> + <member name="M:log4net.MDC.Remove(System.String)"> + <summary> + Removes the key value mapping for the key specified. + </summary> + <param name="key">The key to remove.</param> + <remarks> + <note> + <para> + The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>. + The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. + </para> + </note> + <para> + Remove the specified entry from this thread's MDC + </para> + </remarks> + </member> + <member name="M:log4net.MDC.Clear"> + <summary> + Clear all entries in the MDC + </summary> + <remarks> + <note> + <para> + The MDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Properties"/>. + The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. + </para> + </note> + <para> + Remove all the entries from this thread's MDC + </para> + </remarks> + </member> + <member name="T:log4net.NDC"> + <summary> + Implementation of Nested Diagnostic Contexts. + </summary> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + </para> + <para> + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + </para> + <para> + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + </para> + </remarks> + <example>How to push a message into the context + <code lang="C#"> + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + </code> + </example> + <threadsafety static="true" instance="true"/> + <author>Nicko Cadell</author> + <author>Gert Driesen</author> + </member> + <member name="M:log4net.NDC.#ctor"> + <summary> + Initializes a new instance of the <see cref="T:log4net.NDC"/> class. + </summary> + <remarks> + Uses a private access modifier to prevent instantiation of this class. + </remarks> + </member> + <member name="M:log4net.NDC.Clear"> + <summary> + Clears all the contextual information held on the current thread. + </summary> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + Clears the stack of NDC data held on the current thread. + </para> + </remarks> + </member> + <member name="M:log4net.NDC.CloneStack"> + <summary> + Creates a clone of the stack of context information. + </summary> + <returns>A clone of the context info for this thread.</returns> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + The results of this method can be passed to the <see cref="M:log4net.NDC.Inherit(System.Collections.Stack)"/> + method to allow child threads to inherit the context of their + parent thread. + </para> + </remarks> + </member> + <member name="M:log4net.NDC.Inherit(System.Collections.Stack)"> + <summary> + Inherits the contextual information from another thread. + </summary> + <param name="stack">The context stack to inherit.</param> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will <b>NOT</b> be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call <see cref="M:log4net.NDC.CloneStack"/> to obtain a stack to pass to + this method. + </para> + </remarks> + </member> + <member name="M:log4net.NDC.Pop"> + <summary> + Removes the top context from the stack. + </summary> + <returns> + The message in the context that was removed from the top + of the stack. + </returns> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not <c>null</c>) is returned. + </para> + </remarks> + </member> + <member name="M:log4net.NDC.Push(System.String)"> + <summary> + Pushes a new context message. + </summary> + <param name="message">The new context message.</param> + <returns> + An <see cref="T:System.IDisposable"/> that can be used to clean up + the context stack. + </returns> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + Pushes a new context onto the context stack. An <see cref="T:System.IDisposable"/> + is returned that can be used to clean up the context stack. This + can be easily combined with the <c>using</c> keyword to scope the + context. + </para> + </remarks> + <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword. + <code lang="C#"> + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + </code> + </example> + </member> + <member name="M:log4net.NDC.Remove"> + <summary> + Removes the context information for this thread. It is + not required to call this method. + </summary> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + This method is not implemented. + </para> + </remarks> + </member> + <member name="M:log4net.NDC.SetMaxDepth(System.Int32)"> + <summary> + Forces the stack depth to be at most <paramref name="maxDepth"/>. + </summary> + <param name="maxDepth">The maximum depth of the stack</param> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + Forces the stack depth to be at most <paramref name="maxDepth"/>. + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + </para> + </remarks> + </member> + <member name="P:log4net.NDC.Depth"> + <summary> + Gets the current context depth. + </summary> + <value>The current context depth.</value> + <remarks> + <note> + <para> + The NDC is deprecated and has been replaced by the <see cref="P:log4net.ThreadContext.Stacks"/>. + The current NDC implementation forwards to the <c>ThreadContext.Stacks["NDC"]</c>. + </para> + </note> + <para> + The number of context values pushed onto the context stack. + </para> + <para> + Used to record the current depth of the context. This can then + be restored using the <see cref="M:log4net.NDC.SetMaxDepth(System.Int32)"/> method. + </para> + </remarks> + <seealso cref="M:log4net.NDC.SetMaxDepth(System.Int32)"/> + </member> + <member name="T:log4net.ThreadContext"> + <summary> + The log4net Thread Context. + </summary> + <remarks> + <para> + The <c>ThreadContext</c> provides a location for thread specific debugging + information to be stored. + The <c>ThreadContext</c> properties override any <see cref="T:log4net.GlobalContext"/> + properties with the same name. + </para> + <para> + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The <see cref="T:log4net.Layout.PatternLayout"/> + supports selecting and outputting these properties. + </para> + <para> + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + </para> + <para> + The Thread Context is managed on a per thread basis. + </para> + </remarks> + <example>Example of using the thread context properties to store a username. + <code lang="C#"> + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + </code> + </example> + <example>Example of how to push a message into the context stack + <code lang="C#"> + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + </code> + </example> + <threadsafety static="true" instance="true"/> + <author>Nicko Cadell</author> + </member> + <member name="M:log4net.ThreadContext.#ctor"> + <summary> + Private Constructor. + </summary> + <remarks> + <para> + Uses a private access modifier to prevent instantiation of this class. + </para> + </remarks> + </member> + <member name="F:log4net.ThreadContext.s_properties"> + <summary> + The thread context properties instance + </summary> + </member> + <member name="F:log4net.ThreadContext.s_stacks"> + <summary> + The thread context stacks instance + </summary> + </member> + <member name="P:log4net.ThreadContext.Properties"> + <summary> + The thread properties map + </summary> + <value> + The thread properties map + </value> + <remarks> + <para> + The <c>ThreadContext</c> properties override any <see cref="T:log4net.GlobalContext"/> + properties with the same name. + </para> + </remarks> + </member> + <member name="P:log4net.ThreadContext.Stacks"> + <summary> + The thread stacks + </summary> + <value> + stack map + </value> + <remarks> + <para> + The thread local stacks. + </para> + </remarks> + </member> + </members> +</doc>