public void Log(TraceEntryType type, string operationType, string message, string detailedMessage = null)
        {
            var item = new TraceEntryBase
            {
                Type            = type,
                OperationType   = operationType,
                Message         = message,
                DetailedMessage = detailedMessage
            };

            Log(item);
        }
 /// <summary>
 /// Override to specify how the trace entry should be logged.
 /// </summary>
 /// <param name="item">Trace entry</param>
 protected abstract void DoLog(TraceEntryBase item);
 /// <summary>
 /// Logs the specified trace entry
 /// </summary>
 /// <param name="item">Trace entry</param>
 public void Log(TraceEntryBase item)
 {
     item.EnsureProperties();
     DoLog(item);
 }