下面介绍如何在webapi中安装,配置log4net
webapi中使用log4net――工具/原料vs2010webapi中使用log4net――方法/步骤
webapi中使用log4net 1、
从nuget下载log4net
webapi中使用log4net 2、
在webconfig中加入关于log4net的配置,其中可以有很复杂的配置,这里只做最基本的。
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"></section>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="mylogfile.txt"/>
<param name="AppendToFile" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d - %m%n"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="FileAppender"/>
</root>
</log4net>
配置的具体位置如图所示
webapi中使用log4net 3、
在WebApiConfig.cs 中加上(也可以在global中加)
log4net.Config.XmlConfigurator.Configure();
webapi中使用log4net 4、
新增一个简单的loghelper类,加入一个测试方法
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("LogHelper");
public static void WriteLog(string msg)
{
logger.Info(msg);
}
webapi中使用log4net_log4net
webapi中使用log4net 5、
然后把write方法加载需要写log的方法中即可
LogHelper.WriteLog("hello can you hear me~");
webapi中使用log4net 6、
然后在浏览器上运行api/values,就可以看到项目中多了一个mylogfile.txt文件
webapi中使用log4net_log4net
webapi中使用log4net 7、
如果不想每个方法中都写一遍write,或者当需要追踪每一次api请求。那就需要把log4net写在Filter中
首先实现如果要记录每一个api请求,这个可以重写在OnActionExecuting中
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public override void OnActionExecuting(HttpActionContext filterContext)
{
var message = new StringBuilder();
message.Append(string.Format("Executing controller {0}, action {1}",
filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
filterContext.ActionDescriptor.ActionName));
log.Info(message);
}
webapi中使用log4net 8、
对每个请求的error做处理,这个需要重写OnActionExecuted
public override void OnActionExecuted(HttpActionExecutedContext filterContext)
{
if (filterContext.Exception == null)
{
return;
}
else {
Exception ex = filterContext.Exception;
log.Error(ex);
}
}
全部代码如下图
webapi中使用log4net 9、
然后api中加入filter,再加一个throw error的测试用例
浏览器中请求api/values/12,mylogfile.txt中就会有相应的记录和error信息
webapi中使用log4net_log4net
webapi中使用log4net――注意事项实际项目中还需要全面的考虑,这里只是针对log4net的demo