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)); } }
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; }
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)); }
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); }
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; }
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); }
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); }
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); }
/// <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)); }
public static Logger GetCurrentClassLogger(this ISetupBuilder setupBuilder) { return(setupBuilder.LogFactory.GetLogger(StackTraceUsageUtils.GetClassFullName())); }