Skip to content

Commit bc5b6ce

Browse files
committed
Address PR feedback - use Env.NewLine, comment strbld capacity
1 parent 0230b1d commit bc5b6ce

File tree

3 files changed

+42
-27
lines changed

3 files changed

+42
-27
lines changed

src/PowerShellEditorServices.Protocol/MessageProtocol/MessageReader.cs

+9-10
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,12 @@ public async Task<Message> ReadMessage()
113113
// Deserialize the message from the parsed JSON message
114114
Message parsedMessage = this.messageSerializer.DeserializeMessage(messageObject);
115115

116-
// Log message info
116+
// Log message info - initial capacity for StringBuilder varies depending on whether
117+
// the log level is Diagnostic where JsonRpc message payloads are logged and
118+
// vary from 1K up edited file size chars. When not logging message payloads the
119+
// typical request log message is under 250 chars.
117120
var logStrBld =
118-
new StringBuilder(512)
121+
new StringBuilder(this.logger.MinimumConfiguredLogLevel == LogLevel.Diagnostic ? 4096 : 250)
119122
.Append("Received ")
120123
.Append(parsedMessage.MessageType)
121124
.Append(" '").Append(parsedMessage.Method).Append("'");
@@ -127,17 +130,13 @@ public async Task<Message> ReadMessage()
127130

128131
if (this.logger.MinimumConfiguredLogLevel == LogLevel.Diagnostic)
129132
{
133+
// Log the JSON representation of the message payload at the Diagnostic log level
130134
string jsonPayload = messageObject.ToString(Formatting.Indented);
131-
logStrBld.Append("\r\n\r\n").Append(jsonPayload);
132-
133-
// Log the JSON representation of the message
134-
this.logger.Write(LogLevel.Diagnostic, logStrBld.ToString());
135-
}
136-
else
137-
{
138-
this.logger.Write(LogLevel.Verbose, logStrBld.ToString());
135+
logStrBld.Append(Environment.NewLine).Append(Environment.NewLine).Append(jsonPayload);
139136
}
140137

138+
this.logger.Write(LogLevel.Verbose, logStrBld.ToString());
139+
141140
return parsedMessage;
142141
}
143142

src/PowerShellEditorServices.Protocol/MessageProtocol/MessageWriter.cs

+9-10
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,12 @@ public async Task WriteMessage(Message messageToWrite)
5858
this.messageSerializer.SerializeMessage(
5959
messageToWrite);
6060

61-
// Log message info
61+
// Log message info - initial capacity for StringBuilder varies depending on whether
62+
// the log level is Diagnostic where JsonRpc message payloads are logged and
63+
// vary from 1K up 225K chars. When not logging message payloads the typical response
64+
// log message is under 250 chars.
6265
var logStrBld =
63-
new StringBuilder(512)
66+
new StringBuilder(this.logger.MinimumConfiguredLogLevel == LogLevel.Diagnostic ? 4096 : 250)
6467
.Append("Writing ")
6568
.Append(messageToWrite.MessageType)
6669
.Append(" '").Append(messageToWrite.Method).Append("'");
@@ -72,22 +75,18 @@ public async Task WriteMessage(Message messageToWrite)
7275

7376
if (this.logger.MinimumConfiguredLogLevel == LogLevel.Diagnostic)
7477
{
78+
// Log the JSON representation of the message payload at the Diagnostic log level
7579
string jsonPayload =
7680
JsonConvert.SerializeObject(
7781
messageObject,
7882
Formatting.Indented,
7983
Constants.JsonSerializerSettings);
8084

81-
logStrBld.Append("\r\n\r\n").Append(jsonPayload);
82-
83-
// Log the JSON representation of the message
84-
this.logger.Write(LogLevel.Diagnostic, logStrBld.ToString());
85-
}
86-
else
87-
{
88-
this.logger.Write(LogLevel.Verbose, logStrBld.ToString());
85+
logStrBld.Append(Environment.NewLine).Append(Environment.NewLine).Append(jsonPayload);
8986
}
9087

