【问题标题】:Azure AppInsight with Log4Net带有 Log4Net 的 Azure AppInsight
【发布时间】:2016-08-18 16:09:02
【问题描述】:

我一直在尝试使用 Log4Net 而不是默认的 api Telemetry 客户端在 Azure AppInsights 中编写日志(跟踪、信息和异常)。当我从 VS2013 运行应用程序时,我既没有收到任何错误消息,也没有在 Azure 门户中看到日志。

请帮我解决这个问题。

注意:我正在为 AppIinsights 使用 Log4net 附加程序。 网页配置

 <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();
    }
}

问候, 拉贾拉姆。

【问题讨论】:

  • 可以分享一下相关代码吗?

标签: azure log4net azure-application-insights


【解决方案1】:

如果您没有看到 任何 log4net 输出,我假设您缺少一些 log4net 启动代码,如下所示:

log4net.Config.XmlConfigurator.Configure();

你可能想要在你的启动类/代码中的某个地方。没有它,log4net 不知道我会读取 web.config 中的配置。

【讨论】:

    【解决方案2】:

    除了@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

    我发现这两个对我都有进一步的用处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 2015-05-02
      • 2010-12-18
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      相关资源
      最近更新 更多