-
Notifications
You must be signed in to change notification settings - Fork 153
Using
Install the nuget package which contains the source and which will automatically set the namespace to your project's root namespace (if using Visual Studio).
public class MyClass
{
private static readonly ILog Logger = LogProvider.For<MyClass>();
public MyClass()
{
using(LogProvider.OpenNestedContext("message"))
using(LogProvider.OpenMappedContext("key", "value"))
{
Logger.Info(....);
}
}
}
By default only your code will only be able to get a logger from within your library (assuming it's a single assembly). This is by design to prevent consumers of your library creating unintended coupling your library's log provider.
From their perspective, intellisense will look like this:
If you have a scenario where you have a single "core" project in a solution and you want LibLog's various GetLogger()
methods available to other projects in your solutions, consider first using [InternalsVisibleTo]
attribute.
Alternatively you may optionally make the various GetLogger()
public by defining LIBLOG_PUBLIC
conditional compilation symbol. Your consumer's intellisense will look like this:
** Be wary though of your consumers potentially creating unintended coupling your library's log provider. **
Diagnostic contexts can be opened from the LogProvider
:
using (logProvider.OpenNestedContext("nestedmessage"))
{
//...
}
using (logProvider.OpenMappedContext("key", "value"))
{
//...
}