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

feature: create log if write log error true #60

Merged
merged 2 commits into from
May 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ go.work
*.dylib
*.test
*.out
*.log
9 changes: 8 additions & 1 deletion types.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
package welog

import "io"
import (
"io"
"os"
)

type LogLevel int

type LogMode string

type LogWrite bool

type Logger struct {
level LogLevel
mode LogMode
writer io.Writer
writeFile LogWrite
logFile *os.File
formatter func(LogLevel, string) string
}

Expand Down
36 changes: 32 additions & 4 deletions welog.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,38 @@ package welog

import (
"fmt"
"io"
"os"
"time"
)

func GenerateLogger(level LogLevel, mode LogMode) *Logger {
return &Logger{
level: level,
mode: mode,
func GenerateLogger(level LogLevel, mode LogMode, writeFile LogWrite) *Logger {
var writer io.Writer
var file *os.File
var err error

if writeFile {
file, err = os.OpenFile("welog-errors.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create log file: %v\n", err)
writer = os.Stderr
} else {
writer = io.MultiWriter(os.Stderr, file)
}
} else {
writer = os.Stderr
}

logger := &Logger{
level: level,
mode: mode,
writer: writer,
writeFile: writeFile,
logFile: file,
}

return logger
}

func (l *Logger) Log(level LogLevel, message string) {
Expand All @@ -20,6 +44,10 @@ func (l *Logger) Log(level LogLevel, message string) {
logMessage := fmt.Sprintf("[%s] [%s] %s\n", timestamp, levelString, message)

fmt.Fprint(l.writer, logMessage)

if l.logFile != nil && level == Error {
fmt.Fprint(l.logFile, logMessage)
}
}
}

Expand Down
4 changes: 2 additions & 2 deletions welog_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
func TestBasicMode(t *testing.T) {
var buf bytes.Buffer

logger := GenerateLogger(Info, Basic)
logger := GenerateLogger(Info, Basic, false)

logger.SetOutput(&buf)

Expand Down Expand Up @@ -43,7 +43,7 @@ func TestBasicMode(t *testing.T) {
func TestColorfulMode(t *testing.T) {
var buf bytes.Buffer

logger := GenerateLogger(Info, Colorful)
logger := GenerateLogger(Info, Colorful, false)

logger.SetOutput(&buf)

Expand Down