/// <summary> /// LogClientMessage (should only be called from admin log controller) /// </summary> /// <param name="logEntry">message</param> /// <param name="sessionId">id of session (optional)</param> /// <param name="userName">user name (optional)</param> /// <example> /// var servicelog = new ServiceLogRepository(); /// await servicelog.LogClientMessage("FileStore API", "Hello World"); /// </example> public async Task <HttpResponseMessage> LogClientMessage( ClientLogModel logEntry, string sessionId, string userName) { // create the log entry StandardLogModel serviceLog = new StandardLogModel { Source = logEntry.Source, LogLevel = (LogLevelEnum)logEntry.LogLevel, Message = logEntry.Message, OccurredAt = DateTime.Now, SessionId = sessionId, UserName = userName, MethodName = "", FilePath = "", LineNumber = 0, StackTrace = logEntry.StackTrace }; await LogStandardLog(serviceLog); // don't care about errors return(new HttpResponseMessage(HttpStatusCode.OK)); }
private void _timerResult_Elapsed(object sender, ElapsedEventArgs e) { try { var curList = clientSendList.Where(p => p.ReceiveTime != null).ToList(); if (curList.Count > 0) { foreach (var item in curList) { int second = ExecDateDiff(DateTime.Now, item.ReceiveTime.Value); if (second > 60) { ClientLogModel logModel = new ClientLogModel(); logModel.Content = "客户端返回结果超时,请检查客户端"; logModel.IP = item.IP; InsertLog(logModel); //等待结果超时 var curResult = clientSendList.Where(p => p.IP == item.IP); if (curResult != null && curResult.FirstOrDefault() != null) { clientSendList.Remove(curResult.FirstOrDefault()); } } } } } catch (Exception ex) { LogHelper.Log("_timerResult_Elapsed" + ex.Message); } }
public async Task PostLog_NoToken_Success() { // Arrange ClientLogModel logModel = new ClientLogModel { LogLevel = 2, Message = "test", Source = "testClass", StackTrace = "" }; var logMock = new Mock <IServiceLogRepository>(); var controller = new LogController(logMock.Object) { Request = new HttpRequestMessage() }; logMock.Setup( repo => repo.LogClientMessage(logModel, It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK)); // Act var result = (ResponseMessageResult)await controller.Log(logModel); // Assert Assert.AreEqual(HttpStatusCode.OK, result.Response.StatusCode); }
public async Task PostLog_NoUserName_Success() { // Arrange ClientLogModel logModel = new ClientLogModel { LogLevel = 2, Message = "test", Source = "testClass", StackTrace = "" }; var logMock = new Mock <IServiceLogRepository>(); var token = Guid.NewGuid().ToString(); var controller = new LogController(logMock.Object) { Request = new HttpRequestMessage() }; controller.Request.Headers.Add("Session-Token", token); controller.Request.Properties[ServiceConstants.SessionProperty] = null; logMock.Setup( repo => repo.LogClientMessage(logModel, It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK)); // Act var result = (ResponseMessageResult)await controller.Log(logModel); // Assert Assert.AreEqual(HttpStatusCode.OK, result.Response.StatusCode); }
public int Insert(ClientLogModel model) { string sql = " INSERT INTO clientlog (NAME,CODE,ip,content) VALUE ('{0}','{1}','{2}','{3}') "; sql = string.Format(sql, model.Name, model.Code, model.IP, model.Content); int o = MySqlHelper.ExecuteNonQuery(sql); return(o); }
private void ShowClientMsg(IPEndPoint client, string msg) { if (this.InvokeRequired) { this.BeginInvoke(new CbDelegate <IPEndPoint, string>(this.ShowClientMsg), client, msg); } else { if (msg != "上线") { var curInfo = AppInfo.ClientInfoList.Where(p => p.IP == client.Address.ToString()); if (curInfo != null && curInfo.FirstOrDefault() != null) { msg = curInfo.FirstOrDefault().Name + "--" + curInfo.FirstOrDefault().Code + "--" + curInfo.FirstOrDefault().IP + ":" + msg; } rchInfo.AppendText(msg + "\r\n"); ClientLogModel model = new ClientLogModel(); model.Content = msg; model.IP = client.Address.ToString(); InsertLog(model); } else { var result = clientInfos.Where(p => p.IpPoint == client); if (result == null || result.FirstOrDefault() == null) { ClientInfo info = new ClientInfo(); info.IpPoint = client; info.State = 1; info.StateDes = "在线"; clientInfos.Add(info); } else { result.FirstOrDefault().State = 1; result.FirstOrDefault().StateDes = "在线"; } this.lvIps.Items.Clear(); for (int i = 0; i < clientInfos.Count; i++) { ListViewItem itemIp = new ListViewItem(new string[] { clientInfos[i].IpPoint.ToString(), clientInfos[i].StateDes }); this.lvIps.Items.Insert(0, itemIp); } } } }
public void InsertLog(ClientLogModel model) { try { var curInfo = AppInfo.ClientInfoList.Where(p => p.IP == model.IP); if (curInfo != null && curInfo.FirstOrDefault() != null) { model.Name = curInfo.FirstOrDefault().Name; model.Code = curInfo.FirstOrDefault().Code; } new ClientLogDal().Insert(model); } catch (Exception ex) { LogHelper.Log("InsertLog" + ex.Message); } }
public async Task <IHttpActionResult> Log([FromBody] ClientLogModel logEntry) { if (logEntry == null) { return(BadRequest("Log entry not provided or malformed")); } var sessionId = ExtractSessionId(Request.Headers); string userName = GetUserName(); var result = await LogRepository.LogClientMessage(logEntry, sessionId, userName); var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = result.Content; return(ResponseMessage(response)); }
public async Task LogClientMessage_Success() { // Arrange var httpClientProvider = new TestHttpClientProvider(request => new HttpResponseMessage(HttpStatusCode.OK)); var localLog = new Mock <ILocalLog>().Object; var servicelog = new ServiceLogRepository(httpClientProvider, localLog); ClientLogModel logModel = new ClientLogModel { LogLevel = 2, Message = "test", Source = "testClass", StackTrace = "" }; // Act var result = await servicelog.LogClientMessage(logModel, "admin", "1dfg342d"); // Assert Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); }
private void WriteLog() { try { while (true) { if (logCQ.Count > 0) { ClientLogModel model = new ClientLogModel(); if (logCQ.TryDequeue(out model)) { new ClientLogDal().Insert(model); } } System.Threading.Thread.Sleep(5000); } } catch (Exception ex) { LogHelper.Log(ex.Message); } }
private void _timerSendBarCode_Tick(object sender, ElapsedEventArgs e) { try { var curList = clientSendList.Where(p => p.BarCode != "").ToList(); if (curList.Count > 0) { foreach (var item in curList) { int second = ExecDateDiff(DateTime.Now, item.SendBarCodeTime); if (item.TotalSendCount >= 3) { var curResult = clientSendList.Where(p => p.IP == item.IP); if (curResult != null && curResult.FirstOrDefault() != null) { clientSendList.Remove(curResult.FirstOrDefault()); } ClientLogModel logModel = new ClientLogModel(); logModel.Content = "发送次数超超过3次,请检查客户端"; logModel.IP = item.IP; InsertLog(logModel); this.ShowClientMsg(item.IpPoint, logModel.Content); continue; } if (second > 5) { //重新发送条码 string record = "重新发送条码" + item.BarCode + "到客户端"; this.ShowClientMsg(item.IpPoint, record); ClientLogModel logModel = new ClientLogModel(); logModel.Content = record; logModel.IP = item.IP; InsertLog(logModel); //回复消息体 MsgResponseContract response = new MsgResponseContract("", item.BarCode); // response.Key = request.Key; byte[] bReponse = SerializeHelper.SerializeObject(response); //回复消息头 MessageHead head = new MessageHead(bReponse.Length, MessageType.ServerResponseBarCode); byte[] bHead = head.ToStream(); //构建回复消息 byte[] resMessage = new byte[bHead.Length + bReponse.Length]; Buffer.BlockCopy(bHead, 0, resMessage, 0, bHead.Length); Buffer.BlockCopy(bReponse, 0, resMessage, bHead.Length, bReponse.Length); //发送回复消息 this.tcpServerEngine.PostMessageToClient(item.IpPoint, resMessage); item.SendBarCodeTime = DateTime.Now; item.TotalSendCount += 1; } } } } catch (Exception ex) { LogHelper.Log("_timerSendBarCode_Tick" + ex.Message); } }