diff --git a/src/WebJobs.Script.WebHost/Diagnostics/LinuxAppServiceEventGenerator.cs b/src/WebJobs.Script.WebHost/Diagnostics/LinuxAppServiceEventGenerator.cs index 341aeb5a01..9497eb7f4b 100644 --- a/src/WebJobs.Script.WebHost/Diagnostics/LinuxAppServiceEventGenerator.cs +++ b/src/WebJobs.Script.WebHost/Diagnostics/LinuxAppServiceEventGenerator.cs @@ -15,6 +15,7 @@ internal class LinuxAppServiceEventGenerator : LinuxEventGenerator private readonly HostNameProvider _hostNameProvider; private readonly IOptions _functionsHostingConfigOptions; private readonly IOptions _azureMonitorLoggingOptions; + private readonly int _pid = Environment.ProcessId; private ILinuxAppServiceFileLogger _functionsExecutionEventsCategoryLogger; private ILinuxAppServiceFileLogger _functionsLogsCategoryLogger; private ILinuxAppServiceFileLogger _functionsMetricsCategoryLogger; @@ -45,9 +46,9 @@ public LinuxAppServiceEventGenerator( internal ILinuxAppServiceFileLogger FunctionsDetailsCategoryLogger => _functionsDetailsCategoryLogger; - public static string TraceEventRegex { get; } = "(?[0-6]),(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),\"(?
.*)\",\"(?.*)\",(?[^,]*),(?[^,]+),(?[^,]*),\"(?.*)\",(?[^,]*),(?[^,]*),(?[^,\"]*)"; + public static string TraceEventRegex { get; } = "(?[0-6]),(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),\"(?
.*)\",\"(?.*)\",(?[^,]*),(?[^,]+),(?[^,]*),\"(?.*)\",(?[^,]*),(?[^,]*),(?[^,\"]*),(?[^,\"]*)"; - public static string MetricEventRegex { get; } = "(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),(?\\d*),(?\\d*),(?\\d*),(?\\d*),(?[^,]*),(?[^,]+),(?
[^,\"]*)"; + public static string MetricEventRegex { get; } = "(?[^,]*),(?[^,]*),(?[^,]*),(?[^,]*),(?\\d*),(?\\d*),(?\\d*),(?\\d*),(?[^,]*),(?[^,]+),(?
[^,\"]*),(?[^,\"]*)"; public static string DetailsEventRegex { get; } = "(?[^,]*),(?[^,]*),\"(?.*)\",\"(?.*)\",(?[^,]*),(?[0|1])"; @@ -64,7 +65,7 @@ public override void LogFunctionTraceEvent(LogLevel level, string subscriptionId var hostName = _hostNameProvider.Value; using (FunctionsSystemLogsEventSource.SetActivityId(activityId)) { - WriteEvent(_functionsLogsCategoryLogger, $"{(int)ToEventLevel(level)},{subscriptionId},{hostName},{appName},{functionName},{eventName},{source},{NormalizeString(details)},{NormalizeString(summary)},{hostVersion},{formattedEventTimestamp},{exceptionType},{NormalizeString(exceptionMessage)},{functionInvocationId},{hostInstanceId},{activityId}"); + WriteEvent(_functionsLogsCategoryLogger, $"{(int)ToEventLevel(level)},{subscriptionId},{hostName},{appName},{functionName},{eventName},{source},{NormalizeString(details)},{NormalizeString(summary)},{hostVersion},{formattedEventTimestamp},{exceptionType},{NormalizeString(exceptionMessage)},{functionInvocationId},{hostInstanceId},{activityId},{_pid}"); } } @@ -72,7 +73,7 @@ public override void LogFunctionMetricEvent(string subscriptionId, string appNam long minimum, long maximum, long count, DateTime eventTimestamp, string data, string runtimeSiteName, string slotName) { var hostVersion = ScriptHost.Version; - WriteEvent(_functionsMetricsCategoryLogger, $"{subscriptionId},{appName},{functionName},{eventName},{average},{minimum},{maximum},{count},{hostVersion},{eventTimestamp.ToString(EventTimestampFormat)},{data}"); + WriteEvent(_functionsMetricsCategoryLogger, $"{subscriptionId},{appName},{functionName},{eventName},{average},{minimum},{maximum},{count},{hostVersion},{eventTimestamp.ToString(EventTimestampFormat)},{data},{_pid}"); } public override void LogFunctionDetailsEvent(string siteName, string functionName, string inputBindings, string outputBindings, diff --git a/test/WebJobs.Script.Tests/Diagnostics/LinuxAppServiceEventGeneratorTests.cs b/test/WebJobs.Script.Tests/Diagnostics/LinuxAppServiceEventGeneratorTests.cs index 58c6235a45..471c9f7251 100644 --- a/test/WebJobs.Script.Tests/Diagnostics/LinuxAppServiceEventGeneratorTests.cs +++ b/test/WebJobs.Script.Tests/Diagnostics/LinuxAppServiceEventGeneratorTests.cs @@ -21,6 +21,7 @@ public class LinuxAppServiceEventGeneratorTests private readonly LinuxAppServiceEventGenerator _generator; private readonly List _events; + private readonly int _pid = Environment.ProcessId; private IOptions _functionsHostingConfigOptions; private IOptions _azureMonitorOptions; @@ -66,7 +67,7 @@ public void ParseLogEvents(LogLevel level, string subscriptionId, string appName var match = regex.Match(evt); Assert.True(match.Success); - Assert.Equal(17, match.Groups.Count); + Assert.Equal(18, match.Groups.Count); DateTime dt; var groupMatches = match.Groups.Cast().Select(p => p.Value).Skip(1).ToArray(); @@ -86,7 +87,8 @@ public void ParseLogEvents(LogLevel level, string subscriptionId, string appName p => Assert.Equal(exceptionMessage, LinuxContainerEventGeneratorTests.UnNormalize(p)), p => Assert.Equal(functionInvocationId, p), p => Assert.Equal(hostInstanceId, p), - p => Assert.Equal(activityId, p)); + p => Assert.Equal(activityId, p), + p => Assert.Equal(_pid.ToString(), p)); } [Theory] @@ -102,7 +104,7 @@ public void ParseMetricEvents(string subscriptionId, string appName, string func var match = regex.Match(evt); Assert.True(match.Success); - Assert.Equal(12, match.Groups.Count); + Assert.Equal(13, match.Groups.Count); DateTime dt; var groupMatches = match.Groups.Cast().Select(p => p.Value).Skip(1).ToArray(); @@ -117,7 +119,8 @@ public void ParseMetricEvents(string subscriptionId, string appName, string func p => Assert.Equal(count, long.Parse(p)), p => Assert.Equal(ScriptHost.Version, p), p => Assert.True(DateTime.TryParse(p, out dt)), - p => Assert.Equal(data, p)); + p => Assert.Equal(data, p), + p => Assert.Equal(_pid.ToString(), p)); } [Theory]