Skip to content

Commit ff7d474

Browse files
committed
Split debug logging into debug and trace log levels.
1 parent fc326c8 commit ff7d474

File tree

3 files changed

+37
-28
lines changed

3 files changed

+37
-28
lines changed

src/Microsoft.Diagnostics.NETCore.Client/DiagnosticsServerRouter/DiagnosticsServerRouterFactory.cs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,6 @@ protected async Task<Stream> AcceptTcpStreamAsync(CancellationToken token)
177177
if (connectTimeoutTokenSource.IsCancellationRequested)
178178
{
179179
Logger.LogDebug("No tcp stream connected before timeout.");
180-
181180
throw new BackendStreamTimeoutException(TcpServerTimeoutMs);
182181
}
183182

@@ -476,7 +475,6 @@ protected async Task<Stream> AcceptIpcStreamAsync(CancellationToken token)
476475
if (connectTimeoutTokenSource.IsCancellationRequested)
477476
{
478477
Logger.LogDebug("No ipc stream connected, timing out.");
479-
480478
throw new TimeoutException();
481479
}
482480

@@ -641,11 +639,10 @@ protected async Task<Stream> ConnectIpcStreamAsync(CancellationToken token)
641639
if (connectTimeoutTokenSource.IsCancellationRequested)
642640
{
643641
Logger.LogDebug("No ipc stream connected, timing out.");
644-
645642
throw new TimeoutException();
646643
}
647644

648-
Logger.LogDebug($"Failed connecting {_ipcClientPath}, wait {IpcClientRetryTimeoutMs} ms before retrying.");
645+
Logger.LogTrace($"Failed connecting {_ipcClientPath}, wait {IpcClientRetryTimeoutMs} ms before retrying.");
649646

650647
// If we get an error (without hitting timeout above), most likely due to unavailable listener.
651648
// Delay execution to prevent to rapid retry attempts.
@@ -785,8 +782,8 @@ public void Dispose()
785782

786783
Interlocked.Decrement(ref s_routerInstanceCount);
787784

788-
_logger.LogDebug($"Diposed stats: Backend->Frontend {_backendToFrontendByteTransfer} bytes, Frontend->Backend {_frontendToBackendByteTransfer} bytes.");
789-
_logger.LogDebug($"Active instances: {s_routerInstanceCount}");
785+
_logger.LogTrace($"Diposed stats: Backend->Frontend {_backendToFrontendByteTransfer} bytes, Frontend->Backend {_frontendToBackendByteTransfer} bytes.");
786+
_logger.LogTrace($"Active instances: {s_routerInstanceCount}");
790787
}
791788
}
792789

@@ -797,35 +794,35 @@ async Task BackendReadFrontendWrite(CancellationToken token)
797794
byte[] buffer = new byte[1024];
798795
while (!token.IsCancellationRequested)
799796
{
800-
_logger.LogDebug("Start reading bytes from backend.");
797+
_logger.LogTrace("Start reading bytes from backend.");
801798

802799
int bytesRead = await _backendStream.ReadAsync(buffer, 0, buffer.Length, token).ConfigureAwait(false);
803800

804-
_logger.LogDebug($"Read {bytesRead} bytes from backend.");
801+
_logger.LogTrace($"Read {bytesRead} bytes from backend.");
805802

806803
// Check for end of stream indicating that remote end hung-up.
807804
if (bytesRead == 0)
808805
{
809-
_logger.LogDebug("Backend hung up.");
806+
_logger.LogTrace("Backend hung up.");
810807
break;
811808
}
812809

813810
_backendToFrontendByteTransfer += (ulong)bytesRead;
814811

815-
_logger.LogDebug($"Start writing {bytesRead} bytes to frontend.");
812+
_logger.LogTrace($"Start writing {bytesRead} bytes to frontend.");
816813

817814
await _frontendStream.WriteAsync(buffer, 0, bytesRead, token).ConfigureAwait(false);
818815
await _frontendStream.FlushAsync().ConfigureAwait(false);
819816

820-
_logger.LogDebug($"Wrote {bytesRead} bytes to frontend.");
817+
_logger.LogTrace($"Wrote {bytesRead} bytes to frontend.");
821818
}
822819
}
823820
catch (Exception)
824821
{
825822
// Completing task will trigger dispose of instance and cleanup.
826823
// Faliure mainly consists of closed/disposed streams and cancelation requests.
827824
// Just make sure task gets complete, nothing more needs to be in response to these exceptions.
828-
_logger.LogDebug("Failed stream operation. Completing task.");
825+
_logger.LogTrace("Failed stream operation. Completing task.");
829826
}
830827

