public override bool ParseSpecific(String line, bool dontSend)
        {
            Log.Log(LogType.FILE, LogLevel.DEBUG, "Parsing Specific line");
            Log.Log(LogType.FILE, LogLevel.DEBUG, "Line Is " + line.Trim());

            //WriteMessage("line: " + line);
            Rec rec = new Rec();
            if (string.IsNullOrEmpty(line))
            {
                Log.Log(LogType.FILE, LogLevel.DEBUG, "Line is Null Or Empty");
                return true;
            }

            string[] lineArr = SpaceSplit(line, false);
            if (!dontSend)
            {
                #region Description
                try
                {
                    if (line.Length < 4000)
                    {
                        rec.Description = line;
                    }

                    else
                    {
                        rec.Description = line.Substring(0, 3999);
                        if (line.Length - 4000 > 1999)
                        {
                            rec.CustomStr10 = line.Substring(4000, line.Length - 4000);
                        }
                    }
                    rec.Description = line;
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Description: " + rec.Description);
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "Description Error" + exception.Message);
                    //WriteMessage("Description Error" + exception.Message);
                }
                #endregion

                #region datetime
                try
                {
                    DateTime dt;
                    string myDateTimeString = lineArr[0] + " " + lineArr[1].Split(',')[0];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> myDateTimeString: " + myDateTimeString);
                    dt = Convert.ToDateTime(myDateTimeString);
                    rec.Datetime = dt.ToString(dateFormat);
                    RecordFields.dateTime = rec.Datetime;
                    Log.Log(LogType.FILE, LogLevel.INFORM, "DateTime: " + rec.Datetime);
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "DateTime Error" + exception.Message);
                    //if (string.IsNullOrEmpty(RecordFields.dateTime))
                    //{
                    //    string date = "1970-01-01 00:00:00";
                    //    RecordFields.dateTime = (Convert.ToDateTime(date).ToString(dateFormat));
                    //}
                    //rec.Datetime = RecordFields.dateTime;
                    //WriteMessage("Description Error" + exception.Message);
                    rec.Datetime = DateTime.Now.ToString(dateFormat);
                    Log.Log(LogType.FILE, LogLevel.INFORM, "DateTime - Error: " + rec.Datetime);
                }
                #endregion

                #region ComputerName
                try
                {
                    if (!String.IsNullOrEmpty(remoteHost))
                    {
                        rec.ComputerName = remoteHost;
                    }
                    else
                    {
                        rec.ComputerName = Environment.MachineName;
                    }
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "ComputerName Error" + exception.Message);
                    //WriteMessage("Description Error" + exception.Message);
                }
                #endregion

                #region Info
                if (lineArr[2] == "INFO")
                {
                    //RecordFields.infoFlag = true;
                    rec.EventCategory = lineArr[2];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> EventCategory: " + rec.EventCategory);

                    rec.CustomStr1 = lineArr[3];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr1: " + rec.CustomStr1);

                    rec.CustomStr2 = lineArr[4];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr2: " + rec.CustomStr2);

                    string pipeLine = Between(line, "[#", "#]");

                    string[] pipeLineArr = pipeLine.Split('|');

                    rec.EventType = pipeLineArr[0];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> EventType: " + rec.EventType);

                    rec.CustomStr3 = pipeLineArr[4];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr3: " + rec.CustomStr3);

                    rec.CustomStr4 = pipeLineArr[2];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr4: " + rec.CustomStr4);

                    rec.CustomStr5 = pipeLineArr[5];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr5: " + rec.CustomStr5);

                    rec.CustomStr6 = pipeLineArr[6];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr6: " + rec.CustomStr6);

                    rec.CustomStr7 = pipeLineArr[7];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr7: " + rec.CustomStr7);

                    rec.CustomStr8 = pipeLineArr[3];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr8: " + rec.CustomStr8);

                    rec.CustomStr9 = pipeLineArr[1];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " ParseSpecific() -->> CustomStr9: " + rec.CustomStr9);
                }
                #endregion

                #region Error

                else if (lineArr[2] == "ERROR")
                {
                    //RecordFields.exceptionFlag = true;
                    //RecordFields.errorLine = line;

                    string[] errorLine = SpaceSplit(line, false);
                    Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> Line: " + line);

                    //RecordFields.eventCategory = errorLine[2];
                    //Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> EventCategory: " + rec.EventCategory);

                    //RecordFields.customStr1 = errorLine[3];
                    //Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> CustomStr1: " + rec.CustomStr1);

                    //RecordFields.customStr2 = errorLine[4];
                    //Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> CustomStr2: " + rec.CustomStr2);

                    rec.EventCategory = errorLine[2];
                    Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> EventCategory: " + rec.EventCategory);

                    rec.CustomStr1 = errorLine[3];
                    Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> CustomStr1: " + rec.CustomStr1);

                    rec.CustomStr2 = errorLine[4];
                    Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> CustomStr2: " + rec.CustomStr2);
                }

                //if (RecordFields.exceptionFlag)
                //{
                //    if (line.Length > 4)
                //    {
                //        if (line.Substring(0, 4) == "2012" || line.Substring(0, 4) == "2013")
                //        {
                //            Log.Log(LogType.FILE, LogLevel.INFORM, " ParseSpecific() -->> Onur Sarikaya1 " );

                //            rec.EventCategory = RecordFields.eventCategory;
                //            rec.CustomStr1 = RecordFields.customStr1;
                //            rec.CustomStr2 = RecordFields.customStr2;
                //            rec.Datetime = RecordFields.dateTime;

                //            try
                //            {
                //                if (RecordFields.errorLine.Length < 4000)
                //                {
                //                    rec.Description = RecordFields.errorLine;
                //                }

                //                else
                //                {
                //                    rec.Description = RecordFields.errorLine.Substring(0, 3999);
                //                    if (RecordFields.errorLine.Length - 4000 > 1999)
                //                    {
                //                        rec.CustomStr10 = RecordFields.errorLine.Substring(4000, line.Length - 4000);
                //                    }
                //                }
                //                Log.Log(LogType.FILE, LogLevel.DEBUG, "Description: " + rec.Description);
                //            }
                //            catch (Exception exception)
                //            {
                //                Log.Log(LogType.FILE, LogLevel.ERROR, "Description Error" + exception.Message);
                //                //WriteMessage("Description Error" + exception.Message);
                //            }
                //            RecordFields.errorFlag = true;
                //        }
                //        else
                //        {
                //            RecordFields.errorLine += line;
                //        }
                //    }
                //}

                #endregion

                //else
                //{
                //    RecordFields.normalFlag = true;
                //    rec.Datetime = DateTime.Now.ToString(dateFormat);
                //}

                rec.LogName = LogName;

                //Log.Log(LogType.FILE, LogLevel.INFORM, "infoFlag: " + RecordFields.infoFlag.ToString());
                //Log.Log(LogType.FILE, LogLevel.INFORM, "errorFlag: " + RecordFields.errorFlag.ToString());
                //Log.Log(LogType.FILE, LogLevel.INFORM, "normalFlag: " + RecordFields.normalFlag.ToString());
                //Log.Log(LogType.FILE, LogLevel.INFORM, "exceptionFlag: " + RecordFields.exceptionFlag.ToString());

                //if (RecordFields.infoFlag || RecordFields.errorFlag || RecordFields.normalFlag)

                Log.Log(LogType.FILE, LogLevel.DEBUG, "Position: " + Position);
                Log.Log(LogType.FILE, LogLevel.DEBUG, "tempPosition: " + RecordFields.tempPosition);

                long tempPosition = GetLinuxFileSizeControl(RecordFields.fileName);
                Log.Log(LogType.FILE, LogLevel.DEBUG, "tempPosition: " + RecordFields.tempPosition);

                if (Position > tempPosition)
                {
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Position büyük  dosya dan büyük pozisyon sıfırlanacak.");
                    Position = 0;
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Position = 0 ");
                }

                lastFile = FileName;
                Log.Log(LogType.FILE, LogLevel.DEBUG, "lastFile: " + lastFile);
                Log.Log(LogType.FILE, LogLevel.DEBUG, "Record will be sent.");
                SetRecordData(rec);
                try
                {
                    CustomServiceBase serviceBase = new CustomServiceBase();
                    serviceBase.SetReg(Id, Position.ToString(CultureInfo.InvariantCulture), lastLine, lastFile, " ", DateTime.Now.ToString(dateFormat));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "SetReg Error." + exception.Message.ToString());
                }
                Log.Log(LogType.FILE, LogLevel.DEBUG, "Record sended.");
                //if (ClearFields())
                //{
                //    Log.Log(LogType.FILE, LogLevel.DEBUG, "Fields Cleared.");
                //}

            }
            return true;
        }
        public override bool ParseSpecific(String line, bool dontSend)
        {
            Log.Log(LogType.FILE, LogLevel.DEBUG, "Parsing Specific line");
            Log.Log(LogType.FILE, LogLevel.DEBUG, "Line Is " + line);

            WriteMessage("line: " + line);

            if (string.IsNullOrEmpty(line))
            {
                Log.Log(LogType.FILE, LogLevel.DEBUG, "Line is Null Or Empty");
                return true;
            }
            Rec rec = new Rec();
            if (!dontSend)
            {
                string[] arr1 = SpaceSplit(line, true);

                #region Description
                try
                {
                    if (line.Length > 3999)
                    {
                        rec.Description = line.Substring(0, 3999);
                    }
                    else
                    {
                        rec.Description = line;
                    }
                    rec.Description = line;
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Description: " + rec.Description);
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "Description Error" + exception.Message);
                    WriteMessage("Description Error" + exception.Message);
                }
                #endregion

                #region Date_Time
                try
                {
                    DateTime dt;
                    string s = arr1[0] + " " + arr1[1];
                    dt = Convert.ToDateTime(s);
                    rec.Datetime = dt.ToString(dateFormat);
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Datetime: " + rec.Datetime.ToString(CultureInfo.InvariantCulture));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "Datetime Error" + exception.Message);
                    WriteMessage("Datetime Error" + exception.Message);
                }
                #endregion

                #region EventCategory

                try
                {
                    rec.EventCategory = arr1[10];
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "EventCategory: " + rec.EventCategory);
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "EventCategory Exception Message:" + exception.Message);
                    WriteMessage("EventCategory  Error" + exception.Message);
                }
                #endregion

                #region ComputerName

                try
                {
                    if (!string.IsNullOrEmpty(remoteHost))
                    {
                        rec.ComputerName = remoteHost;
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "ComputerName: " + rec.ComputerName.ToString(CultureInfo.InvariantCulture));
                    }
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "ComputerName Exception MEssage:" + exception.Message);
                    WriteMessage("ComputerName  Error" + exception.Message);
                }
                #endregion

                #region EventType

                try
                {
                    if (line.Contains("*"))
                    {
                        rec.EventType = Between(line, "*", "*");
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "EventType: " + rec.EventType.ToString(CultureInfo.InvariantCulture));
                    }
                    else
                    {
                        rec.EventType = "";
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "Log içinde uygun formatlı EventType mevcut değil. EventType = null ");
                    }
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "EventType MEssage:" + exception.Message);
                    WriteMessage("EventType  Error" + exception.Message);
                }
                #endregion

                #region CustomStr1
                rec.CustomStr1 = arr1[4].Split(':')[0];
                Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomStr1 " + rec.CustomStr1.ToString(CultureInfo.InvariantCulture));
                #endregion

                #region CustomStr2

                try
                {
                    if (arr1.Length > 14)
                    {
                        rec.CustomStr2 = arr1[14];
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomStr2 " + rec.CustomStr2.ToString(CultureInfo.InvariantCulture));
                    }
                    else
                    {
                        Log.Log(LogType.FILE, LogLevel.ERROR, "CustomStr2 için log uygun format'da değil");
                    }
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "CustomStr2 Exception MEssage:" + exception.Message);
                    WriteMessage("CustomStr2  Error" + exception.Message);
                }
                #endregion

                #region CustomStr3

                try
                {
                    rec.CustomStr3 = arr1[3];

                    Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomStr3 " + rec.CustomStr3.ToString(CultureInfo.InvariantCulture));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "CustomStr3 Exception MEssage:" + exception.Message);
                    WriteMessage("CustomStr3  Error" + exception.Message);
                }
                #endregion

                #region CustomStr4&Str9&Int6

                try
                {
                    string subLine = arr1[4];
                    ArrayList lineArr2 = new ArrayList();
                    lineArr2 = new ArrayList(subLine.Split('/'));
                    for (int i = 0; i < lineArr2.Count; i++)
                    {
                        if (string.IsNullOrEmpty(lineArr2[i].ToString()))
                        {
                            lineArr2.Remove(lineArr2[i]);
                        }
                    }

                    string str4 = lineArr2[1].ToString();
                    int int6 = 0;
                    if (str4.Contains(":"))
                    {
                        str4 = str4.Split(':')[0];
                        int6 = Convert.ToInt32(lineArr2[1].ToString().Split(':')[1]);

                        rec.CustomStr4 = str4;
                        rec.CustomInt6 = int6;
                    }
                    rec.CustomStr4 = str4;

                    if (lineArr2.Count > 2)
                    {
                        rec.CustomStr9 = lineArr2[2].ToString();
                        //if (lineArr2[2].ToString().Contains(":"))
                        //{
                        //    MessageBox.Show("int 6:" + lineArr2[2].ToString().Split(':')[1]);
                        //}
                    }
                    if (!string.IsNullOrEmpty(rec.CustomStr4))
                    {
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomStr4 " + rec.CustomStr4.ToString(CultureInfo.InvariantCulture));
                    }

                    if (!string.IsNullOrEmpty(rec.CustomStr9))
                    {
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomStr9 " + rec.CustomStr9.ToString(CultureInfo.InvariantCulture));
                    }

                    if (!string.IsNullOrEmpty(rec.CustomInt6.ToString()))
                    {
                        Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomInt6 " + rec.CustomInt6.ToString(CultureInfo.InvariantCulture));
                    }

                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "CustomStr4&Str9&Int6 Exception MEssage:" + exception.Message);
                    WriteMessage("CustomStr4&Str9&Int6 Error" + exception.Message);
                }

                #endregion

                #region CustomInt1

                try
                {
                    rec.CustomInt1 = Convert_To_Int32(arr1[11]);

                    Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomInt1 " + rec.CustomInt1.ToString(CultureInfo.InvariantCulture));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "CustomInt1 Exception MEssage:" + exception.Message);
                    WriteMessage("CustomInt1 Error" + exception.Message);
                }
                #endregion

                #region CustomInt2

                try
                {
                    rec.CustomInt2 = Convert_To_Int32(arr1[12]);

                    Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomInt2 " + rec.CustomInt2.ToString(CultureInfo.InvariantCulture));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "CustomInt2 Exception MEssage:" + exception.Message);
                    WriteMessage("CustomInt2 Error" + exception.Message);
                }
                #endregion

                #region CustomInt3

                try
                {
                    rec.CustomInt3 = Convert_To_Int32(arr1[13]);

                    Log.Log(LogType.FILE, LogLevel.DEBUG, "CustomInt3 " + rec.CustomInt3.ToString(CultureInfo.InvariantCulture));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "CustomInt3 Exception MEssage:" + exception.Message);
                    WriteMessage("CustomInt3 Error" + exception.Message);
                }
                #endregion

                rec.LogName = LogName;

                Log.Log(LogType.FILE, LogLevel.DEBUG, "Position: " + Position);
                Log.Log(LogType.FILE, LogLevel.DEBUG, "tempPosition: " + RecordFields.tempPosition);

                long tempPosition = GetLinuxFileSizeControl(RecordFields.fileName);
                Log.Log(LogType.FILE, LogLevel.DEBUG, "tempPosition: " + RecordFields.tempPosition);

                if (Position > tempPosition)
                {
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Position büyük  dosya dan büyük pozisyon sıfırlanacak.");
                    Position = 0;
                    Log.Log(LogType.FILE, LogLevel.DEBUG, "Position = 0 ");
                }
                lastFile = FileName;
                Log.Log(LogType.FILE, LogLevel.DEBUG, "lastFile: " + lastFile);
                Log.Log(LogType.FILE, LogLevel.DEBUG, "Record will be sent.");
                SetRecordData(rec);
                try
                {
                    CustomServiceBase serviceBase = new CustomServiceBase();
                    serviceBase.SetReg(Id, Position.ToString(CultureInfo.InvariantCulture), lastLine, lastFile, " ", DateTime.Now.ToString(dateFormat));
                }
                catch (Exception exception)
                {
                    Log.Log(LogType.FILE, LogLevel.ERROR, "SetReg Error." + exception.Message.ToString());
                }
                Log.Log(LogType.FILE, LogLevel.DEBUG, "Record sended.");
            }
            return true;
        }