c# - 将 log4net 与 asp.net web 表单一起使用

标签 c# asp.net log4net error-logging

我正在尝试将 log4net 合并到我的 Web 应用程序中。我已经使用基于 .net mvc 的较新部分完成了此操作,但无法将其合并到我的应用程序的基于 Web 表单的部分中。我四处寻找示例,但没有找到。

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

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

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

谢谢

最佳答案

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

开始我只是在我需要的每个页面中使用这一行...

static Logger log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

因此记录器获取当前类的名称,包括完整的命名空间。 我还在 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");
    }

但我将日志配置与 web.config 分开。这对我来说更容易,而且您不必处理这么大的文件。我还认为,当您更改日志配置文件时,应用程序不会重新启动。据我所知,如果您更新 web.config,应用程序总是会重新启动。

要完成此操作,您只需将以下内容添加到 web.config 添加

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

将这一行添加到 web.config 的某处

<log4net configSource="log.config"/>

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

第一个

关于c# - 将 log4net 与 asp.net web 表单一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761731/

相关文章:

c# - 从 AJAX 结果呈现 HTML 内容

asp.net - MVC、IIS 和 Azure 日志记录错误

c# - 如何获取引用变量的地址?

c# - 使用 OpenXML SDK 2.0 对来自 tableCell 的文本进行对齐

c# - 在 winrt 中遵循 SOLID 原则的同时捕获异常

c# - Windows 8 上 VS2012 中的依赖引用问题

c# - 如何使用log4net创建log.txt?

c# - 如何在文本框中键入内容时触发文本框 textchanged 事件

c# - 如何在 Asp.net Identity 中传输密码以进行登录

asp.net - 如何使用 SQL Server 和 ASP.NET MVC 将图像作为字段插入