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();
}
}