@@ -74,19 +74,23 @@ public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Except
74
74
return ;
75
75
}
76
76
77
+ LogEvent ? evt = null ;
77
78
try
78
79
{
79
- Write ( level , eventId , state , exception , formatter ) ;
80
+ evt = PrepareWrite ( level , eventId , state , exception , formatter ) ;
80
81
}
81
82
catch ( Exception ex )
82
83
{
83
84
SelfLog . WriteLine ( $ "Failed to write event through { typeof ( SerilogLogger ) . Name } : { ex } ") ;
84
85
}
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 ) ;
85
90
}
86
91
87
- void Write < TState > ( LogEventLevel level , EventId eventId , TState state , Exception exception , Func < TState , Exception , string > formatter )
92
+ LogEvent PrepareWrite < TState > ( LogEventLevel level , EventId eventId , TState state , Exception exception , Func < TState , Exception , string > formatter )
88
93
{
89
- var logger = _logger ;
90
94
string ? messageTemplate = null ;
91
95
92
96
var properties = new List < LogEventProperty > ( ) ;
@@ -101,17 +105,17 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
101
105
}
102
106
else if ( property . Key . StartsWith ( "@" ) )
103
107
{
104
- 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 ) )
105
109
properties . Add ( destructured ) ;
106
110
}
107
111
else if ( property . Key . StartsWith ( "$" ) )
108
112
{
109
- 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 ) )
110
114
properties . Add ( stringified ) ;
111
115
}
112
116
else
113
117
{
114
- if ( logger . BindProperty ( property . Key , property . Value , false , out var bound ) )
118
+ if ( _logger . BindProperty ( property . Key , property . Value , false , out var bound ) )
115
119
properties . Add ( bound ) ;
116
120
}
117
121
}
@@ -122,7 +126,7 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
122
126
if ( messageTemplate == null && ! stateTypeInfo . IsGenericType )
123
127
{
124
128
messageTemplate = "{" + stateType . Name + ":l}" ;
125
- 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 ) )
126
130
properties . Add ( stateTypeProperty ) ;
127
131
}
128
132
}
@@ -143,7 +147,7 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
143
147
144
148
if ( propertyName != null )
145
149
{
146
- if ( logger . BindProperty ( propertyName , AsLoggableValue ( state , formatter ! ) , false , out var property ) )
150
+ if ( _logger . BindProperty ( propertyName , AsLoggableValue ( state , formatter ! ) , false , out var property ) )
147
151
properties . Add ( property ) ;
148
152
}
149
153
}
@@ -152,8 +156,7 @@ void Write<TState>(LogEventLevel level, EventId eventId, TState state, Exception
152
156
properties . Add ( CreateEventIdProperty ( eventId ) ) ;
153
157
154
158
var parsedTemplate = MessageTemplateParser . Parse ( messageTemplate ?? "" ) ;
155
- var evt = new LogEvent ( DateTimeOffset . Now , level , exception , parsedTemplate , properties ) ;
156
- logger . Write ( evt ) ;
159
+ return new LogEvent ( DateTimeOffset . Now , level , exception , parsedTemplate , properties ) ;
157
160
}
158
161
159
162
static object ? AsLoggableValue < TState > ( TState state , Func < TState , Exception , string > formatter )
0 commit comments