go-mail/log/log.go

81 lines
2 KiB
Go
Raw Normal View History

// 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
}