diff --git a/ExtremelySimpleLogger/FileSink.cs b/ExtremelySimpleLogger/FileSink.cs index 8253282..46f9085 100644 --- a/ExtremelySimpleLogger/FileSink.cs +++ b/ExtremelySimpleLogger/FileSink.cs @@ -51,11 +51,13 @@ namespace ExtremelySimpleLogger { /// /// The message to log public override void Log(string s) { - if (this.reopenOnWrite) { - using (var w = this.file.AppendText()) - w.WriteLine(s); - } else { - this.writer.WriteLine(s); + lock (this.file) { + if (this.reopenOnWrite) { + using (var w = this.file.AppendText()) + w.WriteLine(s); + } else { + this.writer.WriteLine(s); + } } } @@ -64,8 +66,10 @@ namespace ExtremelySimpleLogger { /// public override void Dispose() { base.Dispose(); - if (!this.reopenOnWrite) - this.writer.Dispose(); + lock (this.file) { + if (!this.reopenOnWrite) + this.writer.Dispose(); + } } } diff --git a/ExtremelySimpleLogger/StringSink.cs b/ExtremelySimpleLogger/StringSink.cs index 70fad4b..3587824 100644 --- a/ExtremelySimpleLogger/StringSink.cs +++ b/ExtremelySimpleLogger/StringSink.cs @@ -12,14 +12,20 @@ namespace ExtremelySimpleLogger { /// The string that this sink currently contains. /// Can be cleared using . /// - public string Value => this.builder.ToString(); + public string Value { + get { + lock (this.builder) + return this.builder.ToString(); + } + } /// /// Logs the given message, which has already been formatted using . /// /// The message to log public override void Log(string s) { - this.builder.AppendLine(s); + lock (this.builder) + this.builder.AppendLine(s); } /// @@ -27,7 +33,8 @@ namespace ExtremelySimpleLogger { /// After this call, will be empty. /// public void Clear() { - this.builder.Clear(); + lock (this.builder) + this.builder.Clear(); } }