Skip to content

Commit 03862df

Browse files
committed
Changed access permissions for FileWriter. Created test that insures other processes can read from logs while FileWriter writes.
1 parent 3cf7112 commit 03862df

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/WebJobs.Script/Diagnostics/FileWriter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private static void AppendToFile(FileInfo fileInfo, string content)
111111
{
112112
lock (_syncLock)
113113
{
114-
var fs = fileInfo.Open(FileMode.Open, FileAccess.Write);
114+
var fs = fileInfo.Open(FileMode.Open, FileAccess.Write, FileShare.Read);
115115
fs.Seek(0, SeekOrigin.End);
116116

117117
using (var sw = new StreamWriter(fs))

test/WebJobs.Script.Tests/Diagnostics/FileWriterTests.cs

+28
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,34 @@ public async Task Flush_LogFileDeleted_CreatesNewFile()
231231
Assert.Equal("test trace", logLine);
232232
}
233233

234+
[Fact]
235+
public void Flush_LogFileOpened_WritesSuccessfully()
236+
{
237+
var fileWriter = new FileWriter(_logFilePath);
238+
239+
fileWriter.AppendLine("test trace");
240+
fileWriter.Flush();
241+
242+
var directory = new DirectoryInfo(_logFilePath);
243+
var logFile = directory.EnumerateFiles().Single();
244+
245+
// open the log file with ReadWrite to make sure logging
246+
// is still possible
247+
var logFileStream = logFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
248+
249+
fileWriter.AppendLine("test trace 2");
250+
fileWriter.Flush();
251+
252+
logFileStream.Close();
253+
254+
// verify that both lines were written successfully
255+
var fileLines = File.ReadAllLines(logFile.FullName);
256+
Assert.Equal(2, fileLines.Length);
257+
Assert.Collection(fileLines,
258+
t => Assert.EndsWith("test trace", t),
259+
t => Assert.EndsWith("test trace 2", t));
260+
}
261+
234262
private void WriteLogs(string logFilePath, int numLogs)
235263
{
236264
FileWriter fileWriter = new FileWriter(logFilePath);

0 commit comments

Comments
 (0)