通过Azure KeyVault抑制控制台日志记录

时间:2017-12-26 18:12:41

标签: c# azure azure-keyvault

我在Net Core 2控制台应用中使用C#访问Azure密钥保管库。每当应用程序运行时,当我从保险库中检索秘密时,控制台窗口会被这样的消息命中:

  

2017-12-26T18:03:49.8610049Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   AcquireTokenHandlerBase.cs:带有汇编版本的ADAL PCL.CoreCLR   '3.17.3.35304',文件版本'3.17.41219.2324'和信息   版本'b6afaeae7cff965e66649e0ee7e8c29071d5a7e6'正在运行...   2017-12-26T18:03:49.8621855Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   AcquireTokenHandlerBase.cs:=== Token Acquisition开始:           权限:https://login.windows.net/[...]/           资源:https://vault.azure.net           ClientId:[...]           CacheType:null           身份验证目标:客户端

     

2017-12-26T18:03:49.8981211Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   AcquireTokenHandlerBase.cs:从缓存加载。

     

2017-12-26T18:03:49.9010018Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   TokenCache.cs:查找令牌的缓存......

     

2017-12-26T18:03:49.9060990Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   TokenCache.cs:在缓存中找不到匹配的标记

     

2017-12-26T18:03:50.2185881Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   TokenCache.cs:将令牌存储在缓存中......

     

2017-12-26T18:03:50.2211369Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   TokenCache.cs:项目存储在缓存中

     

2017-12-26T18:03:50.2351165Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 -   AcquireTokenHandlerBase.cs:===令牌获取完成   成功。重新访问了访问令牌:

    Access Token Hash: [...]
    Expiration Time: 12/26/2017 7:03:49 PM +00:00
    User Hash: null

我不记得在我的代码中做任何事情来为密钥保管库访问设置任何类型的日志记录。但是,我已经在整个应用程序中配置了Serilog的ILogger,所以也许这会以某种方式被拾取。

如何禁止显示这些消息?

2 个答案:

答案 0 :(得分:6)

根据您的说明,我检查了Microsoft.Azure.KeyVault的源代码,但没有找到任何相关的日志记录。

  

2017-12-26T18:03:49.8610049Z:29c98a86-9e1d-4a5d-86d6-daf8f2cfdc56 - AcquireTokenHandlerBase .cs: ADAL PCL.CoreCLR with assembly version& #39; 3.17.3.35304',文件版本' 3.17.41219.2324'和信息版

根据日志信息,我尝试利用ILSpy反编译包Microsoft.IdentityModel.Clients.ActiveDirectory并找到以下代码:

enter image description here

enter image description here

您可以通过以下代码禁用ADAL库下的跟踪日志记录:

LoggerCallbackHandler.UseDefaultLogging = false;

<强> TEST:

enter image description here

答案 1 :(得分:0)

对于Microsoft.IdentityModel.Clients.ActiveDirectory 2.x 版本,您需要将其称为:

using Microsoft.IdentityModel.Clients.ActiveDirectory;

AdalTrace.LegacyTraceSwitch.Level = TraceLevel.Error;

对于版本 3.x + ,请使用Bruce_Chen的回答:

LoggerCallbackHandler.UseDefaultLogging = false;