private void LogInfo(IMethodInvocation input) { if (!ShouldLog) return; var loggerContextInfo = new LoggerContextInfo { ObjectType = input.Target.GetType(), MethodName = input.MethodBase.Name }; // BEFORE the target method execution var serializedArguments = JsonConvert.SerializeObject(GetArgs(input)); var sessionToken = string.Empty; if (HttpContext.Current != null) { // Use Session? } var logProvider = ServiceLocator.Current.GetInstance<ILogProvider>(); logProvider.LogInfo(string.Format("Session {0}: Calling {1} with [{2}]", sessionToken, input.MethodBase, serializedArguments), loggerContextInfo); }
public void LogInfo(string message, LoggerContextInfo loggerContextInfo) { var loggerName = loggerContextInfo.ObjectType.FullName + "." + loggerContextInfo.MethodName; var logger = LogManager.GetLogger(loggerName); logger.Info(message); }
private void LogReturn(IMethodInvocation input, IMethodReturn methodReturn) { var loggerContextInfo = new LoggerContextInfo { ObjectType = input.Target.GetType(), MethodName = input.MethodBase.Name }; var outputs = JsonConvert.SerializeObject(methodReturn.Outputs); var serializedArguments = JsonConvert.SerializeObject(GetArgs(input)); var sessionToken = string.Empty; if (HttpContext.Current != null) { // Use Session? } // we can make logging faster to not-fire if we move this up to the top if (methodReturn.Exception == null) { if (!ShouldLog) return; var logProvider = ServiceLocator.Current.GetInstance<ILogProvider>(); logProvider.LogInfo(string.Format("Session {0}: Successfully finished {1} with [{2}] - Returned {3} AND Outputs {4}", sessionToken, input.MethodBase, serializedArguments, methodReturn.ReturnValue, outputs), loggerContextInfo); } else { var logMessage = "No Message"; if (methodReturn.Exception.Data.Contains("HasBeenLogged")) { logMessage = string.Format( "Session {0}: Finished {1} with [{2}] - Having Previously Logged Exception {3} with Message {4} AND Outputs {5}", sessionToken, input.MethodBase, serializedArguments, methodReturn.Exception.GetType().Name, methodReturn.Exception.Message, outputs); } else { try { methodReturn.Exception.Data.Add("HasBeenLogged", true); } catch (ArgumentException) { // what are we going to do here? } logMessage = string.Format( "Session {0}: Finished {1} with [{2}] - Having Exception {3} with Message - (StackTrace) {4} - ({5}) AND Outputs {6}", sessionToken, input.MethodBase, serializedArguments, methodReturn.Exception.GetType().Name, methodReturn.Exception.Message, methodReturn.Exception.StackTrace, outputs); } var logProvider = ServiceLocator.Current.GetInstance<ILogProvider>(); logProvider.LogError(logMessage, loggerContextInfo); } }