mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-24 14:40:49 +01:00
Winni Neessen
77d9e3d02a
This commit introduces a new type 'JSONlog' that satisfies the Logger interface for structured JSON logging. This includes new methods 'Debugf', 'Infof', 'Warnf' and 'Errorf' to log messages at different levels and an associated test 'jsonlog_test.go' to ensure correct functionality. This enhances the logging functionality by providing clarity in logs and eases debugging process.
80 lines
2 KiB
Go
80 lines
2 KiB
Go
// SPDX-FileCopyrightText: Copyright (c) 2022-2023 The go-mail Authors
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
// Package log implements a logger interface that can be used within the go-mail package
|
|
package log
|
|
|
|
const (
|
|
DirServerToClient Direction = iota // Server to Client communication
|
|
DirClientToServer // Client to Server communication
|
|
)
|
|
|
|
const (
|
|
// LevelError is the Level for only ERROR log messages
|
|
LevelError Level = iota
|
|
// LevelWarn is the Level for WARN and higher log messages
|
|
LevelWarn
|
|
// LevelInfo is the Level for INFO and higher log messages
|
|
LevelInfo
|
|
// LevelDebug is the Level for DEBUG and higher log messages
|
|
LevelDebug
|
|
)
|
|
|
|
const (
|
|
// DirString is a constant used for the structured logger
|
|
DirString = "direction"
|
|
// DirFromString is a constant used for the structured logger
|
|
DirFromString = "from"
|
|
// DirToString is a constant used for the structured logger
|
|
DirToString = "to"
|
|
)
|
|
|
|
// Direction is a type wrapper for the direction a debug log message goes
|
|
type Direction int
|
|
|
|
// Level is a type wrapper for an int
|
|
type Level int
|
|
|
|
// Log represents a log message type that holds a log Direction, a Format string
|
|
// and a slice of Messages
|
|
type Log struct {
|
|
Direction Direction
|
|
Format string
|
|
Messages []interface{}
|
|
}
|
|
|
|
// Logger is the log interface for go-mail
|
|
type Logger interface {
|
|
Debugf(Log)
|
|
Infof(Log)
|
|
Warnf(Log)
|
|
Errorf(Log)
|
|
}
|
|
|
|
// directionPrefix will return a prefix string depending on the Direction.
|
|
func (l Log) directionPrefix() string {
|
|
p := "C <-- S:"
|
|
if l.Direction == DirClientToServer {
|
|
p = "C --> S:"
|
|
}
|
|
return p
|
|
}
|
|
|
|
// directionFrom will return a from direction string depending on the Direction.
|
|
func (l Log) directionFrom() string {
|
|
p := "server"
|
|
if l.Direction == DirClientToServer {
|
|
p = "client"
|
|
}
|
|
return p
|
|
}
|
|
|
|
// directionTo will return a to direction string depending on the Direction.
|
|
func (l Log) directionTo() string {
|
|
p := "client"
|
|
if l.Direction == DirClientToServer {
|
|
p = "server"
|
|
}
|
|
return p
|
|
}
|