public NLogLogger(string fileName, string logDirectory = null, string loggerName = null) { var name = string.IsNullOrEmpty(loggerName) ? StackTraceUsageUtils.GetClassFullName().Replace("Nethermind.", string.Empty) : loggerName; Logger = NLog.LogManager.GetLogger(name); var logsDir = string.IsNullOrEmpty(logDirectory) ? Path.Combine(PathUtils.GetExecutingDirectory(), "logs") : logDirectory; if (!Directory.Exists(logsDir)) { Directory.CreateDirectory(logsDir); } if (NLog.LogManager.Configuration?.AllTargets.SingleOrDefault(t => t.Name == "file") is FileTarget target) { target.FileName = !Path.IsPathFullyQualified(fileName) ? Path.Combine("logs", fileName) : fileName; } /* NOTE: minor perf gain - not planning to switch logging levels while app is running */ IsInfo = Logger.IsInfoEnabled; IsWarn = Logger.IsWarnEnabled; IsDebug = Logger.IsDebugEnabled; IsTrace = Logger.IsTraceEnabled; IsError = Logger.IsErrorEnabled || Logger.IsFatalEnabled; }
public static string GetClassFullName() { int skipFrames = 3; string empty = string.Empty; int num = 0; return(StackTraceUsageUtils.GetClassFullName(new StackFrame(skipFrames, num != 0))); }
/// <summary> /// Gets the fully qualified name of the class invoking the calling method, including the /// namespace but not the assembly. /// </summary> /// <param name="stackFrame">StackFrame from the calling method</param> /// <returns>Fully qualified class name</returns> public static string GetClassFullName(StackFrame stackFrame) { string str = StackTraceUsageUtils.LookupClassNameFromStackFrame(stackFrame); if (string.IsNullOrEmpty(str)) { str = StackTraceUsageUtils.GetClassFullName(new StackTrace(false)); } return(str); }
private static string GetClassFullName(StackTrace stackTrace) { foreach (StackFrame frame in stackTrace.GetFrames()) { string str = StackTraceUsageUtils.LookupClassNameFromStackFrame(frame); if (!string.IsNullOrEmpty(str)) { return(str); } } return(string.Empty); }
/// <summary> /// Returns the classname from the provided StackFrame (If not from internal assembly) /// </summary> /// <param name="stackFrame"></param> /// <returns>Valid class name, or empty string if assembly was internal</returns> public static string LookupClassNameFromStackFrame(StackFrame stackFrame) { MethodBase method = stackFrame.GetMethod(); if (method != (MethodBase)null && StackTraceUsageUtils.LookupAssemblyFromStackFrame(stackFrame) != (Assembly)null) { string str = StackTraceUsageUtils.GetStackFrameMethodClassName(method, true, true, true) ?? method.Name; if (!string.IsNullOrEmpty(str) && !str.StartsWith("System.", StringComparison.Ordinal)) { return(str); } } return(string.Empty); }
public NLogLogger(string fileName) { _logger = NLog.LogManager.GetLogger(StackTraceUsageUtils.GetClassFullName().Replace("Nethermind.", string.Empty)); if (!Directory.Exists("logs")) { Directory.CreateDirectory("logs"); } if (NLog.LogManager.Configuration.AllTargets.SingleOrDefault(t => t.Name == "file") is FileTarget target) { target.FileName = !Path.IsPathFullyQualified(fileName) ? Path.Combine("logs", fileName) : fileName; } /* NOTE: minor perf gain - not planning to switch logging levels while app is running */ IsInfoEnabled = _logger.IsInfoEnabled; IsWarnEnabled = _logger.IsWarnEnabled; IsDebugEnabled = _logger.IsDebugEnabled; IsTraceEnabled = _logger.IsTraceEnabled; IsErrorEnabled = _logger.IsErrorEnabled || _logger.IsFatalEnabled; }