Refactored main.go into cmd/jobsearch/main.go (in case separate commands are introduced later) which has required the options mechanism to change slightly as well as the logging.
This commit is contained in:
1 parent
de3ebf68c5
commit
6436253629
14 files changed
+273
-224
No files matched your search
+42
-17
@@ -26,24 +26,11 @@ import (
|
||||
)
|
||||
|
||||
var logLevel slog.LevelVar
|
||||
var fileLogger *os.File
|
||||
|
||||
// Set up the logger using defaults
|
||||
func Init() {
|
||||
logLevel.Set(slog.LevelWarn)
|
||||
opts := &slog.HandlerOptions{
|
||||
Level: &logLevel,
|
||||
}
|
||||
handler := slog.NewTextHandler(os.Stdout, opts)
|
||||
logger := slog.New(handler)
|
||||
slog.SetDefault(logger)
|
||||
}
|
||||
|
||||
// Enable info level logging
|
||||
func EnableInfo() {
|
||||
if logLevel.Level() > slog.LevelInfo {
|
||||
logLevel.Set(slog.LevelInfo)
|
||||
slog.Info("Info logging enabled")
|
||||
}
|
||||
// Set the logging to a particular level, quietly
|
||||
func SetLevel(level slog.Level) {
|
||||
logLevel.Set(level)
|
||||
}
|
||||
|
||||
// Enable debug level logging
|
||||
@@ -54,6 +41,36 @@ func EnableDebug() {
|
||||
}
|
||||
}
|
||||
|
||||
func LogToFile(logfile string) error {
|
||||
if fileLogger != nil {
|
||||
(*fileLogger).Close()
|
||||
}
|
||||
|
||||
// Open the log file
|
||||
fileLogger, err := os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
opts := &slog.HandlerOptions{
|
||||
Level: &logLevel,
|
||||
}
|
||||
handler := slog.NewJSONHandler(fileLogger, opts)
|
||||
logger := slog.New(handler)
|
||||
slog.SetDefault(logger)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func Shutdown() error {
|
||||
var err error = nil
|
||||
if fileLogger != nil {
|
||||
err = (*fileLogger).Close()
|
||||
fileLogger = nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func LogToTerminal() {
|
||||
opts := &tint.Options{
|
||||
Level: &logLevel,
|
||||
@@ -94,3 +111,11 @@ func IsJSONHandler(h slog.Handler) bool {
|
||||
// Read the boolean value using unsafe
|
||||
return *(*bool)(unsafe.Pointer(jsonField.UnsafeAddr()))
|
||||
}
|
||||
|
||||
func IsFileLogger() bool {
|
||||
return fileLogger != nil
|
||||
}
|
||||
|
||||
func IsDebugEnabled() bool {
|
||||
return logLevel.Level() <= slog.LevelDebug
|
||||
}
|
||||
Reference in new issue
Block a user