是否可以在Azure功能应用程序中使用自定义跟踪侦听器/配置?

时间:2017-09-05 14:33:10

标签: azure azure-functions

我正在使用新的Azure功能应用程序(AFA)作为更大的应用程序的一部分。 AFA是一个C#DLL,它引用了应用程序常用的其他DLL。较大的应用程序具有自定义跟踪侦听器,可以跟踪到SQL数据库并将其他信息附加到消息中。我们通过App.config / Web.config进行配置。我无法理解这应该如何在C#DLL库AFA中运行(或者如果它无法工作)。

App.config文件中,我们为(EF)数据库,共享侦听器,源,交换机和添加侦听器定义连接字符串。 E.g:

<configuration>
    <!-- ... lots of stuff ... -->
    <connectionStrings>
        <add name="MyAppLogDb" providerName="System.Data.SqlClient" connectionString="..."/>
    </connectionStrings>
    <system.diagnostics>
        <sharedListeners>
            <add name="sql" type="MyApp.EntityFrameworkTraceListener, MyApp" initializeData="MyApp">
                <filter type="System.Diagnostics.EventTypeFilter" initializeData="Information" />
            </add>
            <add name="console" type="System.Diagnostics.ConsoleTraceListener">
                <filter type="System.Diagnostics.EventTypeFilter" initializeData="Verbose" />
            </add>
        </sharedListeners>
        <sources>
            <source name="System.ServiceModel.MessageLogging">
                <listeners>
                    <add name="sql" />
                </listeners>
            </source>
            <source name="MyApp" switchName="default" switchType="System.Diagnostics.SourceSwitch">
                <listeners>
                    <add name="console" />
                    <add name="sql" />
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="default" value="Verbose" />
        </switches>
        <trace autoflush="true" useGlobalLock="false">
            <listeners>
                <add name="console" />
                <add name="sql" />
            </listeners>
        </trace>
    </system.diagnostics>
    <system.serviceModel>
        <diagnostics>
            <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" maxMessagesToLog="2147483647" maxSizeOfMessageToLog="256000" />
        </diagnostics>
    </system.serviceModel>
</configuration>

关于system.serviceModel元素:我们还使用此配置来捕获和记录WCF XML消息,以帮助调试与第三方的API问题。

通常,当我们跟踪邮件时,我们会使用自定义TraceSource,它会自动填充额外的位,但我们也会进行正常的Trace.TraceInformationWriteLine类型调用。

有没有办法用Azure功能应用程序复制它?我是否需要对这些内容进行硬编码并在代码中创建所有内容?

更新1:要清楚,原始配置无法正常工作(我真的没想到它会神奇地工作)。我尝试在代码中创建监听器并将其添加到诊断集合中,但这也没有用。我通过本地AFA主机(NPM包func host start)进行测试,它们既没有登录到控制台/主机也没有登录到数据库。螺母。

更新2:即使直接写入数据库也不起作用,但不会记录任何错误。当我打电话给SaveChanges时,它只是默默无闻......

0 个答案:

没有答案