我在Azure工作者角色中使用Serilog&带有ElasticSearch接收器的WebApi。
工作者角色的一切正常。
在WebApi上我尝试了Trace&电子邮件汇,他们工作正常。 ElasticSearch接收器根本没有记录。
这是我的配置:
var logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Trace()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("https://myElasticServer")))
.CreateLogger();
如果我尝试在控制器中写入Logs,我将它们放在Trace中,但Trace中没有。
答案 0 :(得分:0)
问题来自自签名证书。
我已经创建了自己的CertificateValidation方法,以忽略基于排除列表的证书验证
private bool MyCertificateValidationCallback(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
var request = sender as HttpWebRequest;
if (request != null)
{
var exclusion = ConfigurationManager.AppSettings["CertificateExclusion"];
if (exclusion.Contains(request.Host))
return true;
}
return false;
}
在应用程序启动时注册
ServicePointManager.ServerCertificateValidationCallback = MyCertificateValidationCallback;