831828
RouterTaskCompleted?.TrySetResult(true);
@@ -838,35 +835,35 @@ async Task FrontendReadBackendWrite(CancellationToken token)
838835
byte[] buffer = new byte[1024];
839836
while (!token.IsCancellationRequested)
840837
{
841-
_logger.LogDebug("Start reading bytes from frotend.");
838+
_logger.LogTrace("Start reading bytes from frotend.");
842839

843840
int bytesRead = await _frontendStream.ReadAsync(buffer, 0, buffer.Length, token).ConfigureAwait(false);
844841

845-
_logger.LogDebug($"Read {bytesRead} bytes from frontend.");
842+
_logger.LogTrace($"Read {bytesRead} bytes from frontend.");
846843

847844
// Check for end of stream indicating that remote end hung-up.
848845
if (bytesRead == 0)
849846
{
850-
_logger.LogDebug("Frontend hung up.");
847+
_logger.LogTrace("Frontend hung up.");
851848
break;
852849
}
853850

854851
_frontendToBackendByteTransfer += (ulong)bytesRead;
855852

856-
_logger.LogDebug($"Start writing {bytesRead} bytes to backend.");
853+
_logger.LogTrace($"Start writing {bytesRead} bytes to backend.");
857854

858855
await _backendStream.WriteAsync(buffer, 0, bytesRead, token).ConfigureAwait(false);
859856
await _backendStream.FlushAsync().ConfigureAwait(false);
860857

861-
_logger.LogDebug($"Wrote {bytesRead} bytes to backend.");
858+
_logger.LogTrace($"Wrote {bytesRead} bytes to backend.");
862859
}
863860
}
864861
catch (Exception)
865862
{
866863
// Completing task will trigger dispose of instance and cleanup.
867864
// Faliure mainly consists of closed/disposed streams and cancelation requests.
868865
// Just make sure task gets complete, nothing more needs to be in response to these exceptions.
869-
_logger.LogDebug("Failed stream operation. Completing task.");
866+
_logger.LogTrace("Failed stream operation. Completing task.");
870867
}
871868

872869
RouterTaskCompleted?.TrySetResult(true);

src/Tools/dotnet-dsrouter/DiagnosticsServerRouterCommands.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,24 @@ public DiagnosticsServerRouterCommands()
4747
{
4848
}
4949

