Jonathan Apodaca ffda2a4792
All checks were successful
CI / build (push) Successful in 45s
initial commit
2025-05-08 21:10:32 -06:00

59 lines
1.5 KiB
Go

package internal
import (
"io"
"log"
"os"
"path/filepath"
)
// Logger constants
var (
Log *log.Logger
DaemonLog *log.Logger
)
func init() {
// Check debug mode once at startup
debugMode := os.Getenv("DEBUG") == "1"
// Initialize loggers
Log = createLogger("envvault.log", debugMode)
DaemonLog = createLogger("envvault.daemon.log", debugMode)
}
// createLogger creates a logger with the specified log file
func createLogger(logFileName string, debugMode bool) *log.Logger {
// Ensure log directory exists
homeDir, err := os.UserHomeDir()
if err != nil {
log.Printf("Failed to get user home directory: %v", err)
return log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile)
}
logDir := filepath.Join(homeDir, ".local/cache/envvault")
if err := os.MkdirAll(logDir, 0700); err != nil {
log.Printf("Failed to create log directory: %v", err)
return log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile)
}
// Open log file
logFilePath := filepath.Join(logDir, logFileName)
f, err := os.OpenFile(logFilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
if err != nil {
log.Printf("Failed to open log file: %v", err)
return log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile)
}
// If in debug mode, log to both file and stderr
var writer io.Writer
if debugMode {
writer = io.MultiWriter(f, os.Stderr)
} else {
writer = f
}
// Create logger with timestamp, file name, and line number
return log.New(writer, "", log.LstdFlags|log.Lshortfile)
}