8000 MicrosoftConsoleJsonLayout - Unit Test TimestampFormat (#776) · NLog/NLog.Extensions.Logging@699e3ab · GitHub
[go: up one dir, main page]

Skip to content

Commit 699e3ab

Browse files
authored
MicrosoftConsoleJsonLayout - Unit Test TimestampFormat (#776)
1 parent a8f22ff commit 699e3ab

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

src/NLog.Extensions.Logging/Layouts/MicrosoftConsoleJsonLayout.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ public class MicrosoftConsoleJsonLayout : JsonLayout
1717
{
1818
private static readonly string[] EventIdMapper = Enumerable.Range(0, 50).Select(id => id.ToString(System.Globalization.CultureInfo.Inv 8000 ariantCulture)).ToArray();
1919

20-
private readonly SimpleLayout _timestampLayout = new SimpleLayout("${date:format=o:universalTime=true}");
20+
private readonly SimpleLayout _timestampLayout = new SimpleLayout("\"${date:format=o:universalTime=true}\"");
2121

2222
/// <summary>
2323
/// Initializes a new instance of the <see cref="MicrosoftConsoleJsonLayout" /> class.
2424
/// </summary>
2525
public MicrosoftConsoleJsonLayout()
2626
{
27-
Attributes.Add(new JsonAttribute("Timestamp", _timestampLayout));
27+
Attributes.Add(new JsonAttribute("Timestamp", _timestampLayout) { Encode = false });
2828
Attributes.Add(new JsonAttribute("EventId", Layout.FromMethod(evt => LookupEventId(evt), LayoutRenderOptions.ThreadAgnostic)) { Encode = false });
29-
Attributes.Add(new JsonAttribute("LogLevel", Layout.FromMethod(evt => ConvertLogLevel(evt.Level), LayoutRenderOptions.ThreadAgnostic)));
29+
Attributes.Add(new JsonAttribute("LogLevel", Layout.FromMethod(evt => ConvertLogLevel(evt.Level), LayoutRenderOptions.ThreadAgnostic)) { Encode = false });
3030
Attributes.Add(new JsonAttribute("Category", "${logger}"));
3131
Attributes.Add(new JsonAttribute("Message", "${message}"));
3232
Attributes.Add(new JsonAttribute("Exception", "${replace-newlines:${exception:format=tostring,data}}"));
@@ -79,7 +79,7 @@ public string TimestampFormat
7979
get
8080
{
8181
var index = LookupNamedAttributeIndex("Timestamp");
82-
return index >= 0 ? ((Attributes[index].Layout as SimpleLayout)?.LayoutRenderers?.FirstOrDefault() as DateLayoutRenderer)?.Format : null;
82+
return index >= 0 ? ((Attributes[index].Layout as SimpleLayout)?.LayoutRenderers?.OfType<DateLayoutRenderer>().FirstOrDefault())?.Format : null;
8383
}
8484
set
8585
{
@@ -91,9 +91,9 @@ public string TimestampFormat
9191

9292
if (!string.IsNullOrEmpty(value))
9393
{
94-
var dateLayoutRenderer = _timestampLayout.LayoutRenderers.First() as DateLayoutRenderer;
94+
var dateLayoutRenderer = _timestampLayout.LayoutRenderers.OfType<DateLayoutRenderer>().First();
9595
dateLayoutRenderer.Format = value;
96-
Attributes.Insert(0, new JsonAttribute("Timestamp", _timestampLayout));
96+
Attributes.Insert(0, new JsonAttribute("Timestamp", _timestampLayout) { Encode = false });
9797
}
9898
}
9999
}
@@ -144,17 +144,17 @@ private static string ConvertEventId(int eventId)
144144
private static string ConvertLogLevel(LogLevel logLevel)
145145
{
146146
if (logLevel == LogLevel.Trace)
147-
return nameof(Microsoft.Extensions.Logging.LogLevel.Trace);
147+
return "\"" + nameof(Microsoft.Extensions.Logging.LogLevel.Trace) + "\"";
148148
else if (logLevel == LogLevel.Debug)
149-
return nameof(Microsoft.Extensions.Logging.LogLevel.Debug);
149+
return "\"" + nameof(Microsoft.Extensions.Logging.LogLevel.Debug) + "\"";
150150
else if (logLevel == LogLevel.Info)
151-
return nameof(Microsoft.Extensions.Logging.LogLevel.Information);
151+
return "\"" + nameof(Microsoft.Extensions.Logging.LogLevel.Information) + "\"";
152152
else if (logLevel == LogLevel.Warn)
153-
return nameof(Microsoft.Extensions.Logging.LogLevel.Warning);
153+
return "\"" + nameof(Microsoft.Extensions.Logging.LogLevel.Warning) + "\"";
154154
else if (logLevel == LogLevel.Error)
155-
return nameof(Microsoft.Extensions.Logging.LogLevel.Error);
155+
return "\"" + nameof(Microsoft.Extensions.Logging.LogLevel.Error) + "\"";
156156
else
157-
return nameof(Microsoft.Extensions.Logging.LogLevel.Critical);
157+
return "\"" + nameof(Microsoft.Extensions.Logging.LogLevel.Critical) + "\"";
158158
}
159159
}
160160
}

test/NLog.Extensions.Logging.Tests/MicrosoftConsoleJsonLayoutTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ public void MicrosoftConsoleJsonLayout_NullEvent()
1717
Assert.Contains("{ \"EventId\": 0, \"LogLevel\": \"Critical\" }", result);
1818
}
1919

20+
[Fact]
21+
public void MicrosoftConsoleJsonLayout_TimestampFormat()
22+
{
23+
var layout = new MicrosoftConsoleJsonLayout() { TimestampFormat = "R" };
24+
var logEvent = new LogEventInfo(LogLevel.Error, "MyLogger", "Hello World");
25+
var result = layout.Render(logEvent);
26+
Assert.Equal($"{{ \"Timestamp\": \"{logEvent.TimeStamp.ToUniversalTime().ToString("R")}\", \"EventId\": {0}, \"LogLevel\": \"Error\", \"Category\": \"MyLogger\", \"Message\": \"Hello World\", \"State\": {{ \"{{OriginalFormat}}\": \"Hello World\" }} }}", result);
27+
}
28+
2029
[Fact]
2130
public void MicrosoftConsoleJsonLayout_ExceptionEvent()
2231
{

0 commit comments

Comments
 (0)
0