mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
slog "log/slog"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
)
|
|
|
|
func SetDefaultLogger() {
|
|
logPath := GetLogPath()
|
|
logFile, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
|
|
|
if err != nil {
|
|
slog.Default().Error("Failed to open log file", "error", err)
|
|
// If we can't open the log file, we'll log to the console instead
|
|
logFile = os.Stdout
|
|
}
|
|
|
|
//defer logFile.Close()
|
|
|
|
logger := slog.New(slog.NewTextHandler(logFile, nil))
|
|
slog.SetDefault(logger)
|
|
}
|
|
|
|
// GetLogPath returns the full path to the log file
|
|
func GetLogPath() string {
|
|
var basePath string
|
|
if runtime.GOOS == "windows" {
|
|
basePath = os.Getenv("PROGRAMDATA")
|
|
if basePath == "" {
|
|
basePath = fmt.Sprintf("C:%sProgramData", string(filepath.Separator))
|
|
}
|
|
} else {
|
|
basePath = "/var/log"
|
|
}
|
|
|
|
// Define the directory path where the log file will be stored
|
|
logDirectory := filepath.Join(basePath, "oneuptime-infrastructure-agent")
|
|
|
|
// Ensure the directory exists
|
|
err := ensureDir(logDirectory)
|
|
if err != nil {
|
|
slog.Default().Error("Failed to create log directory, falling back to current directory", "error", err)
|
|
return "oneuptime-infrastructure-agent.log"
|
|
}
|
|
|
|
// Return the full path to the log file
|
|
return filepath.Join(logDirectory, "oneuptime-infrastructure-agent.log")
|
|
}
|
|
|
|
// ensureDir checks if a directory exists and makes it if it does not
|
|
func ensureDir(dirName string) error {
|
|
info, err := os.Stat(dirName)
|
|
if os.IsNotExist(err) {
|
|
// Directory does not exist, create it
|
|
return os.MkdirAll(dirName, 0755)
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if !info.IsDir() {
|
|
// Exists but is not a directory
|
|
return os.ErrExist
|
|
}
|
|
return nil
|
|
}
|