将log4net与asp.net Web表单结合使用

cra*_*ish 4 c# asp.net log4net error-logging

我正在尝试将log4net合并到我的Web应用程序中.我已经使用基于.net mvc的新部分完成了这项工作,但是我很难将其合并到我的应用程序的基于Web表单的部分中.我环顾四周寻找一个例子并没有遇到过.

为了缩小我的问题范围,让我们假设我知道如何配置我的web.config文件.我的问题是:

(1)我考虑将实际调用log4net放在"Global.asax"文件中,并将其放在我的基页(构建所有其他页面)上.我应该将实际代码放在这些地方中的哪一个,如果不是,我应该把代码放在哪里?

(2)我对代码的理解是我需要实例化一个日志,然后在我想要的时候记录日志(日志的细节由web.config处理),但我不知道该代码应该是什么样子.那么,我应该在我的文件中放置什么代码?(例如,将不胜感激)

谢谢

nWo*_*orx 7

只需将代码放在您需要的地方.

发起我只需在我需要的每个页面中使用此行...

static Logger log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)

所以记录器获取当前类的名称,包括完整名称空间.我还使用global.asax中的记录器来进行错误记录

protected void Application_Error(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Unhandled error occured in application. Sender: ");
        sb.AppendLine(Request.RawUrl);
        sb.Append("Query: ");
        sb.AppendLine(Request.QueryString.ToString());

        Exception ex = Server.GetLastError().GetBaseException();

        log.Error(sb.ToString(), ex);
        Server.ClearError();

        Response.Redirect("~/Error.aspx");
    }
Run Code Online (Sandbox Code Playgroud)

但是我从web.config中分离了日志配置.它对我来说更容易,你不必处理如此大的文件.我还认为,当您更改日志配置文件时,应用程序不会重新启动.如果你更新web.config,应用程序总是重新启动,据我所知.

要完成此任务,您只需要在web.config中添加以下内容即可

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
Run Code Online (Sandbox Code Playgroud)

而不是在web.config中的某处添加此行

<log4net configSource="log.config"/>
Run Code Online (Sandbox Code Playgroud)

然后文件"log.config"配置了所有侦听器.但不要忘记将文件复制到您的生产/测试环境.否则你可能会得到奇怪的错误信息.

心连心