Przeglądaj źródła

读日志文件,数据库操作

kingwang1995 7 lat temu
rodzic
commit
bf4a3ae3c6

+ 42 - 3
parkMonitor/LOG/LogManager.cs

@@ -20,6 +20,7 @@ namespace parkMonitor.LOG
         private string logFileName = string.Empty;  //日志文件名
         private string logPath = null;            //日志文件路径
         private bool writeLogTime = true;     //log文件是否写时间
+        private bool writeStatus = false;        //是否写入标志位
         private static object obj = new object();
         /// <summary>
         /// 配置文件初始化
@@ -83,13 +84,23 @@ namespace parkMonitor.LOG
                     logFileName = string.Format("{0}{1}.{2}", logPath, logType, this.logFileExtName);
                     using (StreamWriter sw = new StreamWriter(logFileName, true, logFileEncoding))
                     {
+                        //是否写时间
+                        if (logType == LogType.DATABASE)
+                        {
+                            writeLogTime = false;
+                        }
+                        else
+                        {
+                            writeLogTime = true;
+                        }
+                        ////sql类型
                         //if (logType == LogType.DATABASE)
                         //{
-                        //    writeLogTime = false;
+                        //    writeStatus = true;
                         //}
                         //else
                         //{
-                        //    writeLogTime = true;
+                        //    writeStatus = false;
                         //}
                         if (writeLogTime)
                         {
@@ -97,7 +108,8 @@ namespace parkMonitor.LOG
                         }
                         else
                         {
-                            sw.WriteLine(msg);
+                            sw.WriteLine(logFile + ":" + msg);
+
                         }
                     }
                 }
@@ -123,6 +135,33 @@ namespace parkMonitor.LOG
         {
             this.WriteLog(logType, string.Empty, msg);
         }
+        /// <summary>
+        /// 读日志文件
+        /// </summary>
+        /// <param name="sqlStatus"></param>
+        /// <param name="sqlMsg"></param>
+        public void ReadLog(out string sqlStatus, out string sqlMsg,out int count)
+        {
+            sqlStatus = null;
+            sqlMsg = null;
+            count = 0;
+            string date = System.DateTime.Now.ToString("yyyy-MM-dd");
+            string filePath = logAddress + "\\" + date + "\\" + "DATABASE.log";
+            try
+            {
+                List<string> logLines = new List<string>(File.ReadAllLines(filePath));
+                if (logLines != null)
+                {
+                    count = logLines.Count;
+                    string logLine = logLines[0];
+                    sqlStatus = logLine.Substring(0, 1);
+                    sqlMsg = logLine.Substring(2, logLine.Length - 2);
+                    logLines.RemoveAt(0);
+                    File.WriteAllLines(filePath, logLines.ToArray());
+                }
+            }
+            catch { }
+        }
 
 
 

+ 35 - 0
parkMonitor/LOG/log.cs

@@ -47,6 +47,41 @@ namespace parkMonitor.LOG
 
             }
         }
+        /// <summary>
+        /// 数据库异常的标志位
+        /// 0表示update,1表示insert
+        /// </summary>
+        /// <param name="logType"></param>
+        /// <param name="status"></param>
+        /// <param name="msg"></param>
+        public static void WriteLog(LogType logType, string status, string msg)
+        {
+            try
+            {
+                logManager.WriteLog(logType, status, msg);
+            }
+            catch
+            {
+
+            }
+        }
+        /// <summary>
+        /// 读日志文件
+        /// </summary>
+        /// <param name="sqlStatus"></param>
+        /// <param name="sqlMsg"></param>
+        /// <param name="count"></param>      
+        public static void ReadLog(out string sqlStatus, out string sqlMsg,out int count)
+        {
+            sqlStatus = null;
+            sqlMsg = null;
+            count = 0;
+            try
+            {
+                logManager.ReadLog(out sqlStatus,out sqlMsg,out count);
+            }
+            catch { }
+        }
 
     }
 }

+ 8 - 8
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -689,8 +689,8 @@ namespace parkMonitor.server.CoreThread
                             if (!Operation.MyTransaction(conn, strs, out temp))
                             {
                                 //数据库操作失败写日志
-                                Log.WriteLog(LogType.DATABASE, updateParkingSpaceSql);
-                                Log.WriteLog(LogType.DATABASE, updateFreeSpaceSql);
+                                Log.WriteLog(LogType.DATABASE, "0",updateParkingSpaceSql);
+                                Log.WriteLog(LogType.DATABASE,"0", updateFreeSpaceSql);
                                 //Log.WriteLog(LogType.DATABASE, strs.ToArray().ToString());
                             }
                         }
