Appearance
Shuttle.Core.Logging
PM> Install-Package Shuttle.Core.Logging
The Shuttle.Core.Logging project provides an abstract mechanism that can be used to implement any logging such as a Log4Net implementation. You would typically reference this package directly when you need to create your own ILog implementation. You may wish to make use of the ConsoleLog or EventLog implementations in this package from time-to-time.
In this way all logging can be performed through the ILog interface and accompanying Log singleton without relying on any specific implementation. Developer can then make use any implementation.
Since there is some boilerplate code implementors may make use of the AbstractLog class to implement a new concrete logging mechanism:
public abstract class AbstractLog : ILog
{
// boilerplate
}
Assigning a logging mechanism
If no log is assigned or if a null is assigned the NullLog.Instance will be used. As may be deduced from the name this log does not do anything.
Assign
public static void Assign(ILog instance)
This assigns the log to use for the duration of the execution.
AssignTransient
public static TransientLog AssignTransient(ILog instance)
Returns a IDisposable instance that returns the log to the previous instance on dispose. This may be usefull for testing purposes where you may want to use a mock object and ensure that certain bits are logged.
ConsoleLog
The ConsoleLog class outputs all loggin go the console window.
EventLog
The EventLog class provides hooks by way of the LoggerDelegate that allows simple access to the logged messages.