无法从一个C#控制台项目中使用log4net将消息记录到Application Insights

时间:2019-03-27 02:06:03

标签: c# log4net azure-application-insights

我有两个控制台应用程序A和B。这两个项目作为Azure Webjobs托管。 我配置了控制台,滚动文件和应用程序。通用项目C ConfigManager.cs文件中的Insights追加程序。

A正在调用C.ConfigManager来配置附加程序。 A.Orchestrator能够将消息记录到所有3个附加程序。

B也正在调用C.ConfigManager来配置附加程序。 B.Orchestrator能够将消息记录到控制台和滚动文件附加程序,但不能记录到Application Insights。

我的所有log4net配置几乎都是静态的。 我无法在这里找到根本原因

2 个答案:

答案 0 :(得分:0)

您可以尝试使用log4net的内部调试:

类似这样的东西:

<appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

然后写入文件:

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\users\desktop\log.txt" />
        </listeners>
    </trace>
</system.diagnostics>

或者,您可以检查ApplicationInsights的版本。如果它的版本早于AILog4netAppender,请尝试升级该版本。

答案 1 :(得分:0)

遥测数据不会立即发送到应用程序见解,而是将进行批处理然后发送。

因此,对于控制台应用程序,最好在退出控制台应用程序之前添加一些休眠时间,例如System.Threading.Thread.Sleep(1000)

希望有帮助。