@@ -839,7 +839,7 @@ namespace parkMonitor.server.CoreThread
                                 if (!Operation.MyTransaction(conn, insertRecordSql, out parkingRecordsID))
                                 {
                                     //数据库操作失败写日志
-                                    Log.WriteLog(LogType.DATABASE, insertRecordSql);
+                                    Log.WriteLog(LogType.DATABASE, "1",insertRecordSql);
                                 }
                             }
                             using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
@@ -850,7 +850,7 @@ namespace parkMonitor.server.CoreThread
                                 if (!Operation.MyTransaction(conn, updateVehicleSql, out temp))
                                 {
                                     //数据库操作失败写日志
-                                    Log.WriteLog(LogType.DATABASE, updateVehicleSql);
+                                    Log.WriteLog(LogType.DATABASE,"0", updateVehicleSql);
                                 }
                             }
                         }
@@ -1100,10 +1100,10 @@ namespace parkMonitor.server.CoreThread
                                 {
                                     Log.WriteLog(LogType.NOT_DATABASE, "数据库操作出错,记录sql语句等待流程回滚");
                                     //写日志记录sql,以待之后处理
-                                    Log.WriteLog(LogType.DATABASE, updateParkingSpaceStateSql);
-                                    Log.WriteLog(LogType.DATABASE, updateFreeSpaceSql);
-                                    Log.WriteLog(LogType.DATABASE, updateVehicleStateSql);
-                                    Log.WriteLog(LogType.DATABASE, updateParkingRecordsSql);
+                                    Log.WriteLog(LogType.DATABASE, "0",updateParkingSpaceStateSql);
+                                    Log.WriteLog(LogType.DATABASE, "0",updateFreeSpaceSql);
+                                    Log.WriteLog(LogType.DATABASE, "0", updateVehicleStateSql);
+                                    Log.WriteLog(LogType.DATABASE, "0", updateParkingRecordsSql);
                                 }
                             }
                         }

+ 48 - 0
parkMonitor/server/CoreThread/CoreThreadTest2.cs

@@ -11,6 +11,7 @@ using System.Threading;
 using parkMonitor.server.uiLogServer;
 using parkMonitor.tools;
 using parkMonitor.DataBase;
+using MySql.Data.MySqlClient;
 
 namespace parkMonitor.server.CoreThread
 {
@@ -157,6 +158,53 @@ namespace parkMonitor.server.CoreThread
                 Thread.Sleep(100);
             }
 
+            //日志文件执行数据库操作
+            Task.Factory.StartNew(() =>
+            {
+                lock (Parking_Space.spaceLock)
+                {
+                    string sqlStatus;
+                    string sqlMsg;
+                    int count;
+                    Log.ReadLog(out sqlStatus, out sqlMsg, out count);
+                    if (count-- > 0)
+                    {
+                        if (sqlStatus == "1")
+                        {
+                            int parkingRecordsID = 0;
+                            try
+                            {
+                                using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
+                                {
+                                    Operation.TryOpen(conn);
+                                    Operation.MyTransaction(conn, sqlMsg, out parkingRecordsID);
+                                }
+                            }
+                            catch
+                            {
+                                throw;
+                            }
+                        }
+                        if (sqlStatus == "0")
+                        {
+                            int temp;
+                            try
+                            {
+                                using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
+                                {
+                                    Operation.TryOpen(conn);
+                                    Operation.MyTransaction(conn, sqlMsg, out temp);
+                                }
+                            }
+                            catch
+                            {
+                                throw;
+                            }
+                        }
+                    }
+                }
+            });
+
             //同步数据库
             //Task.Factory.StartNew(() =>
             //{

+ 1 - 1
parkMonitor/server/NumMachine/NumMachineSimul.cs

@@ -179,7 +179,7 @@ namespace parkMonitor.server
             });
             Task.Factory.StartNew(() =>
             {
-                //ManualParkingSimul.ins = new ManualParkingSimul();
+                ManualParkingSimul.ins = new ManualParkingSimul();
             });
            
         }