IBM MQ 客户端的跟踪配置似乎没有被环境变量覆盖

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

我正在使用 IBMMQDotnetClient NuGet 包 (9.3.3),并且如此处所述,您应该能够使用环境变量覆盖 mqclient.ini 中定义的设置。当我在本地运行我的应用程序(Azure Function 应用程序)时,这似乎不起作用。

我的 mqclient.ini 位于我的应用程序的根目录中,包含以下内容:

    Trace:
        MQDotnetTraceLevel=2
        MQDotnetTracePath=C:\home\mq_traces

这工作正常,当我尝试连接到我的 MQ 主机时,我可以看到在该目录中创建

.TRC
文件。 但是当我尝试通过 launchSettings.json 覆盖这些设置时,没有任何变化。 launchSettings.json:

{
  "profiles": {
    "FunctionAppWithMq": {
      "commandName": "Project",
      "commandLineArgs": "--port 7222",
        "launchBrowser": false,
        "environmentVariables": {
            "MQDotnetTraceLevel": "1",
            "MQDotnetTracePath": "C:\\home\\traces_from_environment_variables"
        }
    }
  }
}

跟踪文件仍在我的 mq_traces 文件夹中生成。 我知道环境设置正确;当我在活动函数之一中使用

Environment.GetEnvironmentVariable()
记录值时,我从 launchSettings.json 中获取配置的值。

如何让 MQ 客户端使用我的环境变量?

我希望能够通过配置来控制跟踪,而不是通过 .ini 文件。但是,当我从 Azure 函数应用程序中完全删除 ini 文件时,出现以下异常:

Exception: System.TypeInitializationException: The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception.
 ---> System.IO.FileNotFoundException: Error reading the  directory.
   at System.IO.FileSystemWatcher.StartRaisingEvents()
   at IBM.WMQ.MQClientCfg.CheckForMqclientIniFileChanges()
   at IBM.WMQ.Nmqi.NmqiEnvironment..ctor(NmqiPropertyHandler nmqiPropertyHandler)
   at IBM.WMQ.Nmqi.NmqiFactory.GetInstance(NmqiPropertyHandler properties)
   at IBM.WMQ.MQQueueManager..cctor()

(本地不会出现此异常)

.net-core configuration azure-functions environment-variables ibm-mq
1个回答
0
投票

根据文档here,用于控制跟踪的环境变量是

MQDOTNET_TRACE_ON
MQTRACELEVEL
MQTRACEPATH
,而不是
MQDotnetTraceLevel
MQDotnetTracePath

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