// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------ /// <summary> /// Records a log entry into the specified log. Custom data can be passed as ILogEntryExt parameter. /// </summary> /// <param name="logName">The log name to record to.</param> /// <param name="message">The log message as a string.</param> /// <param name="extension">The custom data for the log entry (default is null).</param> /// <param name="sourceFilePath">The source file of the log entry (auto-generated).</param> /// <param name="sourceMethod">The source method of the log entry (auto-generated).</param> /// <param name="sourceLineNum">The source line number of the log entry (auto-generated).</param> // ------------------------------------------------------------------------------------------------------------ public void RecordTo(string logName, string message, ILogEntryExt extension = null, [CallerFilePath] string sourceFilePath = "", [CallerMemberName] string sourceMethod = "", [CallerLineNumber] int sourceLineNum = 0) { if (!logging) { return; } // If log name is blank, record to default and return if (string.IsNullOrWhiteSpace(logName)) { Record(message, extension, sourceFilePath, sourceMethod, sourceLineNum); return; } // Make sure the specified log queue exists if (!logQueues.ContainsKey(logName)) { logQueues.TryAdd(logName, new ConcurrentQueue <LogEntry>()); } // Add log entry to queue if (logQueues.TryGetValue(logName, out var queue)) { queue.Enqueue(new LogEntry(sourceFilePath, sourceMethod, sourceLineNum, message, extension)); } }
// ------------------------------------------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------------------------------------------ /// <summary> /// Creates a new log entry object. /// </summary> /// <param name="filename"></param> /// <param name="method"></param> /// <param name="lineNumber"></param> /// <param name="message"></param> /// <param name="extension"></param> // ------------------------------------------------------------------------------------------------------------ public LogEntry(string filename, string method, int lineNumber, string message, ILogEntryExt extension = null) { Timestamp = DateTime.UtcNow; Filename = filename; Method = method; LineNumber = lineNumber; Message = message; Extension = extension; }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------ /// <summary> /// Records a log entry into the default log. Custom data can be passed as ILogEntryExt parameter. /// </summary> /// <param name="message">The log message as a string.</param> /// <param name="extension">The custom data for the log entry (default is null).</param> /// <param name="sourceFilePath">The source file of the log entry (auto-generated).</param> /// <param name="sourceMethod">The source method of the log entry (auto-generated).</param> /// <param name="sourceLineNum">The source line number of the log entry (auto-generated).</param> // ------------------------------------------------------------------------------------------------------------ public void Record(string message, ILogEntryExt extension = null, [CallerFilePath] string sourceFilePath = "", [CallerMemberName] string sourceMethod = "", [CallerLineNumber] int sourceLineNum = 0) { if (!logging) { return; } // Add log entry to queue if (logQueues.TryGetValue(defaultName, out var queue)) { queue.Enqueue(new LogEntry(sourceFilePath, sourceMethod, sourceLineNum, message, extension)); } }