public static void Writer(Model.LogLevel level, string content) { var logText = string.Format("[{0}] [{1}] {2}\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), level.ToString(), content ); LogWriteLock.EnterWriteLock(); try { File.AppendAllText(FilePath, logText); } catch (Exception) { } finally { LogWriteLock.ExitWriteLock(); } }
/// <summary> /// Log message. /// </summary> /// <param name="content"> /// The content. /// </param> /// <param name="type"> /// The type. /// </param> /// <param name="level"> /// The level. /// </param> public void LogMessage(string content, LogMessageType type, LogLevel level) { if (!this.isLoggingEnabled) { return; } if (level > this.currentLogLevel) { return; } LogMessage msg = new LogMessage(content, type, level, this.messageIndex); lock (this.lockObject) { this.messageIndex = this.messageIndex + 1; this.logMessages.Add(msg); this.logBuilder.AppendLine(msg.Content); this.LogMessageToDisk(msg); if (this.logMessages.Count > 50000) { this.messageIndex = this.messageIndex + 1; msg = new LogMessage( "Log Service Pausing. Too Many Log messages. This may indicate a problem with your encode.", LogMessageType.Application, LogLevel.Error, this.messageIndex); this.logMessages.Add(msg); this.logBuilder.AppendLine(msg.Content); this.LogMessageToDisk(msg); this.Disable(); } } this.OnMessageLogged(msg); // Must be outside lock to be thread safe. }
/// <summary> /// The set log level. Default: Info. /// </summary> /// <param name="level"> /// The level. /// </param> public void SetLogLevel(LogLevel level) { this.currentLogLevel = level; }