88+
this.logger.Write(LogLevel.Verbose, logStrBld.ToString());
89+
9190
string serializedMessage =
9291
JsonConvert.SerializeObject(
9392
messageObject,

tools/PsesLogAnalyzer/Parse-PsesLog.ps1

+24-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ function Parse-PsesLog {
1212
[string]
1313
$Path,
1414

15+
# Old log file format <= v1.9.0
16+
[Parameter()]
17+
[switch]
18+
$OldLogFormat,
19+
1520
# Hides the progress bar.
1621
[Parameter()]
1722
[switch]
@@ -22,10 +27,12 @@ function Parse-PsesLog {
2227
[switch]
2328
$SkipRpcMessageBody,
2429

30+
# Emit debug timing info on time to parse each log entry
2531
[Parameter()]
2632
[switch]
2733
$DebugTimingInfo,
2834

35+
# Threshold for emitting debug timing info. Default is 100 ms.
2936
[Parameter()]
3037
[int]
3138
$DebugTimingThresholdMs = 100
@@ -36,12 +43,22 @@ function Parse-PsesLog {
3643
$script:currentLineNum = 1
3744
$script:logEntryIndex = 0
3845

39-
# Example log entry start:
40-
# 2018-11-24 12:26:58.302 [DIAGNOSTIC] tid:28 in 'ReadMessage' C:\Users\Keith\GitHub\rkeithhill\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\MessageReader.cs:114:
41-
$logEntryRegex =
42-
[regex]::new(
43-
'(?<ts>[^\[]+)\[(?<lev>([^\]]+))\]\s+tid:(?<tid>\d+)\s+in\s+''(?<meth>\w+)''\s+(?<file>..[^:]+):(?<line>\d+)',
44-
[System.Text.RegularExpressions.RegexOptions]::Compiled -bor [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
46+
if ($OldLogFormat) {
47+
# Example old log entry start
48+
# 2018-11-15 19:49:06.979 [NORMAL] C:\PowerShellEditorServices\src\PowerShellEditorServices.Host\EditorServicesHost.cs: In method 'StartLogging', line 160:
49+
$logEntryRegex =
50+
[regex]::new(
51+
'^(?<ts>[^\[]+)\[(?<lev>([^\]]+))\]\s+(?<file>..[^:]+):\s+In method\s+''(?<meth>\w+)'',\s+line\s+(?<line>\d+)',
52+
[System.Text.RegularExpressions.RegexOptions]::Compiled -bor [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
53+
}
54+
else {
55+
# Example new log entry start:
56+
# 2018-11-24 12:26:58.302 [DIAGNOSTIC] tid:28 in 'ReadMessage' C:\Users\Keith\GitHub\rkeithhill\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\MessageReader.cs:114:
57+
$logEntryRegex =
58+
[regex]::new(
59+
'^(?<ts>[^\[]+)\[(?<lev>([^\]]+))\]\s+tid:(?<tid>\d+)\s+in\s+''(?<meth>\w+)''\s+(?<file>..[^:]+):(?<line>\d+)',
60+
[System.Text.RegularExpressions.RegexOptions]::Compiled -bor [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
61+
}
4562

4663
$filestream =
4764
[System.IO.FileStream]::new(
@@ -102,7 +119,7 @@ function Parse-PsesLog {
102119

103120
$message = parseMessage $method
104121

105-
[PsesLogEntry]::new($script:logEntryIndex, $timestamp, $timestampStr, $logLevel, $threadId, $method,
122+
[PsesLogEntry]::new($script:logEntryIndex, $timestamp, $timestampStr, $logLevel, $threadId, $method,
106123
$file, $lineNumber, $message.MessageType, $message.Message)
107124

108125
if ($DebugTimingInfo) {

0 commit comments

Comments
 (0)