You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/08/26 09:16:34 UTC
[30/50] ignite git commit: IGNITE-3279 .NET: NLog logger
IGNITE-3279 .NET: NLog logger
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c763e514
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c763e514
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c763e514
Branch: refs/heads/ignite-3443
Commit: c763e514453865bf8148b914735a9560e12eb587
Parents: 354318a
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Tue Aug 23 13:28:40 2016 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Tue Aug 23 13:28:40 2016 +0300
----------------------------------------------------------------------
.../Apache.Ignite.Core.Tests.NuGet.csproj | 18 +-
.../Apache.Ignite.Core.Tests.NuGet/NLogTest.cs | 82 +++++++++
.../packages.config | 14 +-
.../Apache.Ignite.Core.Tests.csproj | 8 +
.../IgniteConfigurationSerializerTest.cs | 3 +-
.../Log/NLogLoggerTest.cs | 166 +++++++++++++++++++
.../Apache.Ignite.NLog.csproj | 74 +++++++++
.../Apache.Ignite.NLog.nuspec | 50 ++++++
.../Apache.Ignite.NLog/Apache.Ignite.NLog.snk | Bin 0 -> 596 bytes
.../Apache.Ignite.NLog/IgniteNLogLogger.cs | 125 ++++++++++++++
.../Properties/AssemblyInfo.cs | 40 +++++
.../dotnet/Apache.Ignite.NLog/packages.config | 4 +
modules/platforms/dotnet/Apache.Ignite.sln | 14 ++
13 files changed, 586 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
index 84f4b58..d9606a1 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
@@ -72,17 +72,26 @@
<ItemGroup>
<Reference Include="Apache.Ignite.Core">
<SpecificVersion>False</SpecificVersion>
- <HintPath>packages\Apache.Ignite.1.6.0\lib\net40\Apache.Ignite.Core.dll</HintPath>
+ <HintPath>packages\Apache.Ignite.1.8.0\lib\net40\Apache.Ignite.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Apache.Ignite.Linq">
<SpecificVersion>False</SpecificVersion>
- <HintPath>packages\Apache.Ignite.Linq.1.6.0\lib\net40\Apache.Ignite.Linq.dll</HintPath>
+ <HintPath>packages\Apache.Ignite.Linq.1.8.0\lib\net40\Apache.Ignite.Linq.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Apache.Ignite.AspNet">
<SpecificVersion>False</SpecificVersion>
- <HintPath>packages\Apache.Ignite.AspNet.1.6.0\lib\net40\Apache.Ignite.AspNet.dll</HintPath>
+ <HintPath>packages\Apache.Ignite.AspNet.1.8.0\lib\net40\Apache.Ignite.AspNet.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="Apache.Ignite.NLog">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>packages\Apache.Ignite.NLog.1.8.0\lib\net40\Apache.Ignite.NLog.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
+ <HintPath>packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="nunit-console-runner, Version=2.6.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
@@ -104,6 +113,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="NLogTest.cs" />
<Compile Include="AspNetTest.cs" />
<Compile Include="ComputeTest.cs" />
<Compile Include="SchemaTest.cs" />
@@ -133,7 +143,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>if not exist "$(TargetDir)Libs" md "$(TargetDir)Libs"
-xcopy /s /y "$(SolutionDir)packages\Apache.Ignite.1.6.0\Libs\*.*" "$(TargetDir)Libs"</PostBuildEvent>
+xcopy /s /y "$(SolutionDir)packages\Apache.Ignite.1.8.0\Libs\*.*" "$(TargetDir)Libs"</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NLogTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NLogTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NLogTest.cs
new file mode 100644
index 0000000..d3c58e1
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NLogTest.cs
@@ -0,0 +1,82 @@
+\ufeff/*
+ * 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.
+ */
+
+namespace Apache.Ignite.Core.Tests.NuGet
+{
+ using System.Linq;
+ using Apache.Ignite.NLog;
+ using global::NLog;
+ using global::NLog.Config;
+ using global::NLog.Layouts;
+ using global::NLog.Targets;
+ using NUnit.Framework;
+
+ /// <summary>
+ /// NLog test.
+ /// </summary>
+ public class NLogTest
+ {
+ /// <summary>
+ /// The log target.
+ /// </summary>
+ private MemoryTarget _logTarget;
+
+ /// <summary>
+ /// Test set up.
+ /// </summary>
+ [SetUp]
+ public void SetUp()
+ {
+ var cfg = new LoggingConfiguration();
+
+ _logTarget = new MemoryTarget("mem")
+ {
+ Layout = new SimpleLayout("${Logger}|${Level}|${Message}|${exception}|${all-event-properties}")
+ };
+
+ cfg.AddTarget(_logTarget);
+
+ cfg.AddRule(LogLevel.Trace, LogLevel.Error, _logTarget);
+
+ LogManager.Configuration = cfg;
+ }
+
+ /// <summary>
+ /// Tests the logger with Ignite.
+ /// </summary>
+ [Test]
+ public void TestIgniteStartup()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ DiscoverySpi = TestUtil.GetLocalDiscoverySpi(),
+ Logger = new IgniteNLogLogger(LogManager.GetCurrentClassLogger())
+ };
+
+ using (Ignition.Start(cfg))
+ {
+ Assert.IsTrue(_logTarget.Logs.Contains(
+ string.Format("|Debug|Starting Ignite.NET {0}||", typeof(Ignition).Assembly.GetName().Version)));
+
+ Assert.IsTrue(_logTarget.Logs.Any(x => x.Contains(">>> Topology snapshot.")));
+ }
+
+ Assert.IsTrue(_logTarget.Logs.Contains(
+ "org.apache.ignite.internal.IgniteKernal|Debug|Grid is stopping.||"));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
index bc1aba7..30e71a1 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
@@ -1,5 +1,4 @@
\ufeff<?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
@@ -16,12 +15,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<packages>
- <package id="Apache.Ignite" version="1.6.0" targetFramework="net40" />
- <package id="Apache.Ignite.Linq" version="1.6.0" targetFramework="net40" />
- <package id="Apache.Ignite.AspNet" version="1.6.0" targetFramework="net40" />
- <package id="Apache.Ignite.Schema" version="1.6.0" targetFramework="net40" />
- <package id="Remotion.Linq" version="2.0.1" targetFramework="net40" />
+ <package id="Apache.Ignite" version="1.8.0" targetFramework="net40" />
+ <package id="Apache.Ignite.AspNet" version="1.8.0" targetFramework="net40" />
+ <package id="Apache.Ignite.Linq" version="1.8.0" targetFramework="net40" />
+ <package id="Apache.Ignite.NLog" version="1.8.0" targetFramework="net40" />
+ <package id="Apache.Ignite.Schema" version="1.8.0" targetFramework="net40" />
+ <package id="NLog" version="4.3.7" targetFramework="net40" />
<package id="NUnit.Runners" version="2.6.3" targetFramework="net40" />
+ <package id="Remotion.Linq" version="2.0.1" targetFramework="net40" />
</packages>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
index 647d82d..1d7b245 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
@@ -38,6 +38,9 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
+ <Reference Include="NLog">
+ <HintPath>..\packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath>
+ </Reference>
<Reference Include="nunit-console-runner, Version=2.6.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\NUnit.Runners.2.6.3\tools\lib\nunit-console-runner.dll</HintPath>
@@ -69,6 +72,7 @@
<Compile Include="Collections\ReadOnlyDictionaryTest.cs" />
<Compile Include="Common\IgniteGuidTest.cs" />
<Compile Include="Log\DefaultLoggerTest.cs" />
+ <Compile Include="Log\NLogLoggerTest.cs" />
<Compile Include="TestAppConfig.cs" />
<Compile Include="AspNet\IgniteOutputCacheProviderTest.cs" />
<Compile Include="Binary\BinaryBuilderSelfTestFullFooter.cs" />
@@ -194,6 +198,10 @@
<Project>{5b571661-17f4-4f29-8c7d-0edb38ca9b55}</Project>
<Name>Apache.Ignite.Linq</Name>
</ProjectReference>
+ <ProjectReference Include="..\Apache.Ignite.NLog\Apache.Ignite.NLog.csproj">
+ <Project>{C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}</Project>
+ <Name>Apache.Ignite.NLog</Name>
+ </ProjectReference>
<ProjectReference Include="..\Apache.Ignite\Apache.Ignite.csproj">
<Project>{27F7F3C6-BDDE-43A9-B565-856F8395A04B}</Project>
<Name>Apache.Ignite</Name>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
index 7ba1897..8a5c7b4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
@@ -48,6 +48,7 @@ namespace Apache.Ignite.Core.Tests
using Apache.Ignite.Core.Log;
using Apache.Ignite.Core.Tests.Binary;
using Apache.Ignite.Core.Transactions;
+ using Apache.Ignite.NLog;
using NUnit.Framework;
/// <summary>
@@ -712,7 +713,7 @@ namespace Apache.Ignite.Core.Tests
},
IsLateAffinityAssignment = false,
SpringConfigUrl = "test",
- Logger = new TestLogger()
+ Logger = new IgniteNLogLogger()
};
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Log/NLogLoggerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Log/NLogLoggerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Log/NLogLoggerTest.cs
new file mode 100644
index 0000000..7806ecd
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Log/NLogLoggerTest.cs
@@ -0,0 +1,166 @@
+\ufeff/*
+ * 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.
+ */
+
+namespace Apache.Ignite.Core.Tests.Log
+{
+ using System;
+ using System.Globalization;
+ using System.Linq;
+ using Apache.Ignite.Core.Log;
+ using Apache.Ignite.NLog;
+ using global::NLog;
+ using global::NLog.Config;
+ using global::NLog.Layouts;
+ using global::NLog.Targets;
+ using NUnit.Framework;
+ using LogLevel = Apache.Ignite.Core.Log.LogLevel;
+
+ /// <summary>
+ /// Tests the NLog integration.
+ /// </summary>
+ public class NLogLoggerTest
+ {
+ /** */
+ private MemoryTarget _logTarget;
+
+ /// <summary>
+ /// Test set up.
+ /// </summary>
+ [SetUp]
+ public void SetUp()
+ {
+ var cfg = new LoggingConfiguration();
+
+ _logTarget = new MemoryTarget("mem")
+ {
+ Layout = new SimpleLayout("${Logger}|${Level}|${Message}|${exception}|${all-event-properties}")
+ };
+
+ cfg.AddTarget(_logTarget);
+
+ cfg.AddRule(global::NLog.LogLevel.Trace, global::NLog.LogLevel.Error, _logTarget);
+
+ LogManager.Configuration = cfg;
+ }
+
+ /// <summary>
+ /// Tests the log level conversion.
+ /// </summary>
+ [Test]
+ public void TestLogLevelConversion()
+ {
+ var levels = new[] { LogLevel.Trace, LogLevel.Info, LogLevel.Debug, LogLevel.Warn, LogLevel.Error };
+
+ var nLogger = new IgniteNLogLogger(LogManager.GetCurrentClassLogger());
+
+ foreach (var igniteLevel in levels)
+ {
+ var nlogLevel = IgniteNLogLogger.ConvertLogLevel(igniteLevel);
+
+ Assert.AreEqual(igniteLevel.ToString(), nlogLevel.ToString());
+
+
+ Assert.IsTrue(nLogger.IsEnabled(igniteLevel));
+ }
+ }
+
+ /// <summary>
+ /// Tests the logger in isolated environment.
+ /// </summary>
+ [Test]
+ public void TestLogging()
+ {
+ var nLogger = new IgniteNLogLogger();
+
+ // All parameters.
+ nLogger.Log(LogLevel.Trace, "msg{0}", new object[] {1}, CultureInfo.InvariantCulture, "category",
+ "java-err", new Exception("myException"));
+
+ Assert.AreEqual("category|Trace|msg1|myException|nativeErrorInfo=java-err", GetLastLog());
+
+ // No Java error.
+ nLogger.Log(LogLevel.Info, "msg{0}", new object[] { 1 }, CultureInfo.InvariantCulture, "category",
+ null, new Exception("myException"));
+
+ Assert.AreEqual("category|Info|msg1|myException|", GetLastLog());
+
+ // No exception.
+ nLogger.Log(LogLevel.Debug, "msg{0}", new object[] { 1 }, CultureInfo.InvariantCulture, "category",
+ null, null);
+
+ Assert.AreEqual("category|Debug|msg1||", GetLastLog());
+
+ // No params.
+ nLogger.Log(LogLevel.Warn, "msg{0}", null, CultureInfo.InvariantCulture, "category", null, null);
+
+ Assert.AreEqual("category|Warn|msg{0}||", GetLastLog());
+
+ // No formatter.
+ nLogger.Log(LogLevel.Error, "msg{0}", null, null, "category", null, null);
+
+ Assert.AreEqual("category|Error|msg{0}||", GetLastLog());
+
+ // No category.
+ nLogger.Log(LogLevel.Error, "msg{0}", null, null, null, null, null);
+
+ Assert.AreEqual("|Error|msg{0}||", GetLastLog());
+
+ // No message.
+ nLogger.Log(LogLevel.Error, null, null, null, null, null, null);
+
+ Assert.AreEqual("|Error|||", GetLastLog());
+ }
+
+ /// <summary>
+ /// Tests the logger with Ignite.
+ /// </summary>
+ [Test]
+ public void TestIgniteStartup()
+ {
+ var cfg = new IgniteConfiguration(TestUtils.GetTestConfiguration())
+ {
+ Logger = new IgniteNLogLogger(LogManager.GetLogger("foo"))
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Assert.IsTrue(_logTarget.Logs.Contains(
+ string.Format("|Debug|Starting Ignite.NET {0}||", typeof(Ignition).Assembly.GetName().Version)));
+
+ Assert.IsTrue(_logTarget.Logs.Any(x => x.Contains(">>> Topology snapshot.")));
+
+ Assert.IsInstanceOf<IgniteNLogLogger>(ignite.Logger);
+
+ ignite.Logger.Info("Log from user code.");
+
+ Assert.IsTrue(_logTarget.Logs.Contains("|Info|Log from user code.||"));
+ }
+
+ Assert.IsTrue(_logTarget.Logs.Contains(
+ "org.apache.ignite.internal.IgniteKernal|Debug|Grid is stopping.||"));
+ }
+
+ /// <summary>
+ /// Gets the last log.
+ /// </summary>
+ private string GetLastLog()
+ {
+ return _logTarget.Logs.Last();
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.csproj b/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.csproj
new file mode 100644
index 0000000..c8d8705
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.csproj
@@ -0,0 +1,74 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Apache.Ignite.NLog</RootNamespace>
+ <AssemblyName>Apache.Ignite.NLog</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>Apache.Ignite.NLog.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
+ <HintPath>..\packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="IgniteNLogLogger.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Apache.Ignite.Core\Apache.Ignite.Core.csproj">
+ <Project>{4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}</Project>
+ <Name>Apache.Ignite.Core</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Apache.Ignite.NLog.snk" />
+ <None Include="Apache.Ignite.NLog.nuspec" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.nuspec
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.nuspec b/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.nuspec
new file mode 100644
index 0000000..765e26f
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.nuspec
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+
+<!--
+ 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.
+-->
+
+<!--
+
+Creating NuGet package:
+1) Build Apache.Ignite.sln (AnyCPU configuration)
+2) Create package (use csproj instead of nuspec so that template substitution works):
+ nuget pack Apache.Ignite.NLog.csproj -Prop Configuration=Release -Prop Platform=AnyCPU
+
+-->
+
+<package >
+ <metadata>
+ <id>Apache.Ignite.NLog</id>
+ <title>Apache Ignite NLog Logger</title>
+ <!-- -->
+ <version>$version$</version>
+ <authors>Apache Ignite</authors>
+ <owners>Apache Software Foundation</owners>
+ <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
+ <projectUrl>https://ignite.apache.org/</projectUrl>
+ <iconUrl>https://ignite.apache.org/images/logo_ignite_32_32.png</iconUrl>
+ <requireLicenseAcceptance>false</requireLicenseAcceptance>
+ <description>NLog Logger for Apache Ignite</description>
+ <releaseNotes></releaseNotes>
+ <copyright>Copyright 2016</copyright>
+ <tags>Apache Ignite In-Memory Distributed Computing SQL NoSQL LINQ Grid Map Reduce Cache NLog logger</tags>
+ <dependencies>
+ <dependency id="Apache.Ignite" version="[$version$]" />
+ <dependency id="NLog" version="[4.0.0, 5.0.0)" />
+ </dependencies>
+ </metadata>
+</package>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.snk
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.snk b/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.snk
new file mode 100644
index 0000000..799e742
Binary files /dev/null and b/modules/platforms/dotnet/Apache.Ignite.NLog/Apache.Ignite.NLog.snk differ
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.NLog/IgniteNLogLogger.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.NLog/IgniteNLogLogger.cs b/modules/platforms/dotnet/Apache.Ignite.NLog/IgniteNLogLogger.cs
new file mode 100644
index 0000000..2730e37
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.NLog/IgniteNLogLogger.cs
@@ -0,0 +1,125 @@
+\ufeff/*
+ * 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.
+ */
+
+namespace Apache.Ignite.NLog
+{
+ using System;
+ using Apache.Ignite.Core.Impl.Common;
+ using global::NLog;
+ using ILogger = Apache.Ignite.Core.Log.ILogger;
+ using IgniteLogLevel = Apache.Ignite.Core.Log.LogLevel;
+ using NLogLogLevel = global::NLog.LogLevel;
+
+ /// <summary>
+ /// Ignite NLog integration.
+ /// </summary>
+ public class IgniteNLogLogger : ILogger
+ {
+ /// <summary>
+ /// The NLog logger.
+ /// </summary>
+ private readonly Logger _logger;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="IgniteNLogLogger"/> class using the
+ /// <see cref="LogManager.GetCurrentClassLogger()"/> to retrieve the NLog logger.
+ /// </summary>
+ public IgniteNLogLogger() : this(LogManager.GetCurrentClassLogger())
+ {
+ // No-op.
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="IgniteNLogLogger"/> class.
+ /// </summary>
+ /// <param name="logger">The NLog logger instance.</param>
+ public IgniteNLogLogger(Logger logger)
+ {
+ IgniteArgumentCheck.NotNull(logger, "logger");
+
+ _logger = logger;
+ }
+
+ /// <summary>
+ /// Logs the specified message.
+ /// </summary>
+ /// <param name="level">The level.</param>
+ /// <param name="message">The message.</param>
+ /// <param name="args">The arguments to format <paramref name="message" />.
+ /// Can be null (formatting will not occur).</param>
+ /// <param name="formatProvider">The format provider. Can be null if <paramref name="args" /> is null.</param>
+ /// <param name="category">The logging category name.</param>
+ /// <param name="nativeErrorInfo">The native error information.</param>
+ /// <param name="ex">The exception. Can be null.</param>
+ /// <exception cref="System.NotImplementedException"></exception>
+ public void Log(IgniteLogLevel level, string message, object[] args, IFormatProvider formatProvider,
+ string category, string nativeErrorInfo, Exception ex)
+ {
+ var logEvent = new LogEventInfo
+ {
+ Level = ConvertLogLevel(level),
+ Message = message,
+ FormatProvider = formatProvider,
+ Parameters = args,
+ Exception = ex,
+ LoggerName = category
+ };
+
+ if (nativeErrorInfo != null)
+ logEvent.Properties.Add("nativeErrorInfo", nativeErrorInfo);
+
+ _logger.Log(logEvent);
+ }
+
+ /// <summary>
+ /// Determines whether the specified log level is enabled.
+ /// </summary>
+ /// <param name="level">The level.</param>
+ /// <returns>
+ /// Value indicating whether the specified log level is enabled
+ /// </returns>
+ /// <exception cref="System.NotImplementedException"></exception>
+ public bool IsEnabled(IgniteLogLevel level)
+ {
+ return _logger.IsEnabled(ConvertLogLevel(level));
+ }
+
+ /// <summary>
+ /// Converts the Ignite LogLevel to the NLog log level.
+ /// </summary>
+ /// <param name="level">The Ignite log level.</param>
+ /// <returns>Corresponding NLog log level.</returns>
+ public static NLogLogLevel ConvertLogLevel(IgniteLogLevel level)
+ {
+ switch (level)
+ {
+ case IgniteLogLevel.Trace:
+ return NLogLogLevel.Trace;
+ case IgniteLogLevel.Debug:
+ return NLogLogLevel.Debug;
+ case IgniteLogLevel.Info:
+ return NLogLogLevel.Info;
+ case IgniteLogLevel.Warn:
+ return NLogLogLevel.Warn;
+ case IgniteLogLevel.Error:
+ return NLogLogLevel.Error;
+ default:
+ throw new ArgumentOutOfRangeException("level", level, "Invalid Ignite LogLevel.");
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.NLog/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.NLog/Properties/AssemblyInfo.cs b/modules/platforms/dotnet/Apache.Ignite.NLog/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..6603836
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.NLog/Properties/AssemblyInfo.cs
@@ -0,0 +1,40 @@
+\ufeff/*
+* 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.
+*/
+
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Apache.Ignite.NLog")]
+[assembly: AssemblyDescription("Apache Ignite.NET NLog integration.")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Apache Software Foundation")]
+[assembly: AssemblyProduct("Apache Ignite.NET")]
+[assembly: AssemblyCopyright("Copyright � 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c6b58e4a-a2e9-4554-ad02-68ce6da5cfb7")]
+
+[assembly: AssemblyVersion("1.8.0.13244")]
+[assembly: AssemblyFileVersion("1.8.0.13244")]
+[assembly: AssemblyInformationalVersion("1.8.0")]
+
+[assembly: CLSCompliant(true)]
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.NLog/packages.config
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.NLog/packages.config b/modules/platforms/dotnet/Apache.Ignite.NLog/packages.config
new file mode 100644
index 0000000..50aeb52
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.NLog/packages.config
@@ -0,0 +1,4 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="NLog" version="4.3.7" targetFramework="net40" />
+</packages>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c763e514/modules/platforms/dotnet/Apache.Ignite.sln
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.sln b/modules/platforms/dotnet/Apache.Ignite.sln
index 2362ce2..b2dd535 100644
--- a/modules/platforms/dotnet/Apache.Ignite.sln
+++ b/modules/platforms/dotnet/Apache.Ignite.sln
@@ -36,6 +36,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Linq", "Apach
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.AspNet", "Apache.Ignite.AspNet\Apache.Ignite.AspNet.csproj", "{13EA96FC-CC83-4164-A7C0-4F30ED797460}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.NLog", "Apache.Ignite.NLog\Apache.Ignite.NLog.csproj", "{C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -174,6 +176,18 @@ Global
{13EA96FC-CC83-4164-A7C0-4F30ED797460}.Release|x64.Build.0 = Release|Any CPU
{13EA96FC-CC83-4164-A7C0-4F30ED797460}.Release|x86.ActiveCfg = Release|Any CPU
{13EA96FC-CC83-4164-A7C0-4F30ED797460}.Release|x86.Build.0 = Release|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Debug|x64.Build.0 = Debug|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Debug|x86.Build.0 = Debug|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Release|x64.ActiveCfg = Release|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Release|x64.Build.0 = Release|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Release|x86.ActiveCfg = Release|Any CPU
+ {C6B58E4A-A2E9-4554-AD02-68CE6DA5CFB7}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE