/// <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));
        }
Esempio n. 2
0
 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);
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
                    }
                }
            }
        }
Esempio n. 7
0
 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);
     }
 }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
 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);
     }
 }
Esempio n. 11
0
        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);
            }
        }