diff --git a/cmd/web/main.go b/cmd/web/main.go index 56c437e..20cb9f6 100644 --- a/cmd/web/main.go +++ b/cmd/web/main.go @@ -1,6 +1,10 @@ package main -import "github.com/haydenhargreaves/Potion/internal/app/server" +import ( + "github.com/haydenhargreaves/Potion/internal/app/server" + "github.com/haydenhargreaves/Potion/internal/infrastructure/logging" + "github.com/haydenhargreaves/Potion/internal/infrastructure/logging/loggers" +) const PORT = 3000 @@ -8,5 +12,8 @@ func main() { s := server.Init(PORT).Setup() defer s.DB.Close() + logger := loggers.NewConsoleLogger() + logger.Log(logging.LogLevelDebug, "%s", "Hello world") + s.Start() } diff --git a/internal/infrastructure/logging/logger.go b/internal/infrastructure/logging/logger.go new file mode 100644 index 0000000..a182964 --- /dev/null +++ b/internal/infrastructure/logging/logger.go @@ -0,0 +1,16 @@ +package logging + +type LogLevel string + +const ( + LogLevelTrace LogLevel = "TRACE" + LogLevelDebug LogLevel = "DEBUG" + LogLevelInformation LogLevel = "INFORMATION" + LogLevelWarning LogLevel = "WARNING" + LogLevelError LogLevel = "ERROR" + LogLevelFatal LogLevel = "FATAL" +) + +type Logger interface { + Log(level LogLevel, format string, v ...any) +} diff --git a/internal/infrastructure/logging/loggers/console_logger.go b/internal/infrastructure/logging/loggers/console_logger.go new file mode 100644 index 0000000..334a7d4 --- /dev/null +++ b/internal/infrastructure/logging/loggers/console_logger.go @@ -0,0 +1,32 @@ +package loggers + +import ( + "fmt" + "io" + "os" + + "github.com/haydenhargreaves/Potion/internal/infrastructure/logging" +) + +// TODO: Implement the Logger interface + +type ConsoleLogger struct { + writer io.Writer +} + +var _ logging.Logger = (*ConsoleLogger)(nil) + +func NewConsoleLogger() ConsoleLogger { + + return ConsoleLogger{ + writer: os.Stdout, + } +} + +func (l *ConsoleLogger) Log(level logging.LogLevel, format string, v ...any) { + prefix := fmt.Appendf(nil, "[%s] ", level) + bytes := fmt.Appendf(prefix, format, v...) + + // WARN: Do we need to worry about errors? + _, _ = l.writer.Write(bytes) +} diff --git a/internal/infrastructure/logging/loggers/file_logger.go b/internal/infrastructure/logging/loggers/file_logger.go new file mode 100644 index 0000000..721655d --- /dev/null +++ b/internal/infrastructure/logging/loggers/file_logger.go @@ -0,0 +1,3 @@ +package loggers + +// TODO: Implement the Logger interface