Skip to content
This repository has been archived by the owner on Sep 13, 2023. It is now read-only.

Commit

Permalink
Merge pull request #7 from palavrapasse/3-feat-logging-to-console
Browse files Browse the repository at this point in the history
feat: logging to console
  • Loading branch information
rutesantos4 authored Jan 6, 2023
2 parents 3b7dde6 + c17478d commit 26d088a
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 0 deletions.
51 changes: 51 additions & 0 deletions pkg/aspirador.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package pkg

import (
"log"
)

const (
defaultLoggerFlag = log.Ldate | log.Ltime | log.Lshortfile | log.Lmicroseconds
)

type Aspirador struct {
clients []Client
}

// Default to Console.
func NewAspirador() Aspirador {
clients := make([]Client, 1)
clients[0] = NewConsoleClient()

return Aspirador{
clients: clients,
}
}

func (as Aspirador) Trace(msg string) {
as.log(TRACE, msg)
}

func (as Aspirador) Info(msg string) {
as.log(INFO, msg)
}

func (as Aspirador) Warning(msg string) {
as.log(WARNING, msg)
}

func (as Aspirador) Error(msg string) {
as.log(ERROR, msg)
}

func (as Aspirador) log(lvl Level, msg string) {
record := Record{
Level: lvl,
Message: msg,
}

for _, v := range as.clients {
v.Write(record)
}

}
5 changes: 5 additions & 0 deletions pkg/client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package pkg

type Client interface {
Write(ar Record)
}
26 changes: 26 additions & 0 deletions pkg/consoleclient.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package pkg

import (
"log"
"os"
)

type ConsoleClient struct {
loggers []*log.Logger
}

func NewConsoleClient() ConsoleClient {
loggers := make([]*log.Logger, len(levelPrefix))

for i, v := range levelPrefix {
loggers[i] = log.New(os.Stdout, v, defaultLoggerFlag)
}

return ConsoleClient{
loggers: loggers,
}
}

func (cc ConsoleClient) Write(ar Record) {
cc.loggers[ar.Level].Println(ar.Message)
}
22 changes: 22 additions & 0 deletions pkg/level.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package pkg

const (
TRACE Level = iota
INFO
WARNING
ERROR
)

var (
levelPrefix = []string{"TRACE: ", "INFO: ", "WARNING: ", "ERROR: "}
)

type Level int

func (l Level) String() string {
if l < 0 || int(l) > len(levelPrefix) {
l = 0
}

return levelPrefix[int(l)]
}
6 changes: 6 additions & 0 deletions pkg/record.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package pkg

type Record struct {
Message string
Level Level
}

0 comments on commit 26d088a

Please sign in to comment.