diff --git a/Source/UniversalLogging/Private/LogFileManager.cpp b/Source/UniversalLogging/Private/LogFileManager.cpp
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d5f085bc8fcf81db5868e466bc389a33196fe4f4 100644
--- a/Source/UniversalLogging/Private/LogFileManager.cpp
+++ b/Source/UniversalLogging/Private/LogFileManager.cpp
@@ -0,0 +1,19 @@
+#include "LogFileManager.h"
+
+LogFileStream* LogFileManager::GetLogFileStream(FString FilePath, FString FileName)
+{
+  FString Full_Path = FPaths::Combine(FilePath, FileName);
+  if (Streams.Contains(Full_Path))
+    return Streams[Full_Path].Get();
+  else
+    Streams.Add(Full_Path, MakeUnique<LogFileStream>(FilePath, FileName));
+  return Streams[Full_Path].Get();
+}
+
+LogFileManager::LogFileManager()
+{
+}
+
+LogFileManager::~LogFileManager()
+{
+}
diff --git a/Source/UniversalLogging/Private/LogFileManager.h b/Source/UniversalLogging/Private/LogFileManager.h
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d339d83b1343de28f0589a7c10a265d5ac53853f 100644
--- a/Source/UniversalLogging/Private/LogFileManager.h
+++ b/Source/UniversalLogging/Private/LogFileManager.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "LogFileStream.h"
+
+class LogFileManager
+{
+public:
+  LogFileStream* GetLogFileStream(FString FilePath, FString FileName);
+
+private:
+  friend class UniversalLoggingImpl;
+  LogFileManager();
+  virtual ~LogFileManager();
+
+private:
+  TMap<FString, TUniquePtr<LogFileStream>> Streams;
+};
\ No newline at end of file
diff --git a/Source/UniversalLogging/Private/LogStream.cpp b/Source/UniversalLogging/Private/LogStream.cpp
index a7cfe0e7b459694dd20900203117a57b5ddd91a3..fd9d6a788c80fb571dd6f70f685936c910193a5c 100644
--- a/Source/UniversalLogging/Private/LogStream.cpp
+++ b/Source/UniversalLogging/Private/LogStream.cpp
@@ -152,7 +152,7 @@ void LogStreamImpl::Open()
   FString File_Path = Filepath;
   if(bPer_Session)
     File_Path = FPaths::Combine(File_Path, UniLog.GetSessionIdentifier());
-  Log_File_Stream = new LogFileStream(File_Path, Filename); // this will not stay like this, as LogFileStreams will be managed by LogFileManager
+  Log_File_Stream = UniversalLoggingImpl::GetLogFileManager()->GetLogFileStream(File_Path, Filename); // this will not stay like this, as LogFileStreams will be managed by LogFileManager
   Log_File_Stream->Open();
   if (!Log_File_Stream->GetIsOpen())
   {
diff --git a/Source/UniversalLogging/Private/UniversalLogging.cpp b/Source/UniversalLogging/Private/UniversalLogging.cpp
index 873db432284858c6eb9cfa1537551f747cc2cc7c..b31f1af4185b5f7a03525f5011d50d661556a276 100644
--- a/Source/UniversalLogging/Private/UniversalLogging.cpp
+++ b/Source/UniversalLogging/Private/UniversalLogging.cpp
@@ -7,6 +7,8 @@
 #include "Cluster/IDisplayClusterClusterManager.h"
 #include "Misc/CommandLine.h"
 
+LogFileManager UniversalLoggingImpl::Log_File_Manager = LogFileManager();
+
 void UniversalLoggingImpl::StartupModule()
 {
   Streams.Add("", MakeUnique<LogStreamImpl>());
@@ -174,4 +176,9 @@ FString UniversalLoggingImpl::GetNodeName()
     return FString(TEXT("Localhost"));
 }
 
+LogFileManager* UniversalLoggingImpl::GetLogFileManager()
+{
+  return &Log_File_Manager;
+}
+
 IMPLEMENT_MODULE(UniversalLoggingImpl, UniversalLogging)
diff --git a/Source/UniversalLogging/Private/UniversalLogging.h b/Source/UniversalLogging/Private/UniversalLogging.h
index 209e2a2bf4cd1c243b451f36ceb72b52e04013bf..e8e1f19ec23fe885107aedcd4b3498cca7ac38f2 100644
--- a/Source/UniversalLogging/Private/UniversalLogging.h
+++ b/Source/UniversalLogging/Private/UniversalLogging.h
@@ -3,6 +3,7 @@
 #include "LogStream.h"
 #include "OnScreenLog.h"
 #include "IUniversalLogging.h"
+#include "LogFileManager.h"
 
 #include "Engine/World.h"
 
@@ -32,7 +33,10 @@ public:
   static bool IsClusterMaster(); 
   static FString GetNodeName();
 
+  static LogFileManager* GetLogFileManager();
+
 private:
+  static LogFileManager Log_File_Manager;
   TMap<FString, TUniquePtr<LogStreamImpl>> Streams;
   FString Session_ID;
   TBaseDelegate<void, UWorld*, const UWorld::InitializationValues> On_Post_World_Initialization_Delegate;