/// <summary> /// Create command event /// </summary> /// <param name="format"></param> /// <returns></returns> public static IEnumerable <FormatEvent> CreateCommandEvent(string format = null) { if (format == null || string.IsNullOrWhiteSpace(format)) { yield break; } if (CasingHelper.Check(out var cmd1, format) && (cmd1 == 'U' || cmd1 == 'w')) { yield return(new FormatEvent(cmd1, 10000, CasingHelper.Format()(cmd1))); } if (PaddingHelper.Check(out var cmd2, out var width, format) && (cmd2 == 'r' || cmd2 == 'l')) { yield return(new FormatEvent(cmd2, 10001, PaddingHelper.Format()(cmd2)(width))); } if (JsonHelper.Check(format)) { yield return(new FormatEvent('j', 99999, JsonHelper.Format)); } foreach (var provider in CustomFormatProviderManager.Get()) { if (provider != null) { var additionalFormats = provider.Invoke(format); foreach (var f in additionalFormats) { yield return(f); } } } }
/// <summary> /// Create command func /// </summary> /// <param name="format"></param> /// <param name="customFormatProvider"></param> /// <returns></returns> public static IEnumerable <Func <object, IFormatProvider, object> > CreateCommandFunc( string format = null, Func <string, IEnumerable <Func <object, IFormatProvider, object> > > customFormatProvider = null) { if (format == null || string.IsNullOrWhiteSpace(format)) { yield break; } if (CasingHelper.Check(out var cmd1, format) && (cmd1 == 'U' || cmd1 == 'w')) { yield return(CasingHelper.Format()(cmd1)); } if (PaddingHelper.Check(out var cmd2, out var width, format) && (cmd2 == 'r' || cmd2 == 'l')) { yield return(PaddingHelper.Format()(cmd2)(width)); } if (JsonHelper.Check(format)) { yield return(JsonHelper.Format); } if (customFormatProvider != null) { var additionalFormatFuncs = customFormatProvider.Invoke(format); foreach (var f in additionalFormatFuncs) { yield return(f); } } }
/// <summary> /// Get level moniker /// </summary> /// <param name="value"></param> /// <param name="format"></param> /// <param name="formatProvider"></param> /// <returns></returns> public static string GetLevelMoniker(LogEventLevel value, string format = null, IFormatProvider formatProvider = null) { var(f, l) = Char(format); var levelName = Name(value); if (format == null || format.Length != 2 && format.Length != 3) { return(CasingHelper.Format()(f)(levelName, formatProvider) as string); } if (l < 1) { return(string.Empty); } if (l > 4) { var stringValue = levelName.Length > l?levelName.Substring(0, l) : levelName; return(CasingHelper.Format()(f)(stringValue, formatProvider) as string); } var levelIndex = Index(value); if (levelIndex >= MinIndex && levelIndex <= MaxIndex) { switch (f) { case 'w': return(LowercaseLevelMap[levelIndex][l - 1]); case 'U': return(UppercaseLevelMap[levelIndex][l - 1]); case 't': return(TitleCaseLevelMap[levelIndex][l - 1]); } } return(CasingHelper.Format()(f)(levelName, formatProvider) as string); }