Skip to content

Commit 6da75a2

Browse files
committed
rewrite
1 parent 9fc84d1 commit 6da75a2

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,21 +74,23 @@ public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Except
7474
return;
7575
}
7676

77-
bool parsed = false;
77+
LogEvent? evt = null;
7878
try
7979
{
80-
Write(level, eventId, state, exception, formatter, out parsed);
80+
evt = PrepareWrite(level, eventId, state, exception, formatter);
8181
}
82-
catch (Exception ex) when (!parsed)
82+
catch (Exception ex)
8383
{
8484
SelfLog.WriteLine($"Failed to write event through {typeof(SerilogLogger).Name}: {ex}");
8585
}
86+
87+
// Do not swallow exceptions from here because Serilog takes care of them in case of WriteTo and throws them back to the caller in case of AuditTo.
88+
if (evt != null)
89+
_logger.Write(evt);
8690
}
8791

88-
void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter, out bool parsed)
92+
LogEvent PrepareWrite<TState>(LogEventLevel level, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
8993
{
90-
parsed = false;
91-
var logger = _logger;
9294
string? messageTemplate = null;
9395

9496
var properties = new List<LogEventProperty>();
@@ -103,17 +105,17 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
103105
}
104106
else if (property.Key.StartsWith("@"))
105107
{
106-
if (logger.BindProperty(GetKeyWithoutFirstSymbol(DestructureDictionary, property.Key), property.Value, true, out var destructured))
108+
if (_logger.BindProperty(GetKeyWithoutFirstSymbol(DestructureDictionary, property.Key), property.Value, true, out var destructured))
107109
properties.Add(destructured);
108110
}
109111
else if (property.Key.StartsWith("$"))
110112
{
111-
if (logger.BindProperty(GetKeyWithoutFirstSymbol(StringifyDictionary, property.Key), property.Value?.ToString(), true, out var stringified))
113+
if (_logger.BindProperty(GetKeyWithoutFirstSymbol(StringifyDictionary, property.Key), property.Value?.ToString(), true, out var stringified))
112114
properties.Add(stringified);
113115
}
114116
else
115117
{
116-
if (logger.BindProperty(property.Key, property.Value, false, out var bound))
118+
if (_logger.BindProperty(property.Key, property.Value, false, out var bound))
117119
properties.Add(bound);
118120
}
119121
}
@@ -124,7 +126,7 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
124126
if (messageTemplate == null && !stateTypeInfo.IsGenericType)
125127
{
126128
messageTemplate = "{" + stateType.Name + ":l}";
127-
if (logger.BindProperty(stateType.Name, AsLoggableValue(state, formatter), false, out var stateTypeProperty))
129+
if (_logger.BindProperty(stateType.Name, AsLoggableValue(state, formatter), false, out var stateTypeProperty))
128130
properties.Add(stateTypeProperty);
129131
}
130132
}
@@ -145,7 +147,7 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
145147

146148
if (propertyName != null)
147149
{
148-
if (logger.BindProperty(propertyName, AsLoggableValue(state, formatter!), false, out var property))
150+
if (_logger.BindProperty(propertyName, AsLoggableValue(state, formatter!), false, out var property))
149151
properties.Add(property);
150152
}
151153
}
@@ -154,9 +156,7 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
154156
properties.Add(CreateEventIdProperty(eventId));
155157

156158
var parsedTemplate = MessageTemplateParser.Parse(messageTemplate ?? "");
157-
var evt = new LogEvent(DateTimeOffset.Now, level, exception, parsedTemplate, properties);
158-
parsed = true;
159-
logger.Write(evt);
159+
return new LogEvent(DateTimeOffset.Now, level, exception, parsedTemplate, properties);
160160
}
161161

162162
static object? AsLoggableValue<TState>(TState state, Func<TState, Exception, string> formatter)

0 commit comments

Comments
 (0)