Example #1
0
        private ILogger GetLogger(string loggerName, StackTrace stackTrace, out int userFrameIndex)
        {
            loggerName = (loggerName ?? Name) ?? string.Empty;

            userFrameIndex = -1;
            if (stackTrace != null)
            {
                for (int i = 0; i < stackTrace.FrameCount; ++i)
                {
                    var frame = stackTrace.GetFrame(i);
                    loggerName = StackTraceUsageUtils.LookupClassNameFromStackFrame(frame);
                    if (!string.IsNullOrEmpty(loggerName))
                    {
                        userFrameIndex = i;
                        break;
                    }
                }
            }

            if (LogFactory != null)
            {
                return(LogFactory.GetLogger(loggerName));
            }
            else
            {
                return(LogManager.GetLogger(loggerName));
            }
        }
Example #2
0
        public NLogLogger(string fileName, string logDirectory = null, string loggerName = null)
        {
            loggerName = string.IsNullOrEmpty(loggerName) ? StackTraceUsageUtils.GetClassFullName().Replace("Nethermind.", string.Empty) : loggerName;
            Logger     = global::NLog.LogManager.GetLogger(loggerName);
            global::NLog.LogManager.GetLogger(loggerName);

            var logsDir = string.IsNullOrEmpty(logDirectory) ? "logs".GetApplicationResourcePath(): logDirectory;

            if (!Directory.Exists(logsDir))
            {
                Directory.CreateDirectory(logsDir);
            }

            if (global::NLog.LogManager.Configuration?.AllTargets.SingleOrDefault(t => t.Name == "file") is FileTarget target)
            {
                target.FileName = !Path.IsPathFullyQualified(fileName) ? Path.Combine(logsDir, 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;
        }
Example #3
0
 public NLogLogger(string fileName, string logDirectory = null, string loggerName = null)
 {
     loggerName = string.IsNullOrEmpty(loggerName) ? StackTraceUsageUtils.GetClassFullName().Replace("Nethermind.", string.Empty) : loggerName;
     Logger     = global::NLog.LogManager.GetLogger(loggerName);
     global::NLog.LogManager.GetLogger(loggerName);
     Init(fileName, logDirectory);
 }
        public ILoggerWapper GetCurrentClassLogger()
        {
            string name   = StackTraceUsageUtils.GetClassFullName();
            var    logger = LogManager.GetLogger(name);

            return(new NLogger(logger));
        }
Example #5
0
        public void CallSiteShouldWorkEvenInlined()
        {
            Type loggerType = typeof(Logger);
            var  stacktrace = StackTraceUsageUtils.GetWriteStackTrace(loggerType);
            var  index      = LoggerImpl.FindCallingMethodOnStackTrace(stacktrace, loggerType);
            var  logEvent   = new LogEventInfo(LogLevel.Error, "logger1", "message1");

            logEvent.SetStackTrace(stacktrace, index);
            Layout l        = "${callsite}";
            var    callSite = l.Render(logEvent);

            Assert.Equal("NLog.UnitTests.LayoutRenderers.CallSiteTests.CallSiteShouldWorkEvenInlined", callSite);
        }
Example #6
0
        public NLogLogger(string loggerName = null)
        {
            loggerName = string.IsNullOrEmpty(loggerName) ? GetTypeName(StackTraceUsageUtils.GetClassFullName()) : loggerName;
            _logger    = LogManager.GetLogger(loggerName);

            /* NOTE: minor perf gain - not planning to switch logging levels while app is running */
            // TODO: review the behaviour on log levels switching
            IsInfo  = _logger.IsInfoEnabled;
            IsWarn  = _logger.IsWarnEnabled;
            IsDebug = _logger.IsDebugEnabled;
            IsTrace = _logger.IsTraceEnabled;
            IsError = _logger.IsErrorEnabled || _logger.IsFatalEnabled;
            Name    = _logger.Name;
        }
Example #7
0
        public void CallSiteShouldWorkEvenInlined()
        {
            var  logEvent    = new LogEventInfo(LogLevel.Error, "logger1", "message1");
            Type loggerType  = typeof(Logger);
            var  stacktrace  = StackTraceUsageUtils.GetWriteStackTrace(loggerType);
            var  stackFrames = stacktrace.GetFrames();
            var  index       = LoggerImpl.FindCallingMethodOnStackTrace(stackFrames, loggerType) ?? 0;
            int? indexLegacy = LoggerImpl.SkipToUserStackFrameLegacy(stackFrames, index);

            logEvent.GetCallSiteInformationInternal().SetStackTrace(stacktrace, index, indexLegacy);
            Layout l        = "${callsite}";
            var    callSite = l.Render(logEvent);

            Assert.Equal("NLog.UnitTests.LayoutRenderers.CallSiteTests.CallSiteShouldWorkEvenInlined", callSite);
        }
Example #8
0
        public async Task <string> GetAsyncCallSite()
        {
            Type loggerType = typeof(Logger);
            var  stacktrace = StackTraceUsageUtils.GetWriteStackTrace(loggerType);
            var  index      = LoggerImpl.FindCallingMethodOnStackTrace(stacktrace, loggerType);
            var  logEvent   = new LogEventInfo(LogLevel.Error, "logger1", "message1");

            logEvent.SetStackTrace(stacktrace, index);

            await Task.Delay(0);

            Layout l        = "${callsite}";
            var    callSite = l.Render(logEvent);

            return(callSite);
        }
Example #9
0
        public async Task <string> GetAsyncCallSite()
        {
            var logEvent = new LogEventInfo(LogLevel.Error, "logger1", "message1");

#if !NETSTANDARD1_5
            Type loggerType  = typeof(Logger);
            var  stacktrace  = StackTraceUsageUtils.GetWriteStackTrace(loggerType);
            var  stackFrames = stacktrace.GetFrames();
            var  index       = LoggerImpl.FindCallingMethodOnStackTrace(stackFrames, loggerType) ?? 0;
            int? indexLegacy = LoggerImpl.SkipToUserStackFrameLegacy(stackFrames, index);
            logEvent.GetCallSiteInformationInternal().SetStackTrace(stacktrace, index, indexLegacy);
#endif
            await Task.Delay(0);

            Layout l        = "${callsite}";
            var    callSite = l.Render(logEvent);
            return(callSite);
        }
Example #10
0
        /// <summary>
        /// Assembly to skip?
        /// </summary>
        /// <param name="frame">Find assembly via this frame. </param>
        /// <returns><c>true</c>, we should skip.</returns>
        private static bool SkipAssembly(StackFrame frame)
        {
            var assembly = StackTraceUsageUtils.LookupAssemblyFromStackFrame(frame);

            return(assembly == null || LogManager.IsHiddenAssembly(assembly));
        }
Example #11
0
 public static Logger GetCurrentClassLogger(this ISetupBuilder setupBuilder)
 {
     return(setupBuilder.LogFactory.GetLogger(StackTraceUsageUtils.GetClassFullName()));
 }