From 260cb7567aa81315e1b614b39bededf104ecc115 Mon Sep 17 00:00:00 2001
From: "Muhammad, Hammad" <muhammad@nisum.com>
Date: Wed, 8 Mar 2023 18:43:52 +0500
Subject: [PATCH] aggregated loggers

---
 go.mod     |  3 +++
 loggers.go | 21 +++++++++++++++++++++
 main.go    | 21 +++++++++++++--------
 3 files changed, 37 insertions(+), 8 deletions(-)
 create mode 100644 go.mod
 create mode 100644 loggers.go

diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..4d41fe4
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module example.com/hello_world
+
+go 1.20
diff --git a/loggers.go b/loggers.go
new file mode 100644
index 0000000..bc8c674
--- /dev/null
+++ b/loggers.go
@@ -0,0 +1,21 @@
+package main
+
+import "log"
+
+type aggregattedLogger struct {
+	infoLogger  *log.Logger
+	warnLogger  *log.Logger
+	errorLogger *log.Logger
+}
+
+func (l *aggregattedLogger) info(v ...interface{}) {
+	l.infoLogger.Println(v...)
+}
+
+func (l *aggregattedLogger) warn(v ...interface{}) {
+	l.warnLogger.Println(v...)
+}
+
+func (l *aggregattedLogger) error(v ...interface{}) {
+	l.errorLogger.Println(v...)
+}
diff --git a/main.go b/main.go
index a91f3e1..f9a3890 100644
--- a/main.go
+++ b/main.go
@@ -16,13 +16,18 @@ func main() {
 	log.Println(s)
 
 	//can create multiple logger with prefix like INFO, WARN, ERROR
-	infoLogger := log.New(os.Stdout, "INFO : ", flags)
-	infoLogger.Println("Hi From Info Logger")
-
-	warnLogger := log.New(os.Stdout, "WARN : ", flags)
-	warnLogger.Println("Hi From Warn Logger")
-
-	errorLogger := log.New(os.Stdout, "ERROR : ", flags)
-	errorLogger.Println("Hi From Error Logger")
+	logger := aggregattedLogger{
+		infoLogger:  log.New(os.Stdout, "INFO : ", flags),
+		warnLogger:  log.New(os.Stdout, "WARN : ", flags),
+		errorLogger: log.New(os.Stdout, "ERROR : ", flags),
+	}
+	// infoLogger := log.New(os.Stdout, "INFO : ", flags)
+	logger.info("Hi From Info Logger")
+
+	// warnLogger := log.New(os.Stdout, "WARN : ", flags)
+	logger.warn("Hi From Warn Logger")
+
+	// errorLogger := log.New(os.Stdout, "ERROR : ", flags)
+	logger.error("Hi From Error Logger")
 
 }
-- 
2.18.1