Serilog ElasticSearch 接收器在 WebApi 中不起作用

Serilog ElasticSearch sink not working in WebApi

我在 Azure 辅助角色中使用 Serilog,在 ElasticSearch 接收器中使用 WebApi。

Worker 角色一切正常。

在 WebApi 上,我尝试了跟踪和电子邮件接收器,它们工作正常。 ElasticSearch 接收器根本不记录。

这是我的配置:

var logger = new LoggerConfiguration()
                   .MinimumLevel.Information()
                   .WriteTo.Trace()
                   .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("https://myElasticServer")))
                   .CreateLogger();

如果我尝试在控制器中写入日志,我在 Trace 中有它们,但在 Trace 中没有。

问题出在自签名证书上。

我创建了自己的 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;