/// <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); } }
/// <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); } }
/// <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); } }
public string Post([FromBody] Models.LogFile logFileInfo) { var fileManager = new BLL.FileManager(); return(fileManager.FileProcessor(logFileInfo)); }
/// <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)); }