コード例 #1
0
        /// <summary>
        /// Read LogFile contents and write to database archive table.
        /// </summary>
        /// <param name="logFileInfo"></param>
        /// <returns></returns>
        public static bool DatabaseOutput(Models.LogFile logFileInfo)
        {
            try
            {
                var connectionString = "URI=file:" + Path.Combine("database/logetl.db");

                using (var connection = new SQLiteConnection(connectionString))
                {
                    connection.Open();

                    using (System.IO.StreamReader inputFile = new System.IO.StreamReader(logFileInfo.FullPath))
                    {
                        string line;
                        var    dropDate = System.DateTime.Now.ToString();

                        while ((line = inputFile.ReadLine()) != null)
                        {
                            using (var command = new SQLiteCommand(connection))
                            {
                                command.CommandText = $"INSERT INTO archive (sourcefile,dropdate,fileentry) VALUES ('{logFileInfo.FullPath}','{dropDate}','{line}')";
                                command.ExecuteNonQuery();
                            }
                        }
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                BLL.Logger.LogMessage(ex);
                return(false);
            }
        }
コード例 #2
0
        /// <summary>
        /// Determine which output formats need to be generated.
        /// </summary>
        /// <param name="logFileInfo"></param>
        /// <returns></returns>
        public string FileProcessor(Models.LogFile logFileInfo)
        {
            try
            {
                if (System.IO.File.Exists(logFileInfo.FullPath))
                {
                    var logFileIdent      = Helpers.FileSystem.GetFileIdentifiers(logFileInfo.FullPath);
                    var logFileDefinition = DefinitionManager.GetDefinition(logFileIdent.ProcessName);

                    if (logFileDefinition.SplunkOutput)
                    {
                        SplunkOutput(logFileInfo);
                    }

                    if (logFileDefinition.DatabaseOutput)
                    {
                        DatabaseOutput(logFileInfo);
                    }

                    return($"File processed: {logFileInfo.FullPath}");
                }
                else
                {
                    return($"File not found");
                }
            }
            catch (Exception ex)
            {
                Logger.LogMessage(ex);

                return(ex.Message);
            }
        }
コード例 #3
0
        /// <summary>
        /// Generate Splunk-friendly output.
        /// </summary>
        /// <param name="logFileInfo"></param>
        /// <returns></returns>
        public string SplunkOutput(Models.LogFile logFileInfo)
        {
            try
            {
                var formattedLogPath = Path.Combine(Path.GetDirectoryName(logFileInfo.FullPath), "formatted");

                using (System.IO.StreamReader inputFile = new System.IO.StreamReader(logFileInfo.FullPath))
                {
                    var di = Directory.CreateDirectory(formattedLogPath);

                    formattedLogPath = Path.Combine(formattedLogPath, "SplunkReadyLog.json");

                    using (System.IO.StreamWriter outputFile = new System.IO.StreamWriter(formattedLogPath))
                    {
                        string line;
                        while ((line = inputFile.ReadLine()) != null)
                        {
                            var splitValues = line.Split("|");

                            var lineItemModel = new Models.LogFileContents
                            {
                                EventDateTime = splitValues[0],
                                EventType     = splitValues[1],
                                Details       = splitValues[2]
                            };
                            var lineItemJson = JsonConvert.SerializeObject(lineItemModel);

                            outputFile.WriteLine(lineItemJson);
                        }
                    }
                }

                return(formattedLogPath);
            }
            catch (Exception ex)
            {
                Logger.LogMessage(ex);

                return(string.Empty);
            }
        }
コード例 #4
0
        public string Post([FromBody] Models.LogFile logFileInfo)
        {
            var fileManager = new BLL.FileManager();

            return(fileManager.FileProcessor(logFileInfo));
        }
コード例 #5
0
 /// <summary>
 /// Write log file contents to database.
 /// </summary>
 /// <param name="logFileInfo"></param>
 /// <returns></returns>
 public bool DatabaseOutput(Models.LogFile logFileInfo)
 {
     return(DataAdapters.Archive.DatabaseOutput(logFileInfo));
 }