请求大虾指点:
我现在想用log4net记录当前函数是被上层哪个函数调用的,请问有什么办法?
当前使用三层架构,想在DAL层获取是哪个BLL层的函数调用的当前函数,同时再获取是哪个页面的事件调用的BLL层的函数。
十万火急!!!!!!!!!!!!!!!!!!!
如何在被调用方法中获取调用方的相关信息呢,其实这个问题就是利用调用堆栈来获取这些信息.利用调用堆栈可以获取很多有用的信息.
由于代码比较简单,所以也不多说了:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyTest t = new MyTest();
t.add(1);
}
}
public class MyTest
{ public void add(int i)
{
i++;
StackTrace ss = new StackTrace(true);
Type t = ss.GetFrame(1).GetMethod().DeclaringType;
MessageBox.Show(t.FullName);
}
}
}
引自:http://www.itwis.com/html/net/c/20090304/3505.html
还有这篇文章也可用于参考:http://blog.csdn.net/laorer/archive/2009/04/24/4105841.aspx
这个应该与层无关。
你可以在任意想要记录日志的地方,创建实例
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
这里可以参考
http://www.cnblogs.com/downmoon/archive/2009/01/13/1374745.html
http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx