//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Builds log folder name. </summary> /// /// <remarks> Msacli, 29.04.2019. </remarks> /// /// <param name="logType"> Log Type. </param> /// <param name="assemblyName"> Name of the assembly. </param> /// <param name="className"> Name of the class. </param> /// <param name="methodName"> Name of the method. </param> /// /// <returns> A string. </returns> //////////////////////////////////////////////////////////////////////////////////////////////////// protected string BuildLogFolderName(SimpleLogType logType, string assemblyName, string className, string methodName) { var assemblyFolderName = assemblyName.NormalizeString(); var classFolderName = className.NormalizeString(); var methodFolderName = methodName.NormalizeString(); assemblyFolderName = string.IsNullOrWhiteSpace(assemblyFolderName) ? AppLoggingValues.StaticFolderName : assemblyFolderName; classFolderName = string.IsNullOrWhiteSpace(classFolderName) ? AppLoggingValues.StaticFolderName : classFolderName; methodFolderName = string.IsNullOrWhiteSpace(methodFolderName) ? AppLoggingValues.StaticFolderName : methodFolderName; var folderName = string.Empty; var logTypefolderName = GetLogTypeFolderName(logType); if (this.EnableMethodGrouping) { folderName = $"{AppLoggingValues.AssemblyDirectory}/{assemblyFolderName}/{classFolderName}/{methodFolderName}/{logTypefolderName}"; } else { folderName = $"{AppLoggingValues.AssemblyDirectory}/{logTypefolderName}/{assemblyFolderName}/{classFolderName}/{methodFolderName}"; } return(folderName); }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Logs. </summary> /// /// <remarks> Msacli, 29.04.2019. </remarks> /// /// <param name="logType"> Log Type. </param> /// <param name="dictionary"> The dictionary. </param> //////////////////////////////////////////////////////////////////////////////////////////////////// protected void Log(SimpleLogType logType, Dictionary <string, string> dictionary) { try { if (dictionary == null || dictionary.Count < 1) { return; } DateTime dt = DateTime.Now; StackFrame frame = new StackFrame(2, true); MethodBase method = frame.GetMethod(); string assemblyName = method.Module.Assembly.FullName; string className = method.ReflectedType.Name; string assemblyFileName = frame.GetFileName(); string methodName = method.Name; int line = frame.GetFileLineNumber(); int col = frame.GetFileColumnNumber(); var debugFileName = GetLogFileName(logType); var folderName = BuildLogFolderName(logType, method.Module.Assembly.GetName().Name, className, methodName); try { if (!Directory.Exists(folderName)) { Directory.CreateDirectory(folderName); } } catch (Exception e2) { WriteException(e2); } string fileName = $"{folderName}/{debugFileName}"; var rows = new List <string> { $"Time : {dt.ToString(AppLoggingValues.GeneralDateFormat)}" }; rows.Add($"Assembly : {assemblyName}"); rows.Add($"Assembly File Name : {assemblyFileName}"); rows.Add($"Class : {className}"); rows.Add($"Method Name : {methodName}"); rows.Add($"Line : {line}"); rows.Add($"Column : {col}"); var additions = DictionaryToList(dictionary); rows.AddRange(additions); rows.Add(AppLoggingValues.Lines); SimpleFileOperator.Instance.Write(fileName, rows, writeLine: true); } catch (Exception ee) { WriteException(ee); } }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Gets Log File Name. </summary> /// /// <remarks> Msacli, 29.04.2019. </remarks> /// /// <param name="logType"> Log Type. </param> /// /// <returns> returns Log File Name. </returns> //////////////////////////////////////////////////////////////////////////////////////////////////// protected string GetLogFileName(SimpleLogType logType) { var logFileName = string.Empty; switch (logType) { case SimpleLogType.Error: logFileName = AppLoggingValues.ErrorLogFileNameFormat; break; case SimpleLogType.Info: logFileName = AppLoggingValues.InfoLogFileNameFormat; break; case SimpleLogType.Debug: logFileName = AppLoggingValues.DebugLogFileNameFormat; break; default: break; } var dateString = string.Empty; if (this.LogDateFormatType == SimpleLogDateFormats.None) { logFileName = logFileName.Replace("-", string.Empty); } else { dateString = DateTime.Now.ToString(GetFileDateFormat(this.LogDateFormatType)); } logFileName = string.Format(logFileName, dateString); return(logFileName); }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Gets log type folder name. </summary> /// /// <remarks> Msacli, 29.04.2019. </remarks> /// /// <param name="logType"> Log Type. </param> /// /// <returns> The log type folder name. </returns> //////////////////////////////////////////////////////////////////////////////////////////////////// protected string GetLogTypeFolderName(SimpleLogType logType) { var logTypeFolderName = string.Empty; switch (logType) { case SimpleLogType.Error: logTypeFolderName = AppLoggingValues.ErrorFolderName; break; case SimpleLogType.Info: logTypeFolderName = AppLoggingValues.InfoFolderName; break; case SimpleLogType.Debug: logTypeFolderName = AppLoggingValues.DebugFolderName; break; default: break; } return(logTypeFolderName); }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Logs. </summary> /// /// <remarks> Msacli, 29.04.2019. </remarks> /// /// <param name="logType"> Log Type. </param> /// <param name="messages"> A variable-length parameters list containing messages. </param> //////////////////////////////////////////////////////////////////////////////////////////////////// protected void Log(SimpleLogType logType, params string[] messages) { try { if (messages == null || messages.Length < 1) { return; } var checkMessages = messages .Any(q => !string.IsNullOrWhiteSpace(q)); if (!checkMessages) { return; } DateTime dt = DateTime.Now; StackFrame frame = new StackFrame(2, true); MethodBase method = frame.GetMethod(); var assemblyName = method.Module.Assembly.FullName; var className = method.ReflectedType.Name; var assemblyFileName = frame.GetFileName(); var methodName = method.Name; int line = frame.GetFileLineNumber(); int col = frame.GetFileColumnNumber(); var errorFileName = GetLogFileName(logType); var folderName = BuildLogFolderName(logType, method.Module.Assembly.GetName().Name, className, methodName); try { if (!Directory.Exists(folderName)) { Directory.CreateDirectory(folderName); } } catch (Exception e2) { WriteException(e2); } string fileName = $"{folderName}/{errorFileName}"; var rows = new List <string> { $"Time : {dt.ToString(AppLoggingValues.GeneralDateFormat)}" }; rows.Add($"Assembly : {assemblyName}"); rows.Add($"Assembly File Name : {assemblyFileName}"); rows.Add($"Class : {className}"); rows.Add($"Method Name : {methodName}"); rows.Add($"Line : {line}"); rows.Add($"Column : {col}"); rows.AddRange(messages); rows.Add(AppLoggingValues.Lines); SimpleFileOperator.Instance.Write(fileName, rows, writeLine: true); } catch (Exception ee) { WriteException(ee); } }