Skip to content

Commit

Permalink
Refactor: split methods
Browse files Browse the repository at this point in the history
  • Loading branch information
304NotModified committed Dec 1, 2017
1 parent 2f1c0c5 commit c960d27
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 49 deletions.
89 changes: 49 additions & 40 deletions src/NLog.Extensions.Logging/NLogLogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,54 +56,63 @@ private LogEventInfo CreateLogEventInfo(LogLevel nLogLogLevel, string message, I
{
// More than a single parameter (last parameter is the {OriginalFormat})
var firstParameterName = parameterList[0].Key;
if (!string.IsNullOrEmpty(firstParameterName))
if (!string.IsNullOrEmpty(firstParameterName) && (firstParameterName.Length != 1 || !char.IsDigit(firstParameterName[0])))
{
if (firstParameterName.Length != 1 || !char.IsDigit(firstParameterName[0]))
{
return CreateLogEventInfoWithMultipleParameters(nLogLogLevel, message, parameterList);
}
}
return LogEventInfo.Create(nLogLogLevel, _logger.Name, message);
}

#if !NETSTANDARD1_3
var originalFormat = parameterList[parameterList.Count - 1];
string originalMessage = null;
if (originalFormat.Key == OriginalFormatPropertyName)
{
// Attempt to capture original message with placeholders
originalMessage = originalFormat.Value as string;
}

var messageTemplateParameters = new NLogMessageParameterList(parameterList, originalMessage != null);
var eventInfo = new LogEventInfo(nLogLogLevel, _logger.Name, originalMessage ?? message, messageTemplateParameters);
if (originalMessage != null)
{
eventInfo.Parameters = new object[messageTemplateParameters.Count + 1];
for (int i = 0; i < messageTemplateParameters.Count; ++i)
eventInfo.Parameters[i] = messageTemplateParameters[i].Value;
eventInfo.Parameters[messageTemplateParameters.Count] = message;
eventInfo.MessageFormatter = (l) => (string)l.Parameters[l.Parameters.Length - 1];
}
return eventInfo;
private LogEventInfo CreateLogEventInfoWithMultipleParameters(LogLevel nLogLogLevel, string message, IReadOnlyList<KeyValuePair<string, object>> parameterList)
{
var originalFormat = parameterList[parameterList.Count - 1];
string originalMessage = null;
if (originalFormat.Key == OriginalFormatPropertyName)
{
// Attempt to capture original message with placeholders
originalMessage = originalFormat.Value as string;
}

var messageTemplateParameters = new NLogMessageParameterList(parameterList, originalMessage != null);
var eventInfo = new LogEventInfo(nLogLogLevel, _logger.Name, originalMessage ?? message, messageTemplateParameters);
if (originalMessage != null)
{
eventInfo.Parameters = new object[messageTemplateParameters.Count + 1];
for (int i = 0; i < messageTemplateParameters.Count; ++i)
eventInfo.Parameters[i] = messageTemplateParameters[i].Value;
eventInfo.Parameters[messageTemplateParameters.Count] = message;
eventInfo.MessageFormatter = (l) => (string)l.Parameters[l.Parameters.Length - 1];
}
return eventInfo;
}

#else
var eventInfo = LogEventInfo.Create(nLogLogLevel, _logger.Name, message);
for (int i = 0; i < parameterList.Count; ++i)
{
var parameter = parameterList[i];
if (string.IsNullOrEmpty(parameter.Key))
break; // Skip capture of invalid parameters

var parameterName = parameter.Key;
switch (parameterName[0])
{
case '@': parameterName = parameterName.Substring(1); break;
case '$': parameterName = parameterName.Substring(1); break;
}
eventInfo.Properties[parameterName] = parameter.Value;
}
return eventInfo;
#endif
}

private LogEventInfo CreateLogEventInfoWithMultipleParameters(LogLevel nLogLogLevel, string message, IReadOnlyList<KeyValuePair<string, object>> parameterList)
{
var eventInfo = LogEventInfo.Create(nLogLogLevel, _logger.Name, message);
for (int i = 0; i < parameterList.Count; ++i)
{
var parameter = parameterList[i];
if (string.IsNullOrEmpty(parameter.Key))
break; // Skip capture of invalid parameters

var parameterName = parameter.Key;
if (parameterName[0] == '@' || parameterName[0] == '$')
{
parameterName = parameterName.Substring(1);
}
eventInfo.Properties[parameterName] = parameter.Value;
}
return LogEventInfo.Create(nLogLogLevel, _logger.Name, message);
return eventInfo;
}

#endif


private void CaptureEventId(EventId eventId, LogEventInfo eventInfo)
{
if (!_options.IgnoreEmptyEventId || eventId.Id != 0 || !string.IsNullOrEmpty(eventId.Name))
Expand Down
15 changes: 6 additions & 9 deletions src/NLog.Extensions.Logging/NLogMessageParameterList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ internal class NLogMessageParameterList : IList<NLog.MessageTemplates.MessageTem

public NLogMessageParameterList(IReadOnlyList<KeyValuePair<string, object>> parameterList, bool includesOriginalMessage)
{
List<KeyValuePair<string, object>> validParameterList = includesOriginalMessage ? null : new List<KeyValuePair<string, object>>();
var validParameterList = includesOriginalMessage ? null : new List<KeyValuePair<string, object>>();
for (int i = 0; i < parameterList.Count; ++i)
{
if (!string.IsNullOrEmpty(parameterList[i].Key) && (parameterList[i].Key != NLogLogger.OriginalFormatPropertyName || i == parameterList.Count - 1))
var paramPair = parameterList[i];
if (!string.IsNullOrEmpty(paramPair.Key) && (paramPair.Key != NLogLogger.OriginalFormatPropertyName || i == parameterList.Count - 1))
{
if (validParameterList != null)
if (validParameterList != null && paramPair.Key != NLogLogger.OriginalFormatPropertyName)
{
if (parameterList[i].Key != NLogLogger.OriginalFormatPropertyName)
validParameterList.Add(parameterList[i]);
validParameterList.Add(paramPair);
}
}
else
Expand All @@ -38,10 +38,7 @@ public NLogMessageParameterList(IReadOnlyList<KeyValuePair<string, object>> para
}
}
}
if (validParameterList != null)
{
validParameterList.Add(new KeyValuePair<string, object>());
}
validParameterList?.Add(new KeyValuePair<string, object>());
_parameterList = validParameterList ?? parameterList;
}

Expand Down

0 comments on commit c960d27

Please sign in to comment.