如何在F#寓言中登录到Application Insights?

时间:2019-05-15 09:09:07

标签: logging f# azure-application-insights fable-f#

我正在用F#开发一个SAFE应用程序,其中一部分是将一些日志发送到Azure中的Application Insights。服务器端日志记录有点easy

open Microsoft.ApplicationInsights
open Microsoft.ApplicationInsights.Extensibility

let getTelemetryClient() =
    let key = <key>
    TelemetryConfiguration.Active.InstrumentationKey <- key
    TelemetryClient()

let log (message : string) =
    let logger = (lazy getTelemetryClient()).Value
    logger.TrackTrace message
    logger.Flush()

现在我想在寓言中在客户端做类似的事情。我有一个AI密钥,我需要以某种方式将数据发送到Azure。相同的代码不会转换为JS。

1 个答案:

答案 0 :(得分:2)

这可以通过寓言中的dynamic programming来实现。

  1. package.json中添加AI JS依赖项:
{
    ...
    "devDependencies": {
        ...
        "applicationinsights-js": "^1.0.20"
    }
}
  1. webpack.config.js中反映出来:
fsharpEntry: {
    "app": [
         ...
        "applicationinsights-js"
    ]
}
  1. 设置日志记录(在应用程序的初始化阶段调用此记录):
open Fable.Core.JsInterop
open Fable.Import.Browser

let setup() = 
    let key = <key>
    let config = createObj [ "instrumentationKey" ==> key ]
    window?appInsights?downloadAndSetup config
  1. 这样登录:
let log message = window?appInsights?trackTrace message

也许有更多适当的和/或类型安全的方法,但这可行。