Skip to content

Commit e9becd1

Browse files
author
Robert Holt
committed
Address @SeeminglyScience feedback, correct log strings and templates, use cross-platform newlines
1 parent 54a53bb commit e9becd1

File tree

3 files changed

+32
-22
lines changed

3 files changed

+32
-22
lines changed

src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public IEditorOperations EditorOperations
5454
/// <param name="messageHandlers">An object that manages all of the message handlers</param>
5555
/// <param name="messageSender">The message sender</param>
5656
/// <param name="serverCompletedTask">A TaskCompletionSource<bool> that will be completed to stop the running process</param>
57-
/// <param name="logger">the logger</param>
57+
/// <param name="logger">The logger.</param>
5858
public LanguageServer(
5959
EditorSession editorSession,
6060
IMessageHandlers messageHandlers,

src/PowerShellEditorServices/Utility/Logging.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,20 +169,19 @@ public ILogger Build()
169169
{
170170
configuration = configuration.WriteTo.Console(
171171
restrictedToMinimumLevel: ConvertLogLevel(_consoleLogLevel ?? _logLevel),
172-
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Message}{Newline}{Exception}{Newline}");
172+
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Message}{NewLine}");
173173
}
174174

175175
foreach (KeyValuePair<string, LogLevel?> logFile in _filePaths)
176176
{
177177
configuration = configuration.WriteTo.Async(a => a.File(logFile.Key,
178178
restrictedToMinimumLevel: ConvertLogLevel(logFile.Value ?? _logLevel),
179-
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Message}{Newline}{Exception}{Newline}")
179+
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Message}{NewLine}")
180180
);
181181
}
182182

183183
return new PsesLogger(configuration.CreateLogger());
184184
}
185-
186185
}
187186

188187
/// <summary>
@@ -195,6 +194,7 @@ public static ILogger NullLogger
195194
return s_nullLogger ?? (s_nullLogger = CreateLogger().Build());
196195
}
197196
}
197+
198198
private static ILogger s_nullLogger;
199199

200200
/// <summary>

src/PowerShellEditorServices/Utility/PsesLogger.cs

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Runtime.CompilerServices;
3+
using System.Text;
34
using Serilog.Core;
45

56
namespace Microsoft.PowerShell.EditorServices.Utility
@@ -9,6 +10,11 @@ namespace Microsoft.PowerShell.EditorServices.Utility
910
/// </summary>
1011
public class PsesLogger : ILogger
1112
{
13+
/// <summary>
14+
/// The name of the ERROR log level.
15+
/// </summary>
16+
private static readonly string ErrorLevelName = LogLevel.Error.ToString().ToUpper();
17+
1218
/// <summary>
1319
/// The internal Serilog logger to log to.
1420
/// </summary>
@@ -44,23 +50,23 @@ public void Write(
4450
switch (logLevel)
4551
{
4652
case LogLevel.Diagnostic:
47-
_logger.Verbose("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:\n{IndentedLogMsg:l}\n",
53+
_logger.Verbose("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:{IndentedLogMsg:l}",
4854
logLevelName, callerSourceFile, callerName, callerLineNumber, indentedLogMsg);
4955
return;
5056
case LogLevel.Verbose:
51-
_logger.Debug("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:\n{IndentedLogMsg:l}\n",
57+
_logger.Debug("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:{IndentedLogMsg:l}",
5258
logLevelName, callerSourceFile, callerName, callerLineNumber, indentedLogMsg);
5359
return;
5460
case LogLevel.Normal:
55-
_logger.Information("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:\n{IndentedLogMsg:l}\n",
61+
_logger.Information("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:{IndentedLogMsg:l}",
5662
logLevelName, callerSourceFile, callerName, callerLineNumber, indentedLogMsg);
5763
return;
5864
case LogLevel.Warning:
59-
_logger.Warning("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:\n{IndentedLogMsg:l}\n",
65+
_logger.Warning("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:{IndentedLogMsg:l}",
6066
logLevelName, callerSourceFile, callerName, callerLineNumber, indentedLogMsg);
6167
return;
6268
case LogLevel.Error:
63-
_logger.Error("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:\n{IndentedLogMsg:l}\n",
69+
_logger.Error("[{LogLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:{IndentedLogMsg:l}",
6470
logLevelName, callerSourceFile, callerName, callerLineNumber, indentedLogMsg);
6571
return;
6672
}
@@ -81,8 +87,10 @@ public void WriteException(
8187
[CallerFilePath] string callerSourceFile = null,
8288
[CallerLineNumber] int callerLineNumber = 0)
8389
{
84-
_logger.Error("[{Error:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}:\n {ErrorMessage:l}\n {Exception:l}\n",
85-
LogLevel.Error.ToString().ToUpper(), callerSourceFile, callerName, callerLineNumber, errorMessage, exception);
90+
string indentedException = IndentMsg(exception.ToString());
91+
92+
_logger.Error("[{ErrorLevelName:l}] {CallerSourceFile:l}: In method '{CallerName:l}', line {CallerLineNumber}: {ErrorMessage:l}{IndentedException:l}",
93+
ErrorLevelName, callerSourceFile, callerName, callerLineNumber, errorMessage, indentedException);
8694
}
8795

8896
/// <summary>
@@ -92,33 +100,35 @@ public void WriteException(
92100
/// <returns>The indented log message string.</returns>
93101
private static string IndentMsg(string logMessage)
94102
{
95-
string[] msgLines = logMessage.Split('\n');
96-
97-
for (int i = 0; i < msgLines.Length; i++)
98-
{
99-
msgLines[i] = msgLines[i].Insert(0, " ");
100-
}
101-
102-
return String.Join("\n", msgLines)+"\n";
103+
return new StringBuilder(logMessage)
104+
.Replace(Environment.NewLine, s_indentedPrefix)
105+
.Insert(0, s_indentedPrefix)
106+
.AppendLine()
107+
.ToString();
103108
}
104109

110+
/// <summary>
111+
/// A newline followed by a single indentation prefix.
112+
/// </summary>
113+
private static readonly string s_indentedPrefix = Environment.NewLine + " ";
114+
105115
#region IDisposable Support
106-
private bool disposedValue = false; // To detect redundant calls
116+
private bool _disposedValue = false; // To detect redundant calls
107117

108118
/// <summary>
109119
/// Internal disposer.
110120
/// </summary>
111121
/// <param name="disposing">Whether or not the object is being disposed.</param>
112122
protected virtual void Dispose(bool disposing)
113123
{
114-
if (!disposedValue)
124+
if (!_disposedValue)
115125
{
116126
if (disposing)
117127
{
118128
_logger.Dispose();
119129
}
120130

121-
disposedValue = true;
131+
_disposedValue = true;
122132
}
123133
}
124134

0 commit comments

Comments
 (0)