50-
public async Task<int> RunIpcClientTcpServerRouter(CancellationToken token, string ipcClient, string tcpServer, int runtimeTimeout, bool verbose)
50+
public async Task<int> RunIpcClientTcpServerRouter(CancellationToken token, string ipcClient, string tcpServer, int runtimeTimeout, string verbose)
5151
{
5252
checkLoopbackOnly(tcpServer);
5353

5454
using CancellationTokenSource cancelRouterTask = new CancellationTokenSource();
5555
using CancellationTokenSource linkedCancelToken = CancellationTokenSource.CreateLinkedTokenSource(token, cancelRouterTask.Token);
5656

57+
LogLevel logLevel = LogLevel.Information;
58+
if (string.Compare(verbose, "debug", StringComparison.OrdinalIgnoreCase) == 0)
59+
logLevel = LogLevel.Debug;
60+
else if (string.Compare(verbose, "trace", StringComparison.OrdinalIgnoreCase) == 0)
61+
logLevel = LogLevel.Trace;
62+
5763
using var factory = new LoggerFactory();
58-
factory.AddConsole(verbose ? LogLevel.Debug : LogLevel.Information, false);
64+
factory.AddConsole(logLevel, false);
5965

6066
Launcher.SuspendProcess = true;
61-
Launcher.Verbose = verbose;
67+
Launcher.Verbose = logLevel != LogLevel.Information;
6268
Launcher.CommandToken = token;
6369

6470
var routerTask = DiagnosticsServerRouterRunner.runIpcClientTcpServerRouter(linkedCancelToken.Token, ipcClient, tcpServer, runtimeTimeout == Timeout.Infinite ? runtimeTimeout : runtimeTimeout * 1000, factory.CreateLogger("dotnet-dsrounter"), Launcher);
@@ -83,18 +89,24 @@ public async Task<int> RunIpcClientTcpServerRouter(CancellationToken token, stri
8389
return routerTask.Result;
8490
}
8591

86-
public async Task<int> RunIpcServerTcpServerRouter(CancellationToken token, string ipcServer, string tcpServer, int runtimeTimeout, bool verbose)
92+
public async Task<int> RunIpcServerTcpServerRouter(CancellationToken token, string ipcServer, string tcpServer, int runtimeTimeout, string verbose)
8793
{
8894
checkLoopbackOnly(tcpServer);
8995

9096
using CancellationTokenSource cancelRouterTask = new CancellationTokenSource();
9197
using CancellationTokenSource linkedCancelToken = CancellationTokenSource.CreateLinkedTokenSource(token, cancelRouterTask.Token);
9298

99+
LogLevel logLevel = LogLevel.Information;
100+
if (string.Compare(verbose, "debug", StringComparison.OrdinalIgnoreCase) == 0)
101+
logLevel = LogLevel.Debug;
102+
else if (string.Compare(verbose, "trace", StringComparison.OrdinalIgnoreCase) == 0)
103+
logLevel = LogLevel.Trace;
104+
93105
using var factory = new LoggerFactory();
94-
factory.AddConsole(verbose ? LogLevel.Debug : LogLevel.Information, false);
106+
factory.AddConsole(logLevel, false);
95107

96108
Launcher.SuspendProcess = true;
97-
Launcher.Verbose = verbose;
109+
Launcher.Verbose = logLevel != LogLevel.Information;
98110
Launcher.CommandToken = token;
99111

100112
var routerTask = DiagnosticsServerRouterRunner.runIpcServerTcpServerRouter(linkedCancelToken.Token, ipcServer, tcpServer, runtimeTimeout == Timeout.Infinite ? runtimeTimeout : runtimeTimeout * 1000, factory.CreateLogger("dotnet-dsrounter"), Launcher);

src/Tools/dotnet-dsrouter/Program.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ namespace Microsoft.Diagnostics.Tools.DiagnosticsServerRouter
1717
{
1818
internal class Program
1919
{
20-
delegate Task<int> DiagnosticsServerIpcClientTcpServerRouterDelegate(CancellationToken ct, string ipcClient, string tcpServer, int runtimeTimeoutS, bool verbose);
21-
delegate Task<int> DiagnosticsServerIpcServerTcpServerRouterDelegate(CancellationToken ct, string ipcServer, string tcpServer, int runtimeTimeoutS, bool verbose);
20+
delegate Task<int> DiagnosticsServerIpcClientTcpServerRouterDelegate(CancellationToken ct, string ipcClient, string tcpServer, int runtimeTimeoutS, string verbose);
21+
delegate Task<int> DiagnosticsServerIpcServerTcpServerRouterDelegate(CancellationToken ct, string ipcServer, string tcpServer, int runtimeTimeoutS, string verbose);
2222

2323
private static Command IpcClientTcpServerRouterCommand() =>
2424
new Command(
@@ -89,9 +89,9 @@ private static Option RuntimeTimeoutOption() =>
8989
private static Option VerboseOption() =>
9090
new Option(
9191
aliases: new[] { "--verbose", "-v" },
92-
description: "Enable verbose logging.")
92+
description: "Enable verbose logging (debug|trace)")
9393
{
94-
Argument = new Argument<bool>(name: "verbose", getDefaultValue: () => false)
94+
Argument = new Argument<string>(name: "verbose", getDefaultValue: () => "")
9595
};
9696

9797
private static int Main(string[] args)

0 commit comments

Comments
 (0)