Beispiel #1
0
        private void WriteOnFile()
        {
            string[] filePathArray = _filePath.Split('\\');
            string   fileKind      = filePathArray[filePathArray.Length - 1];

            string[]     stringArray;
            string       jsonResult = "";
            MasterLogger m_logger;

            //may need to create enum for this fileKind and add a functionality to each enum type by using extension method
            // then it will be easier for maintance
            switch (fileKind)
            {
            case "TestLog":
            case "logs":
                //reading log file : comma separated and format is timestamp, number, info, description
                //JSON format needs to be Time, Location, Level, Output
                stringArray = _jsonString.Split(',');
                // Time => DateTime.Now, Location => _fullPath, Level => stringArray[2], Output => stringArray[3]
                m_logger   = new MasterLogger(DateTime.Now.ToString("dd/MM/yy hh:mm tt"), _fullPath, stringArray[2], stringArray[3]);
                jsonResult = JsonConvert.SerializeObject(m_logger);

                break;

            case "xml":
                //reading xml file : hierachy is <actions>-<action>-<id>,<name>,<description>,<level>,<timestamp>
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(_jsonString);

                // Time => DateTime.Now, Location => _fullPath, Level => xmlDoc.level, Output => xml.name +" "+ xml.description
                m_logger   = new MasterLogger(DateTime.Now.ToString("dd/MM/yy hh:mm tt"), _fullPath, xmlDoc.SelectSingleNode("/action/level").InnerText, xmlDoc.SelectSingleNode("/action/name").InnerText + "--" + xmlDoc.SelectSingleNode("/action/description").InnerText);
                jsonResult = JsonConvert.SerializeObject(m_logger);
                break;

            case "csv":
                // reading csv file: comma separated and format is Item No, Description, Cost, Paid, Due Date, Result, Notes
                //JSON format needs to be Time, Location, Level, Output
                stringArray = _jsonString.Split(',');
                // Time => DateTime.Now, Location => _fullPath, Level => stringArray[5], Output => stringArray[]
                m_logger   = new MasterLogger(DateTime.Now.ToString("dd/MM/yy hh:mm tt"), _fullPath, stringArray[5], stringArray[1] + " " + stringArray[2] + " " + stringArray[3] + " " + stringArray[6]);
                jsonResult = JsonConvert.SerializeObject(m_logger);

                break;
            }

            Object locker = new Object();

            lock (locker)
            {
                using (StreamWriter sw = File.AppendText(_consolidatedLogFilePath))
                {
                    sw.Write(jsonResult);
                    sw.Write("\n");
                    sw.Flush();
                    sw.Close();
                    Console.WriteLine(jsonResult);
                }
            }
        }
        private void WriteOnFile(MasterLogger m_logger)
        {
            string jsonResult = JsonConvert.SerializeObject(m_logger);
            Object locker     = new Object();

            lock (locker)
            {
                using (StreamWriter sw = File.AppendText(_consolidatedLogFilePath))
                {
                    sw.Write(jsonResult);
                    sw.Write("\n");
                    sw.Flush();
                    sw.Close();
                    Console.WriteLine(jsonResult);
                }
            }
        }