使用Log4Net的Azure AppInsight

时间:2016-01-11 10:05:51

标签: azure log4net azure-application-insights

我一直在尝试使用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();
    }
}

此致 拉贾拉姆。

2 个答案:

答案 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

我发现这些都对我有用。