|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.ComponentModel.Composition;
using Castle.DynamicProxy;
using log4net;
namespace AspectableMef.Castle
{
public class LogInterceptor : IInterceptor
{
#region Data
private static ILog logger;
#endregion
#region Ctor
public LogInterceptor(ILog logger)
{
if (LogInterceptor.logger == null)
LogInterceptor.logger = logger;
}
#endregion
#region IInterceptor members
public void Intercept(IInvocation invocation)
{
DoLogging(invocation);
}
#endregion
#region Private Methods
private void DoLogging(IInvocation invocation)
{
// let the original call go 1st
invocation.Proceed();
if (invocation.Method.HasAttribute<LogAttribute>())
{
try
{
StringBuilder sb = null;
sb = new StringBuilder(invocation.TargetType.FullName)
.Append(".")
.Append(invocation.Method)
.Append("(");
for (int i = 0; i < invocation.Arguments.Length; i++)
{
if (i > 0)
sb.Append(", ");
sb.Append(invocation.Arguments[i]);
}
sb.Append(")");
logger.Debug(sb.ToString());
invocation.Proceed();
logger.Debug("Result of " + sb + " is: " + invocation.ReturnValue);
}
catch (Exception e)
{
logger.Error(e.Message);
}
}
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)
- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence
Both of these at Sussex University UK.
Award(s)
I am lucky enough to have won a few awards for Zany Crazy code articles over the years
- Microsoft C# MVP 2016
- Codeproject MVP 2016
- Microsoft C# MVP 2015
- Codeproject MVP 2015
- Microsoft C# MVP 2014
- Codeproject MVP 2014
- Microsoft C# MVP 2013
- Codeproject MVP 2013
- Microsoft C# MVP 2012
- Codeproject MVP 2012
- Microsoft C# MVP 2011
- Codeproject MVP 2011
- Microsoft C# MVP 2010
- Codeproject MVP 2010
- Microsoft C# MVP 2009
- Codeproject MVP 2009
- Microsoft C# MVP 2008
- Codeproject MVP 2008
- And numerous codeproject awards which you can see over at my blog