当前位置: 首页 > 知识库问答 >
问题:

Serilog未登录ElasticSearch服务器并引发异常

乜业
2023-03-14

我正在尝试开始登录ElasticSearch,但在服务器中找不到日志,如果启用诊断模式,将引发异常

我的创业公司就是这样。cs看起来:

            //ElasticSearch Logs
        Log.Logger = new LoggerConfiguration()
         .Enrich.FromLogContext()
         .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("https://myserver.com:9243/"))
         {
             ModifyConnectionSettings = x => x.BasicAuthentication("elastic", "mypassword"),
             AutoRegisterTemplate = true,                 
         })
         .Enrich.FromLogContext()
         .WriteTo.Console()
        .CreateLogger();

以下是我的rogram.cs

        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>()
                .UseSerilog();
            });

这是我在控制器里的东西:

        _logger.LogError(new Exception("test"), "An error has occurred.");
        _logger.LogInformation("The {User} has just executed {Action}.", "username", "actionName");

        Log.Error("this is my first log");

我得到的例外是:

2021-08-19T21:09:15.2793348Z未能创建模板。弹性搜索。网ElasticsearchClientException:请求未能执行。调用:状态代码400来自:PUT/_模板/serilog事件模板。ServerError:Type:mapper_parsing_exception Reason:“未能解析映射[_doc]:根映射定义有不支持的参数:[默认值:{dynamic_templates=[{numerics_in_fields={match_pattern=regex,path_match=fields.[\d]$,mapping={norms=false,index=true,Type=text}},{string_fields={mapping={norms=false,index=true,type=text,fields={raw={ignore\u over=256,index=true,type=keyword}}},match\u mapping_type=string,match=}],properties={message={index=true,type=text},exceptions={type=nested,properties={ExceptionMessage type=integer}},properties={MemberType={type=integer},StackTraceString={index=true,type=text},HResult={type=integer},RemoteStackTraceString={index=true,type=text},RemoteStackIndex={type=integer},Depth={type=integer}}}]“原因是:”type:mapper_parsing_exception Reason:“根映射定义有不支持的参数:[默认值:{dynamic_templates=[{numerics_in_fields={match_pattern=regex,path_match=fields.[\d]$,mapping={norms=false,index=true,type=text}},{string_fields={mapping={={raw={ignore_over=256,index=true,type=keyword}}}},match_mapping_type=string,match=}],properties={message={index=true,type=text},exceptions={type=nested,properties={ExceptionMessage={type=integer}},StackTraceString={index=true,type=text},HResult={type=integer},在Elasticsearch中,RemoteStackTraceString={index=true,type=text},RemoteStackIndex={type=integer},Depth={type=integer}]”。网交通1。在Elasticsearch上处理LasticSearchClientException(请求数据、异常clientException、IElasticsearchResponse响应)。网运输1。Elasticsearch上的FinalizerResponse[TreResponse](RequestData RequestData,IRequestPipeline管道,列表1请参见概念,TreResponse响应)。网运输1。Elasticsearch上的请求[TreResponse](HttpMethod方法、字符串路径、PostData数据、IRequestParameters requestParameters)。网ElasticLowLevelClient。Elasticsearch上的DoRequest[TreResponse](HttpMethod方法、字符串路径、PostData数据、IRequestParameters requestParameters)。网NamespacedClientProxy。Elasticsearch上的DoRequest[TreResponse](HttpMethod post,字符串url,PostData body,IRequestParameters参数)。网规格指示牌。LowlevelIndicatesNamespace。在Serilog中放置PutTemplateForAll[TreResponse](字符串名称、PostData正文、PutIndexTemplateRequestParameters和requestParameters)。下沉。弹性搜索。弹性状态。RegisterTemplateIfRequired()

有什么线索我可能会错过或任何提示,如何找出错误在哪里?

共有1个答案

申高卓
2023-03-14

似乎接收器无法向Elasticsearch注册模板。这可能是因为您使用的是最新版本的Elasticsearch,而没有指定您使用的版本,所以接收器假设您使用的是5.0之前的旧版本:

当使用自动注册模板功能时,这允许设置Elasticsearch版本。将根据版本选择模板。默认为5.0之前的版本。

你应该自动注册模板版本。ESv7自动注册模板版本。ESv6取决于您使用的版本

例如

Log.Logger = new LoggerConfiguration()
    .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200") )
    {
        AutoRegisterTemplate = true,
        AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7, // <<<<<#####
    })
    .CreateLogger();
 类似资料:
  • 使用以下命令登录 ftp服务器: lftp ftp://用户名[:密码]@服务器地址[:端口] #标准方式,推荐 lftp 用户名[:密码]@服务器地址[:端口] lftp 服务器地址 [-p 端口] -u 用户名[,密码] lftp 服务器地址[:端口] -u 用户名[,密码] 如果不指定端口,默认 21 如果不在命令中使用明文输入密码,连接时会询问密码(推荐) 可以使用“书签”收藏服务器

  • 现在,我正在尝试使用log4j2将所有具有信息级别或更高级别(警告、错误和致命)的内容记录到我的服务器,并将所有具有信息级别的内容记录到我的控制台。我能够把事情记录到我的控制台上,但是,我在正确地将正确的级别记录到服务器上时遇到了问题。 以下是我迄今为止尝试过的: Java XML 上面的代码没有输出我想要的,这是有INFO级别输出到控制台和INFO级别和向上输出到服务器。 相反,我能够输出:一切

  • 我也试着跟着索尔。 elasticsearch无法在ubuntu 15.10中启动服务

  • 我正在将本地netty服务器连接到远程https服务器以代理请求。 下面是我如何创建ssLcontext bean 当我点击我的本地主机时,它应该代理到后端。我得到以下异常。但是,如果SSL关闭并且我连接到远程,这是在不同端口上运行的本地服务器,则工作正常 编辑 添加的日志

  • 不同于顺序服务器,并发服务器 就要能在一个时间为多个客户端提供服务。 例如,一个聊天服务器可能服务一个特定的客户端数小时 ──在停止为这个客户端服务之前服务器不能等待, 除非是在等待一下个客户端到来之前的间隙才能等待。 这需要在我们的流程图中做一个重要的更改: 我们将提供服务从 守护进程移至它自己的服务进程。 然而,因为每个子进程都继承所有打开的文件(套接字被像文件一样处理), 新进程不仅继承“a

  • 问题内容: 我已经安装了运行的ElasticSearch服务器: 如何配置Java客户端以连接到该服务器?我刚刚: 但是,尝试连接后,我收到了: 如果我将Java客户端配置为: 我收到以下日志: 据我了解,这意味着这个新节点(应该是客户端节点)使自己成为新的主节点。而且我不会从日志中找到它并连接到任何其他节点。 服务器和客户端都在同一台计算机上启动。192.168.1.106:9200可从浏览器访