cra*_*ish 4 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);
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"配置了所有侦听器.但不要忘记将文件复制到您的生产/测试环境.否则你可能会得到奇怪的错误信息.
心连心