Implemented changes for the Util/AppenderAttachedImpl.cs class for calling log4net appenders in parallel using .NET Task Parallel Library.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4net/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4net/commit/897ef682 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4net/tree/897ef682 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4net/diff/897ef682 Branch: refs/heads/pr/old/40 Commit: 897ef682bebbc44da53812fa4001d0132e80a84a Parents: 76f0151 Author: Harry Martyrossian <[email protected]> Authored: Fri Dec 30 20:32:41 2016 -0800 Committer: Dominik Psenner <[email protected]> Committed: Thu Jun 22 22:37:13 2017 +0200 ---------------------------------------------------------------------- src/Util/AppenderAttachedImpl.cs | 54 +- src/Util/ParallelIAppender.cs | 214 ++++++++ src/log4net.vs2015.csproj | 809 +++++++++++++++++++++++++++++ src/log4net.vs2015.sln | 27 + tests/src/log4net.Tests.vs2015.csproj | 260 +++++++++ 5 files changed, 1343 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/897ef682/src/Util/AppenderAttachedImpl.cs ---------------------------------------------------------------------- diff --git a/src/Util/AppenderAttachedImpl.cs b/src/Util/AppenderAttachedImpl.cs index fafb0b8..9da44c2 100644 --- a/src/Util/AppenderAttachedImpl.cs +++ b/src/Util/AppenderAttachedImpl.cs @@ -85,18 +85,20 @@ namespace log4net.Util m_appenderArray = m_appenderList.ToArray(); } - foreach(IAppender appender in m_appenderArray) + int count = m_appenderArray.Length; + for (int i = 0; i < count; ++i) { try { - appender.DoAppend(loggingEvent); + m_appenderArray[i].DoAppend(loggingEvent); } catch(Exception ex) { - LogLog.Error(declaringType, "Failed to append to appender [" + appender.Name + "]", ex); + LogLog.Error(declaringType, "Failed to append to appender [" + m_appenderArray[i].Name + "]", ex); } } - return m_appenderList.Count; + + return count; } /// <summary> @@ -153,9 +155,9 @@ namespace log4net.Util #endregion Public Instance Methods - #region Private Static Methods + #region Private Static Methods - /// <summary> + /// <summary> /// Calls the DoAppende method on the <see cref="IAppender"/> with /// the <see cref="LoggingEvent"/> objects supplied. /// </summary> @@ -183,13 +185,13 @@ namespace log4net.Util appender.DoAppend(loggingEvent); } } - } + } - #endregion + #endregion - #region Implementation of IAppenderAttachable + #region Implementation of IAppenderAttachable - /// <summary> + /// <summary> /// Attaches an appender. /// </summary> /// <param name="newAppender">The appender to add.</param> @@ -211,10 +213,19 @@ namespace log4net.Util { m_appenderList = new AppenderCollection(1); } + +#if (NET_4_5 && PARALLEL_APPENDERS) + var newParallelIAppender = new ParallelIAppender(newAppender); + if (!m_appenderList.Contains(newParallelIAppender)) + { + m_appenderList.Add(newParallelIAppender); + } +#else if (!m_appenderList.Contains(newAppender)) { m_appenderList.Add(newAppender); } +#endif } /// <summary> @@ -270,7 +281,8 @@ namespace log4net.Util } } } - return null; + + return null; } /// <summary> @@ -360,17 +372,17 @@ namespace log4net.Util #endregion Private Instance Fields - #region Private Static Fields + #region Private Static Fields - /// <summary> - /// The fully qualified type of the AppenderAttachedImpl class. - /// </summary> - /// <remarks> - /// Used by the internal logger to record the Type of the - /// log message. - /// </remarks> - private readonly static Type declaringType = typeof(AppenderAttachedImpl); + /// <summary> + /// The fully qualified type of the AppenderAttachedImpl class. + /// </summary> + /// <remarks> + /// Used by the internal logger to record the Type of the + /// log message. + /// </remarks> + private readonly static Type declaringType = typeof(AppenderAttachedImpl); - #endregion Private Static Fields + #endregion Private Static Fields } } http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/897ef682/src/Util/ParallelIAppender.cs ---------------------------------------------------------------------- diff --git a/src/Util/ParallelIAppender.cs b/src/Util/ParallelIAppender.cs new file mode 100644 index 0000000..81b3860 --- /dev/null +++ b/src/Util/ParallelIAppender.cs @@ -0,0 +1,214 @@ +#region Apache License +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to you under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#endregion + +#if (NET_4_5 && PARALLEL_APPENDERS) + +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using log4net.Appender; +using log4net.Core; + +namespace log4net.Util +{ + /// <summary> + /// This class allows AppenderAttachedImpl class to call appenders in "parallel". + /// </summary> + /// <remarks> + /// <para> + /// By implementing <see cref="IAppender"/> interface + /// allows AppenderAttacedImpl to call appenders in "parallel". + /// That allows to mitigate performance impedance between appenders and + /// provides better overall performance. + /// </para> + /// </remarks> + /// <author>Harry Martyrossian</author> + public class ParallelIAppender : IAppender + { + private static readonly Type declaringType = typeof(ParallelIAppender); + private IAppender appender; + private object synchObject = new object(); + private PulseCode pulseCode = PulseCode.NotSignaled; + private Queue<LoggingEvent> events = new Queue<LoggingEvent>(); + private LoggingEvent[] arrayOfEvents; + private Task appenderTask; + + #region Public Instance Constructors + /// <summary> + /// Constructor + /// </summary> + /// <remarks> + /// <para> + /// Initializes a new instance of the <see cref="ParallelIAppender"/> class. + /// </para> + /// </remarks> + public ParallelIAppender(IAppender appender) + { + this.appender = appender; + this.appenderTask = Task.Run(() => this.Append()); + } + #endregion Public Instance Constructors + + [Flags] + internal enum PulseCode : int + { + NotSignaled, + QueueIsNotEmpty, + ExitThread + } + + #region Override implementation of Object + /// <summary> + /// Determines whether two <see cref="ParallelIAppender" /> instances + /// are equal. + /// </summary> + /// <param name="obj">The <see cref="object" /> to compare with the current <see cref="ParallelIAppender" />.</param> + /// <returns> + /// <c>true</c> if the specified <see cref="object" /> is equal to the current <see cref="ParallelIAppender" />; otherwise, <c>false</c>. + /// </returns> + /// <remarks> + /// <para> + /// Compares the implementations of <see cref="IAppender" /> interface. + /// </para> + /// </remarks> + public override bool Equals(object obj) + { + return this.Equals(obj as ParallelIAppender); + } + + /// <summary> + /// Compares implementations of IAppender interface. + /// </summary> + /// <param name="obj">The object to compare against.</param> + /// <returns><c>true</c> if the objects are equal.</returns> + /// <remarks> + /// <para> + /// Compares implementations of <see cref="IAppender" /> interface, and + /// defers to base class if the target object is not a <see cref="ParallelIAppender" /> + /// instance. + /// </para> + /// </remarks> + public virtual bool Equals(ParallelIAppender obj) + { + if (obj == null) + { + return false; + } + return this.appender.Equals(obj); + } + + /// <summary> + /// Returns a hash code + /// </summary> + /// <returns>A hash code for the current implementation of the <see cref="IAppender" /> interface.</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 <see cref="IAppender"/> interface implementation. + /// </para> + /// </remarks> + public override int GetHashCode() + { + return this.appender.GetHashCode(); + } + #endregion Override implementation of Object + + #region Implementation of IAppender + string IAppender.Name + { + get + { + return this.appender.Name; + } + set + { + this.appender.Name = value; + } + } + + void IAppender.Close() + { + lock (this.synchObject) + { + this.pulseCode |= PulseCode.ExitThread; + Monitor.Pulse(this.synchObject); + } + this.appenderTask.Wait(); + this.appender.Close(); + } + + void IAppender.DoAppend(LoggingEvent loggingEvent) + { + lock (this.synchObject) + { + this.events.Enqueue(loggingEvent); + this.pulseCode |= PulseCode.QueueIsNotEmpty; + Monitor.Pulse(this.synchObject); + } + } + #endregion Implementation of IAppender + + private void Append() + { + bool keepRunning = true; + do + { + lock (this.synchObject) + { + if (this.pulseCode == PulseCode.NotSignaled) + { + Monitor.Wait(this.synchObject); + } + if ((this.pulseCode & PulseCode.QueueIsNotEmpty) == PulseCode.QueueIsNotEmpty) + { + this.pulseCode ^= PulseCode.QueueIsNotEmpty; + } + if ((this.pulseCode & PulseCode.ExitThread) == PulseCode.ExitThread) + { + this.pulseCode ^= PulseCode.ExitThread; + keepRunning = false; + } + this.CopyEvents(); + } + this.CallDoAppend(); + } + while (keepRunning); + } + + private void CopyEvents() + { + this.arrayOfEvents = this.events.ToArray(); + this.events.Clear(); + } + + private void CallDoAppend() + { + var length = this.arrayOfEvents.Length; + for (int i = 0; i < length; ++i) + { + this.appender.DoAppend(this.arrayOfEvents[i]); + } + } + } +} +#endif http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/897ef682/src/log4net.vs2015.csproj ---------------------------------------------------------------------- diff --git a/src/log4net.vs2015.csproj b/src/log4net.vs2015.csproj new file mode 100644 index 0000000..9594046 --- /dev/null +++ b/src/log4net.vs2015.csproj @@ -0,0 +1,809 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0"> + <PropertyGroup> + <ProjectType>Local</ProjectType> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{181FE707-E161-4722-9F38-6AAAB6FAA106}</ProjectGuid> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ApplicationIcon> + </ApplicationIcon> + <AssemblyKeyContainerName> + </AssemblyKeyContainerName> + <AssemblyName>log4net</AssemblyName> + <AssemblyOriginatorKeyFile> + </AssemblyOriginatorKeyFile> + <DefaultClientScript>JScript</DefaultClientScript> + <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> + <DefaultTargetSchema>IE50</DefaultTargetSchema> + <DelaySign>false</DelaySign> + <OutputType>Library</OutputType> + <RootNamespace>log4net</RootNamespace> + <StartupObject> + </StartupObject> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <OldToolsVersion>3.5</OldToolsVersion> + <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <OutputPath>..\build\bin\net\4.5\debug\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE;DEBUG;NET;NET_2_0;NET_4_0;NET_4_5;PARALLEL_APPENDERS;</DefineConstants> + <DocumentationFile>log4net.xml</DocumentationFile> + <DebugSymbols>true</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <Optimize>false</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>full</DebugType> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>SecurityRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <OutputPath>..\build\bin\net\4.5\release\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE;STRONG;NET;NET_2_0;NET_4_0;NET_4_5;PARALLEL_APPENDERS;</DefineConstants> + <DocumentationFile>log4net.xml</DocumentationFile> + <DebugSymbols>false</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <Optimize>true</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>none</DebugType> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <ItemGroup> + <Reference Include="System"> + <Name>System</Name> + </Reference> + <Reference Include="System.configuration" /> + <Reference Include="System.Data"> + <Name>System.Data</Name> + </Reference> + <Reference Include="System.Web"> + <Name>System.Web</Name> + </Reference> + <Reference Include="System.Xml"> + <Name>System.XML</Name> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="Appender\AdoNetAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\AnsiColorTerminalAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\AppenderCollection.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\AppenderSkeleton.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\AspNetTraceAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\BufferingAppenderSkeleton.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\BufferingForwardingAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\ColoredConsoleAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\ConsoleAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\DebugAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\EventLogAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\FileAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\ForwardingAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\IAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\IBulkAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\IFlushable.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\LocalSyslogAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\ManagedColoredConsoleAppender.cs" /> + <Compile Include="Appender\MemoryAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\NetSendAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\OutputDebugStringAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\RemoteSyslogAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\RemotingAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\RollingFileAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\SmtpAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\SmtpPickupDirAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\TelnetAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\TextWriterAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\TraceAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\UdpAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="AssemblyInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="AssemblyVersionInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\AliasDomainAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\AliasRepositoryAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\BasicConfigurator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\ConfiguratorAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\DomainAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\DOMConfigurator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\DOMConfiguratorAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\Log4NetConfigurationSectionHandler.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\PluginAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\RepositoryAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\SecurityContextProviderAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\XmlConfigurator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Config\XmlConfiguratorAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\CompactRepositorySelector.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\DefaultRepositorySelector.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\ErrorCode.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\ExceptionEvaluator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\IAppenderAttachable.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\IErrorHandler.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\IFixingRequired.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\ILogger.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\ILoggerWrapper.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\IOptionHandler.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\IRepositorySelector.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\ITriggeringEventEvaluator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\Level.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LevelCollection.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LevelEvaluator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LevelMap.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LocationInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LogException.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LoggerManager.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LoggerWrapperImpl.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LoggingEvent.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\LogImpl.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\MethodItem.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\SecurityContext.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\SecurityContextProvider.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\StackFrameItem.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\TimeEvaluator.cs" /> + <Compile Include="Core\WrapperMap.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="DateFormatter\AbsoluteTimeDateFormatter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="DateFormatter\DateTimeDateFormatter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="DateFormatter\IDateFormatter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="DateFormatter\Iso8601DateFormatter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="DateFormatter\SimpleDateFormatter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\DenyAllFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\FilterDecision.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\FilterSkeleton.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\IFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\LevelMatchFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\LevelRangeFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\LoggerMatchFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\MdcFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\NdcFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\PropertyFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Filter\StringMatchFilter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="GlobalContext.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="ILog.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\DynamicPatternLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\ExceptionLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\ILayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\IRawLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Layout2RawLayoutAdapter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\LayoutSkeleton.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\PatternLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\AppDomainPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\AspNetCachePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\AspNetContextPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\AspNetPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\AspNetRequestPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\AspNetSessionPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\DatePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\ExceptionPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\FileLocationPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\FullLocationPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\IdentityPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\LevelPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\LineLocationPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\LoggerPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\MessagePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\MethodLocationPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\NamedPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\NdcPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\PatternLayoutConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\PropertyPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\RelativeTimePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\StackTraceDetailPatternConverter.cs" /> + <Compile Include="Layout\Pattern\StackTracePatternConverter.cs" /> + <Compile Include="Layout\Pattern\ThreadPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\TypeNamePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\UserNamePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\Pattern\UtcDatePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\RawLayoutConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\RawPropertyLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\RawTimeStampLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\RawUtcTimeStampLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\SimpleLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\XmlLayout.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\XmlLayoutBase.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\XmlLayoutSchemaLog4j.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="LogicalThreadContext.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="LogManager.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="MDC.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NDC.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="ObjectRenderer\DefaultRenderer.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="ObjectRenderer\IObjectRenderer.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="ObjectRenderer\RendererMap.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Plugin\IPlugin.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Plugin\IPluginFactory.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Plugin\PluginCollection.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Plugin\PluginMap.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Plugin\PluginSkeleton.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Plugin\RemoteLoggingServerPlugin.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\ConfigurationChangedEventArgs.cs" /> + <Compile Include="Repository\Hierarchy\DefaultLoggerFactory.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\Hierarchy.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\ILoggerFactory.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\Logger.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\LoggerKey.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\ProvisionNode.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\RootLogger.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\Hierarchy\XmlHierarchyConfigurator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\IBasicRepositoryConfigurator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\ILoggerRepository.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\IXmlRepositoryConfigurator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Repository\LoggerRepositorySkeleton.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="ThreadContext.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\AppenderAttachedImpl.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\CompositeProperties.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ContextPropertiesBase.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ConverterInfo.cs" /> + <Compile Include="Util\CountingQuietTextWriter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\CyclicBuffer.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\EmptyCollection.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\EmptyDictionary.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\FormattingInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\GlobalContextProperties.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ILogExtensions.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\LevelMapping.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\LevelMappingEntry.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\LogicalThreadContextProperties.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\LogLog.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\NativeError.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\NullDictionaryEnumerator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\NullEnumerator.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\NullSecurityContext.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\OnlyOnceErrorHandler.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\OptionConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ParallelIAppender.cs" /> + <Compile Include="Util\PatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternParser.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternString.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\AppDomainPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\AppSettingPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\DatePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\EnvironmentFolderPathPatternConverter.cs" /> + <Compile Include="Util\PatternStringConverters\EnvironmentPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\IdentityPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\LiteralPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\NewLinePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\ProcessIdPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\PropertyPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\RandomStringPatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\UserNamePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PatternStringConverters\UtcDatePatternConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PropertiesDictionary.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\PropertyEntry.cs" /> + <Compile Include="Util\ProtectCloseTextWriter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\QuietTextWriter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ReaderWriterLock.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ReadOnlyPropertiesDictionary.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ReusableStringWriter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\SystemInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\SystemStringFormat.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TextWriterAdapter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ThreadContextProperties.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\LogicalThreadContextStack.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ThreadContextStack.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\LogicalThreadContextStacks.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\ThreadContextStacks.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\Transform.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\BooleanConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\ConversionNotSupportedException.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\ConverterRegistry.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\EncodingConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\IConvertFrom.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\IConvertTo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\IPAddressConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\PatternLayoutConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\PatternStringConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\TypeConverter.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TypeConverters\TypeConverterAttribute.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\WindowsSecurityContext.cs"> + <SubType>Code</SubType> + </Compile> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <PropertyGroup> + <PreBuildEvent> + </PreBuildEvent> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/897ef682/src/log4net.vs2015.sln ---------------------------------------------------------------------- diff --git a/src/log4net.vs2015.sln b/src/log4net.vs2015.sln new file mode 100644 index 0000000..2612780 --- /dev/null +++ b/src/log4net.vs2015.sln @@ -0,0 +1,27 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "log4net.Tests.vs2015", "..\tests\src\log4net.Tests.vs2015.csproj", "{B0530F10-0238-49A9-93B0-8EF412E90BCF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "log4net.vs2015", "log4net.vs2015.csproj", "{181FE707-E161-4722-9F38-6AAAB6FAA106}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B0530F10-0238-49A9-93B0-8EF412E90BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B0530F10-0238-49A9-93B0-8EF412E90BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0530F10-0238-49A9-93B0-8EF412E90BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B0530F10-0238-49A9-93B0-8EF412E90BCF}.Release|Any CPU.Build.0 = Release|Any CPU + {181FE707-E161-4722-9F38-6AAAB6FAA106}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {181FE707-E161-4722-9F38-6AAAB6FAA106}.Debug|Any CPU.Build.0 = Debug|Any CPU + {181FE707-E161-4722-9F38-6AAAB6FAA106}.Release|Any CPU.ActiveCfg = Release|Any CPU + {181FE707-E161-4722-9F38-6AAAB6FAA106}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/897ef682/tests/src/log4net.Tests.vs2015.csproj ---------------------------------------------------------------------- diff --git a/tests/src/log4net.Tests.vs2015.csproj b/tests/src/log4net.Tests.vs2015.csproj new file mode 100644 index 0000000..89cd253 --- /dev/null +++ b/tests/src/log4net.Tests.vs2015.csproj @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0"> + <PropertyGroup> + <ProjectType>Local</ProjectType> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{B0530F10-0238-49A9-93B0-8EF412E90BCF}</ProjectGuid> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ApplicationIcon> + </ApplicationIcon> + <AssemblyKeyContainerName> + </AssemblyKeyContainerName> + <AssemblyName>log4net.Tests</AssemblyName> + <AssemblyOriginatorKeyFile> + </AssemblyOriginatorKeyFile> + <DefaultClientScript>JScript</DefaultClientScript> + <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> + <DefaultTargetSchema>IE50</DefaultTargetSchema> + <DelaySign>false</DelaySign> + <OutputType>Library</OutputType> + <RootNamespace>log4net.Tests</RootNamespace> + <StartupObject> + </StartupObject> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <OldToolsVersion>3.5</OldToolsVersion> + <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <OutputPath>..\bin\Debug\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE;DEBUG;NET;NET_2_0;NET_4_0;NET_4_5;</DefineConstants> + <DocumentationFile> + </DocumentationFile> + <DebugSymbols>true</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <Optimize>false</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>full</DebugType> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <OutputPath>..\bin\Release\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE;NET;NET_2_0;NET_4_0;NET_4_5</DefineConstants> + <DocumentationFile> + </DocumentationFile> + <DebugSymbols>false</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <Optimize>true</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>none</DebugType> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <ItemGroup> + <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> + <HintPath>..\..\src\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="System"> + <Name>System</Name> + </Reference> + <Reference Include="System.configuration" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data"> + <Name>System.Data</Name> + </Reference> + <Reference Include="System.Runtime.Remoting"> + <Name>System.Runtime.Remoting</Name> + </Reference> + <Reference Include="System.Xml"> + <Name>System.XML</Name> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="..\..\src\AssemblyVersionInfo.cs"> + <Link>AssemblyVersionInfo.cs</Link> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\AdoNetAppenderTest.cs" /> + <Compile Include="Appender\AdoNet\Log4NetCommand.cs" /> + <Compile Include="Appender\AdoNet\Log4NetConnection.cs" /> + <Compile Include="Appender\AdoNet\Log4NetParameter.cs" /> + <Compile Include="Appender\AdoNet\Log4NetParameterCollection.cs" /> + <Compile Include="Appender\AdoNet\Log4NetTransaction.cs" /> + <Compile Include="Appender\AppenderCollectionTest.cs" /> + <Compile Include="Appender\BufferingAppenderTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\CountingAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\EventLogAppenderTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\MemoryAppenderTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\RemotingAppenderTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\SmtpPickupDirAppenderTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\RollingFileAppenderTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\StringAppender.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Appender\TraceAppenderTest.cs" /> + <Compile Include="AssemblyInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Context\LogicalThreadContextTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Context\ThreadContextTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\EvaluatorTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\FixingTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\ShutdownTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Core\StringFormatTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Hierarchy\Hierarchy.cs" /> + <Compile Include="Hierarchy\Logger.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\DynamicPatternLayoutTest.cs" /> + <Compile Include="Layout\PatternLayoutTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Layout\XmlLayoutTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="LoggerRepository\ConfigurationMessages.cs" /> + <Compile Include="Filter\FilterTest.cs" /> + <Compile Include="Utils.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\CyclicBufferTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\EnvironmentPatternConverterTest.cs" /> + <Compile Include="Util\LogLogTest.cs" /> + <Compile Include="Util\PatternConverterTest.cs" /> + <Compile Include="Util\PatternStringTest.cs" /> + <Compile Include="Util\PropertiesDictionaryTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\RandomStringPatternConverterTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\SystemInfoTest.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Util\TransformTest.cs" /> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> + <ItemGroup> + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\src\log4net.vs2012.csproj"> + <Project>{181fe707-e161-4722-9f38-6aaab6faa106}</Project> + <Name>log4net.vs2012</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="packages.config" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <PropertyGroup> + <PreBuildEvent> + </PreBuildEvent> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file
