Skip to content

Commit 764082f

Browse files
committed
Add Diagnostic logging level for protocol message JSON
This change adds a new "Diagnostic" logging level which is used for logging the JSON contents of protocol messages that are read or written. This will provide two benefits: 1. Increase the privacy of user logs that are transmitted over GitHub 2. Increase the performance of writing Verbose logs We still log the high-level message details like message type, method, and ID so that we can keep track of the message sequence.
1 parent 9e32514 commit 764082f

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

src/PowerShellEditorServices.Protocol/MessageProtocol/MessageReader.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,20 @@ public async Task<Message> ReadMessage()
112112

113113
// Load the message
114114
this.logger.Write(
115-
LogLevel.Verbose,
115+
LogLevel.Diagnostic,
116116
string.Format(
117117
"READ MESSAGE:\r\n\r\n{0}",
118118
messageObject.ToString(Formatting.Indented)));
119119

120120
// Return the parsed message
121-
return this.messageSerializer.DeserializeMessage(messageObject);
121+
Message parsedMessage = this.messageSerializer.DeserializeMessage(messageObject);
122+
123+
this.logger.Write(
124+
LogLevel.Verbose,
125+
$"Received {parsedMessage.MessageType} '{parsedMessage.Method}'" +
126+
(!string.IsNullOrEmpty(parsedMessage.Id) ? $" with id {parsedMessage.Id}" : string.Empty));
127+
128+
return parsedMessage;
122129
}
123130

124131
#endregion

src/PowerShellEditorServices.Protocol/MessageProtocol/MessageWriter.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,14 @@ public async Task WriteMessage(Message messageToWrite)
5858
this.messageSerializer.SerializeMessage(
5959
messageToWrite);
6060

61-
// Log the JSON representation of the message
6261
this.logger.Write(
6362
LogLevel.Verbose,
63+
$"Writing {messageToWrite.MessageType} '{messageToWrite.Method}'" +
64+
(!string.IsNullOrEmpty(messageToWrite.Id) ? $" with id {messageToWrite.Id}" : string.Empty));
65+
66+
// Log the JSON representation of the message
67+
this.logger.Write(
68+
LogLevel.Diagnostic,
6469
string.Format(
6570
"WRITE MESSAGE:\r\n\r\n{0}",
6671
JsonConvert.SerializeObject(

src/PowerShellEditorServices/Utility/ILogger.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ namespace Microsoft.PowerShell.EditorServices.Utility
1616
/// </summary>
1717
public enum LogLevel
1818
{
19+
/// <summary>
20+
/// Indicates a diagnostic log message.
21+
/// </summary>
22+
Diagnostic,
23+
1924
/// <summary>
2025
/// Indicates a verbose log message.
2126
/// </summary>

0 commit comments

Comments
 (0)