diff --git a/src/Microsoft.Tye.Hosting/DockerRunner.cs b/src/Microsoft.Tye.Hosting/DockerRunner.cs index dd930e9d..f8a12460 100644 --- a/src/Microsoft.Tye.Hosting/DockerRunner.cs +++ b/src/Microsoft.Tye.Hosting/DockerRunner.cs @@ -160,7 +160,8 @@ namespace Microsoft.Tye.Hosting command, throwOnError: false, cancellationToken: dockerInfo.StoppingTokenSource.Token, - outputDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}")); + outputDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}"), + errorDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}")); if (result.ExitCode != 0) { @@ -194,14 +195,14 @@ namespace Microsoft.Tye.Hosting _logger.LogInformation("Collecting docker logs for {ContainerName}.", replica); - await ProcessUtil.RunAsync("docker", $"logs -f {containerId}", - outputDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}"), - onStart: pid => - { - status.DockerLogsPid = pid; - }, - throwOnError: false, - cancellationToken: dockerInfo.StoppingTokenSource.Token); + while (!dockerInfo.StoppingTokenSource.Token.IsCancellationRequested) + { + await ProcessUtil.RunAsync("docker", $"logs -f {containerId}", + outputDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}"), + errorDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}"), + throwOnError: false, + cancellationToken: dockerInfo.StoppingTokenSource.Token); + } _logger.LogInformation("docker logs collection for {ContainerName} complete with exit code {ExitCode}", replica, result.ExitCode); diff --git a/src/Microsoft.Tye.Hosting/Model/DockerStatus.cs b/src/Microsoft.Tye.Hosting/Model/DockerStatus.cs index 2c35b052..a4a93075 100644 --- a/src/Microsoft.Tye.Hosting/Model/DockerStatus.cs +++ b/src/Microsoft.Tye.Hosting/Model/DockerStatus.cs @@ -13,7 +13,5 @@ namespace Microsoft.Tye.Hosting.Model public string? DockerCommand { get; set; } public string? ContainerId { get; set; } - - public int? DockerLogsPid { get; set; } } } diff --git a/src/Microsoft.Tye.Hosting/Model/V1/V1ReplicaStatus.cs b/src/Microsoft.Tye.Hosting/Model/V1/V1ReplicaStatus.cs index 43353634..b3695a7e 100644 --- a/src/Microsoft.Tye.Hosting/Model/V1/V1ReplicaStatus.cs +++ b/src/Microsoft.Tye.Hosting/Model/V1/V1ReplicaStatus.cs @@ -14,7 +14,6 @@ namespace Microsoft.Tye.Hosting.Model.V1 public V1ReplicaType Type { get; set; } public string? DockerCommand { get; set; } public string? ContainerId { get; set; } - public int? DockerLogsPid { get; set; } public string? Name { get; set; } public IEnumerable? Ports { get; set; } public int? ExitCode { get; set; } diff --git a/src/Microsoft.Tye.Hosting/ProcessRunner.cs b/src/Microsoft.Tye.Hosting/ProcessRunner.cs index f7b009e0..e2a3c91a 100644 --- a/src/Microsoft.Tye.Hosting/ProcessRunner.cs +++ b/src/Microsoft.Tye.Hosting/ProcessRunner.cs @@ -191,6 +191,7 @@ namespace Microsoft.Tye.Hosting environmentVariables: environment, workingDirectory: workingDirectory, outputDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}"), + errorDataReceived: data => service.Logs.OnNext($"[{replica}]: {data}"), onStart: pid => { if (hasPorts) diff --git a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs index ff4f0763..454b7a1f 100644 --- a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs +++ b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs @@ -181,7 +181,6 @@ namespace Microsoft.Tye.Hosting else if (replica.Value is DockerStatus dockerStatus) { replicaStatus.DockerCommand = dockerStatus.DockerCommand; - replicaStatus.DockerLogsPid = dockerStatus.DockerLogsPid; replicaStatus.ContainerId = dockerStatus.ContainerId; } }