blob: f499124387a37d7c012af641aa55918a678ec638 [file] [log] [blame]
// 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.
= Ignite.NET Logging
== Overview
By default, Ignite uses underlying the Java log4j logging system. Log messages from both .NET and Java are recorded there.
You can also write to this log via an `IIgnite.Logger` instance:
[tabs]
--
tab:C#[]
[source,csharp]
----
var ignite = Ignition.Start();
ignite.Logger.Info("Hello World!");
----
--
`LoggerExtensions` class provides convenient shortcuts for `ILogger.Log` method.
== Custom Logger
You can provide a logger implementation via the `IgniteConfiguration.Logger` and `ILogger` interface.
Messages from both .NET and Java will be redirected there.
[tabs]
--
tab:C#[]
[source,csharp]
----
var cfg = new IgniteConfiguration
{
Logger = new MemoryLogger()
}
var ignite = Ignition.Start();
class MemoryLogger : ILogger
{
// Logger can be called from multiple threads, use concurrent collection
private readonly ConcurrentBag<string> _messages = new ConcurrentBag<string>();
public void Log(LogLevel level, string message, object[] args,
IFormatProvider formatProvider, string category,
string nativeErrorInfo, Exception ex)
{
_messages.Add(message);
}
public bool IsEnabled(LogLevel level)
{
// Accept any level.
return true;
}
}
----
tab:app.config[]
[source,xml]
----
<igniteConfiguration>
<logger type="MyNamespace.MemoryLogger, MyAssembly" />
</igniteConfiguration>
----
--
== NLog & log4net Loggers
Ignite.NET provides `ILogger` implementations for http://nlog-project.org/[NLog, window=_blank] and https://logging.apache.org/log4net/[Apache log4net, window=_blank].
They are included in the binary package (`Apache.Ignite.NLog.dll` and `Apache.Ignite.Log4Net.dll`) and can be installed via NuGet:
* `Install-Package Apache.Ignite.NLog`
* `Install-Package Apache.Ignite.Log4Net`
NLog and Log4Net use statically defined configuration, so there is nothing to configure in Ignite besides `IgniteConfiguration.Logger`:
[tabs]
--
tab:C#[]
[source,csharp]
----
var cfg = new IgniteConfiguration
{
Logger = new IgniteNLogLogger() // or IgniteLog4NetLogger
}
var ignite = Ignition.Start();
----
tab:app.config[]
[source,xml]
----
<igniteConfiguration>
<logger type="Apache.Ignite.NLog.IgniteNLogLogger, Apache.Ignite.NLog" />
</igniteConfiguration>
----
--
A simple file-based logging with NLog can be set up like this:
[tabs]
--
tab:C#[]
[source,csharp]
----
var nlogConfig = new LoggingConfiguration();
var fileTarget = new FileTarget
{
FileName = "ignite_nlog.log"
};
nlogConfig.AddTarget("logfile", fileTarget);
nlogConfig.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, fileTarget));
LogManager.Configuration = nlogConfig;
var igniteConfig = new IgniteConfiguration
{
Logger = new IgniteNLogLogger()
};
Ignition.Start(igniteConfig);
----
--