public async void Post([FromBody] string value) { //var settings = new ConnectionSettings(new Uri("http://127.0.0.1:9200")).DefaultIndex("logs"); //_elasticClient = new ElasticClient(settings); var log = new DeviceLogModel { TimeStamp = DateTime.Now, Level = "INFO", RenderedMessage = value }; //var indexResponse = _elasticClient.IndexDocument(log); var response = await _elasticClient.IndexDocumentAsync(log); //返回结构示例: /*# POST /db/user/1 * { * "_index": "db", * "_type": "user", * "_id": "1", * "_version": 1, * "result": "created", * "_shards": { * "total": 2, * "successful": 1, * "failed": 0 * }, * "_seq_no": 2, * "_primary_term": 1 * }*/ }
public async Task <IActionResult> CreateLog([FromBody] DeviceLogModel deviceLogModel) { DeviceLogDTO deviceLogDTO = _mapper.Map <DeviceLogDTO>(deviceLogModel); var actionResult = await _deviceLogService.AddLog(deviceLogDTO); return(Ok(actionResult)); }
public async void Post([FromBody] DeviceLogModel model) { try { if (model == null) { return; } string deviceId = string.Empty, product = string.Empty; if (string.IsNullOrWhiteSpace(model.DeviceNO)) { _logger.LogError("unknown log received: {model}", model); return; } // var idx = model.DeviceNO.IndexOf("-"); if (idx < 0) { _logger.LogError("unknown device log received: {model}", model); return; } deviceId = model.DeviceNO.Substring(0, idx); product = model.DeviceNO.Substring(idx + 1); if (string.IsNullOrWhiteSpace(deviceId)) { deviceId = "00000"; } if (_logByDevice) { if (DeviceNOBasedIndexCreator.NotExists(deviceId)) { var x = await _elasticClient.Indices.ExistsAsync($"logs-{deviceId}"); _logger.LogDebug("logs-{deviceId} exist={x}", deviceId, x); if (!x.Exists) { var createIndexResponse = await _elasticClient.Indices.CreateAsync($"logs-{deviceId}"); _logger.LogDebug("create index logs-{deviceId} result={createIndexResponse}", deviceId, createIndexResponse); if (createIndexResponse.Acknowledged) { DeviceNOBasedIndexCreator.Created(deviceId); } } else { DeviceNOBasedIndexCreator.Created(deviceId); } } } var log = _mapper.Map <LogModelToES>(model); log.Product = product; log.Time = DateTime.Now.ToUniversalTime(); log.DeviceId = deviceId; // ThreadId, Logger if (_logByDevice) { var l = await _elasticClient.IndexAsync(log, (a) => { return(a.Index($"logs-{deviceId}")); }); _logger.LogDebug("index doc on logs-{deviceId} result={l}", deviceId, l); } else { var response = await _elasticClient.IndexDocumentAsync(log); _logger.LogDebug("index doc on logs result={response}", response); } try { var client = _clientFactory.CreateClient("bbysDEVOPS"); model.DeviceNO = deviceId; model.RenderedMessage = string.Format("{0} {1}", product, model.RenderedMessage); var str = Newtonsoft.Json.JsonConvert.SerializeObject(model); var content = new StringContent(str, Encoding.UTF8, "application/json"); var msg = await client.PostAsync("index/Api/upload_log", content); //logger.InfoFormat("upload_log post {0}, ok={1}", str, msg.IsSuccessStatusCode); //msg.EnsureSuccessStatusCode(); //var rs = msg.Content.ReadAsStringAsync().Result; //logger.InfoFormat("upload_log response={0}", rs); } catch (Exception exx) { _logger.LogError(exx, "上报yw日志出错"); } //返回结构示例: /*# POST /db/user/1 * { * "_index": "db", * "_type": "user", * "_id": "1", * "_version": 1, * "result": "created", * "_shards": { * "total": 2, * "successful": 1, * "failed": 0 * }, * "_seq_no": 2, * "_primary_term": 1 * }*/ } catch (Exception ex) { _logger.LogError(ex, "Failed to log"); } }