diff --git a/logs/logs.go b/logs/logs.go
index 5407d1fd344b1df2818f6bbfa58a43fc3f65c9d4..b1f8ef62a15d2ac7983be2251eaecef2db8cbfbc 100644
--- a/logs/logs.go
+++ b/logs/logs.go
@@ -4,6 +4,7 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
+	log "github.com/sirupsen/logrus"
 	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/errors"
 	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/string_utils"
 	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/utils"
@@ -19,21 +20,22 @@ import (
 	"github.com/MindscapeHQ/raygun4go"
 
 	"github.com/aws/aws-lambda-go/events"
-	log "github.com/sirupsen/logrus"
 )
 
-type LogBufferWithLevel struct {
-	LogBuffer *bytes.Buffer
-	LogLevel  log.Level
+type LogEntryWithLevel struct {
+	//LogBuffer *bytes.Buffer
+	LogEntry *log.Entry
+	Message  interface{}
+	LogLevel log.Level
 }
 
 var logger *log.Entry
-var logBuffers []LogBufferWithLevel
+var cachedLogEntries []LogEntryWithLevel
 
 var apiRequest *events.APIGatewayProxyRequest
 var currentRequestID *string
 var isDebug = false
-var logToBuffer = false
+var storeLogsUntilTriggered = false
 var disableLogging = false
 var build string
 var raygunClient *raygun4go.Client
@@ -183,9 +185,12 @@ func InfoWithFields(fields map[string]interface{}, message interface{}) {
 	}
 	sanitisedFields := SanitiseFields(fields)
 
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().WithFields(sanitisedFields).Info(message)
-	CheckToStoreLogBuffer(logBuffer, log.InfoLevel)
+	logEntry := getLogger().WithFields(sanitisedFields)
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, message, log.InfoLevel)
+	} else {
+		logEntry.Info(message)
+	}
 }
 
 func Info(format string, a ...interface{}) {
@@ -195,9 +200,12 @@ func Info(format string, a ...interface{}) {
 
 	message := SanitiseLogs(fmt.Sprintf(format, a...))
 
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().Info(message)
-	CheckToStoreLogBuffer(logBuffer, log.InfoLevel)
+	logEntry := getLogger()
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, message, log.InfoLevel)
+	} else {
+		logEntry.Info(message)
+	}
 }
 
 func ErrorWithFields(fields map[string]interface{}, err error) {
@@ -208,9 +216,12 @@ func ErrorWithFields(fields map[string]interface{}, err error) {
 	sanitisedFields := SanitiseFields(fields)
 	sendRaygunError(sanitisedFields, err)
 
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().WithFields(sanitisedFields).Error(err)
-	CheckToStoreLogBuffer(logBuffer, log.ErrorLevel)
+	logEntry := getLogger().WithFields(sanitisedFields)
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, err, log.ErrorLevel)
+	} else {
+		logEntry.Error(err)
+	}
 }
 
 func ErrorWithMsg(message string, err error) {
@@ -241,9 +252,12 @@ func Warn(format string, a ...interface{}) {
 
 	message := SanitiseLogs(fmt.Sprintf(format, a...))
 
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().Warn(message)
-	CheckToStoreLogBuffer(logBuffer, log.WarnLevel)
+	logEntry := getLogger()
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, message, log.WarnLevel)
+	} else {
+		logEntry.Warn(message)
+	}
 }
 
 func WarnWithFields(fields map[string]interface{}, err error) {
@@ -252,9 +266,13 @@ func WarnWithFields(fields map[string]interface{}, err error) {
 	}
 
 	sanitisedFields := SanitiseFields(fields)
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().WithFields(sanitisedFields).Warn(err)
-	CheckToStoreLogBuffer(logBuffer, log.WarnLevel)
+
+	logEntry := getLogger().WithFields(sanitisedFields)
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, err, log.WarnLevel)
+	} else {
+		logEntry.Warn(err)
+	}
 }
 
 func SQLDebugInfo(sql string) {
@@ -262,11 +280,14 @@ func SQLDebugInfo(sql string) {
 		return
 	}
 
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().WithFields(map[string]interface{}{
+	logEntry := getLogger().WithFields(map[string]interface{}{
 		"sql": sql,
-	}).Debug("SQL query")
-	CheckToStoreLogBuffer(logBuffer, log.InfoLevel)
+	})
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, "SQL query", log.DebugLevel)
+	} else {
+		logEntry.Debug("SQL query")
+	}
 }
 
 func LogShipmentID(id int64) {
@@ -335,9 +356,12 @@ func LogApiAudit(fields log.Fields) {
 		return
 	}
 
-	logBuffer := CheckToGetLogBuffer()
-	getLogger().WithFields(fields).Info("api-audit-log")
-	CheckToStoreLogBuffer(logBuffer, log.InfoLevel)
+	logEntry := getLogger().WithFields(fields)
+	if storeLogsUntilTriggered {
+		storeLogEntry(logEntry, "api-audit-log", log.InfoLevel)
+	} else {
+		logEntry.Info("api-audit-log")
+	}
 }
 
 func LogSQSEvent(event events.SQSEvent) {
@@ -375,8 +399,8 @@ func SetOutputToFile(file *os.File) {
 	log.SetOutput(file)
 }
 
-func SetOutputToBuffer(outputToLogBuffer bool) {
-	logToBuffer = outputToLogBuffer
+func StoreLogsUntilTriggered(storeLogs bool) {
+	storeLogsUntilTriggered = storeLogs
 }
 
 func DisableLogging() {
@@ -494,37 +518,30 @@ func (f *CustomLogFormatter) Format(entry *log.Entry) ([]byte, error) {
 	return b.Bytes(), nil
 }
 
-func CheckToGetLogBuffer() *bytes.Buffer {
-	if logToBuffer {
-		logBuffer := &bytes.Buffer{}
-		log.SetOutput(logBuffer)
-		return logBuffer
-	}
-	return nil
-}
-
-func CheckToStoreLogBuffer(logBuffer *bytes.Buffer, logLevel log.Level) {
-	if logBuffer != nil {
-		logBuffers = append(logBuffers, LogBufferWithLevel{
-			LogBuffer: logBuffer,
-			LogLevel:  logLevel,
+func storeLogEntry(logEntry *log.Entry, message interface{}, logLevel log.Level) {
+	if logEntry != nil &&
+		logEntry.Logger != nil &&
+		logEntry.Logger.IsLevelEnabled(logLevel) {
+		cachedLogEntries = append(cachedLogEntries, LogEntryWithLevel{
+			LogEntry: logEntry,
+			Message:  message,
+			LogLevel: logLevel,
 		})
 	}
 }
 
-func LogAllLogBuffers() {
+func LogAllStoredLogs() {
 	log.SetOutput(os.Stderr)
-	for _, logBuffer := range logBuffers {
-		switch logBuffer.LogLevel {
+	for _, cachedLogEntry := range cachedLogEntries {
+		switch cachedLogEntry.LogLevel {
 		case log.InfoLevel:
-			getLogger().Info(logBuffer.LogBuffer.String())
+			cachedLogEntry.LogEntry.Info(cachedLogEntry.Message)
 		case log.ErrorLevel:
-			getLogger().Error(logBuffer.LogBuffer.String())
+			cachedLogEntry.LogEntry.Error(cachedLogEntry.Message)
 		case log.WarnLevel:
-			getLogger().Warn(logBuffer.LogBuffer.String())
+			cachedLogEntry.LogEntry.Warn(cachedLogEntry.Message)
 		case log.DebugLevel:
-			getLogger().Debug(logBuffer.LogBuffer.String())
-
+			cachedLogEntry.LogEntry.Debug(cachedLogEntry.Message)
 		}
 	}
 }