Skip to content

Commit 3051a4b

Browse files
committed
Fixing a file logging issue
1 parent 16ef27c commit 3051a4b

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

src/WebJobs.Script/Diagnostics/FileTraceWriter.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public class FileTraceWriter : TraceWriter, IDisposable
2121
internal const int LogFlushIntervalMs = 1000;
2222
private readonly string _logFilePath;
2323
private readonly string _instanceId;
24-
private readonly int _processId;
2524

2625
private readonly DirectoryInfo _logDirectory;
2726
private static object _syncLock = new object();
@@ -35,7 +34,6 @@ public FileTraceWriter(string logFilePath, TraceLevel level) : base(level)
3534
{
3635
_logFilePath = logFilePath;
3736
_instanceId = GetInstanceId();
38-
_processId = Process.GetCurrentProcess().Id;
3937

4038
_logDirectory = new DirectoryInfo(logFilePath);
4139
if (!_logDirectory.Exists)
@@ -207,7 +205,7 @@ internal void SetNewLogFile()
207205

208206
// we include a machine identifier in the log file name to ensure we don't have any
209207
// log file contention between scaled out instances
210-
string filePath = Path.Combine(_logFilePath, string.Format(CultureInfo.InvariantCulture, "{0}-{1}-{2}.log", DateTime.UtcNow.ToString("yyyy-MM-ddTHH-mm-ssK"), _instanceId, _processId));
208+
string filePath = Path.Combine(_logFilePath, string.Format(CultureInfo.InvariantCulture, "{0}-{1}.log", DateTime.UtcNow.ToString("yyyy-MM-ddTHH-mm-ssK"), _instanceId));
211209
_currentLogFileInfo = new FileInfo(filePath);
212210
}
213211

src/WebJobs.Script/Host/ScriptHostManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Collections.Generic;
6+
using System.Diagnostics;
67
using System.Globalization;
78
using System.Linq;
89
using System.Text;
@@ -86,7 +87,7 @@ public ScriptHost Instance
8687

8788
if (_traceWriter != null)
8889
{
89-
_traceWriter.Info(string.Format("Starting Host (Id={0})", newInstance.ScriptConfig.HostConfig.HostId));
90+
_traceWriter.Info(string.Format("Starting Host (HostId={0}, ProcessId={1})", newInstance.ScriptConfig.HostConfig.HostId, Process.GetCurrentProcess().Id));
9091
}
9192
newInstance.StartAsync(cancellationToken).GetAwaiter().GetResult();
9293

src/src.ruleset

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@
2121
<Rule Id="CA1800" Action="None" />
2222
<Rule Id="CA1307" Action="None" />
2323
<Rule Id="CA1305" Action="None" />
24+
<Rule Id="CA2204" Action="None" />
2425
</Rules>
2526
</RuleSet>

test/WebJobs.Script.Tests/FileTraceWriterTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,30 @@ public void SetNewLogFile_EmptyDirectory_Succeeds()
116116
Assert.Equal(1, files.Length);
117117
}
118118

119+
[Fact]
120+
public void WriteLogs_ReusesLastFile()
121+
{
122+
DirectoryInfo directory = new DirectoryInfo(_logFilePath);
123+
directory.Create();
124+
125+
int count = directory.EnumerateFiles().Count();
126+
Assert.Equal(0, count);
127+
128+
for (int i = 0; i < 3; i++)
129+
{
130+
FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Verbose);
131+
traceWriter.Verbose("Testing");
132+
traceWriter.Flush();
133+
}
134+
135+
count = directory.EnumerateFiles().Count();
136+
Assert.Equal(1, count);
137+
138+
string logFile = directory.EnumerateFiles().First().FullName;
139+
string[] fileLines = File.ReadAllLines(logFile);
140+
Assert.Equal(3, fileLines.Length);
141+
}
142+
119143
private void WriteLogs(string logFilePath, int numLogs)
120144
{
121145
FileTraceWriter traceWriter = new FileTraceWriter(logFilePath, TraceLevel.Verbose);

0 commit comments

Comments
 (0)