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

问题描述 投票:0回答:2

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

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

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

我的所有log4net配置都非常静态。我无法找到可能是根本原因的地方

c# log4net azure-application-insights
2个回答
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旧,那么尝试升级版本。


0
投票

遥测数据不会立即发送到应用程序洞察,它将批量发送然后发送。

所以对于控制台应用程序,你最好在控制台应用程序退出之前添加一些像System.Threading.Thread.Sleep(1000)这样的休眠时间。

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.