public LogDevice(LoggingLevel level, dynamic device, WriteLogDelegate action,
                  TerminationDelegate termination = null)
 {
     Level       = level;
     Device      = device;
     Action      = action;
     Termination = termination;
 }
 /// <summary>
 /// Add logging device class
 /// </summary>
 /// <param name="level">Logging level</param>
 /// <param name="dev">Device class as dynamic</param>
 /// <param name="writeDelegate">Delegate to write message to the device</param>
 /// <param name="termDelegate">Delegate to terminate the device</param>
 ///
 /// Set lower log level if you want to log less important messages.
 /// Set higher log level for digest to log only important messages.
 ///
 /// Terminanation delegate is called when the logger is terminated.
 public void AddLogDevice(LoggingLevel level, dynamic dev,
                          WriteLogDelegate writeDelegate, TerminationDelegate termDelegate = null)
 {
     Debug.Assert(_deviceMutex != null, nameof(_deviceMutex) + " != null");
     lock (_deviceMutex)
     {
         _devices.Add(new LogDevice(level, dev, writeDelegate, termDelegate));
     }
 }