我一直在尝试使用Log4Net而不是默认的api遥测客户端在Azure AppInsights中编写日志(跟踪,信息和例外)。当我从VS2013运行应用程序时,我既没有收到任何错误消息,也没有看到Azure门户中的日志。
请求帮我解决这个问题。
注意:我使用Log4net appender进行AppIinsights。 Web.Config中
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="aiAppender" />
</root>
<appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
MVC控制器
public class HomeController : Controller
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public ActionResult Index()
{
//Trace.TraceInformation("Home accessed at : {0}", DateTime.UtcNow);
Log.Info(string.Format("Home accessed at : {0}", DateTime.UtcNow));
return View();
}
}
此致 拉贾拉姆。
答案 0 :(得分:0)
如果您没有看到任何 log4net输出,我假设您缺少一些log4net启动代码,如下所示:
log4net.Config.XmlConfigurator.Configure();
你可能想要在你的启动类/代码中。没有它,log4net不知道我读取了web.config中的配置。
答案 1 :(得分:0)
除了@JohnGardner的答案之外,你可以改为在AssemblyInfo.cs文件中添加一行: -
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
以下问题对这两种方法有更多的讨论: -
Configure Log4Net in web application
在该讨论的某个地方的评论中,有一个指向log4net常见问题解答的链接,它涉及“我应该何时记录我的第一条消息?”这一问题的差异: -
https://logging.apache.org/log4net/release/faq.html#first-log
我发现这些都对我有用。