Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        public static string GetClassFullName()
        {
            int    skipFrames = 3;
            string empty      = string.Empty;
            int    num        = 0;

            return(StackTraceUsageUtils.GetClassFullName(new StackFrame(skipFrames, num != 0)));
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        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;
        }