64 lines
2.2 KiB
Go
64 lines
2.2 KiB
Go
package logger_conf
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
//var Free5gcLogDir string = path_util.Free5gcPath("free5gc/log") + "/"
|
|
var Free5gcLogDir string = "/var/log/"
|
|
//var LibLogDir string = Free5gcLogDir + "lib/"
|
|
//var NfLogDir string = Free5gcLogDir + "nf/"
|
|
|
|
var Free5gcLogFile string = Free5gcLogDir + "selfcareproxy.log"
|
|
|
|
func init() {//InitLoggerConf(dir, filename string) {//init() {
|
|
//Free5gcLogDir = dir
|
|
//Free5gcLogFile = dir + filename
|
|
|
|
/*if err := os.MkdirAll(LibLogDir, 0775); err != nil {
|
|
log.Printf("Mkdir %s failed: %+v", LibLogDir, err)
|
|
}
|
|
if err := os.MkdirAll(NfLogDir, 0775); err != nil {
|
|
log.Printf("Mkdir %s failed: %+v", NfLogDir, err)
|
|
}*/
|
|
|
|
// Create log file or if it already exist, check if user can access it
|
|
f, fileOpenErr := os.OpenFile(Free5gcLogFile, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
|
|
if fileOpenErr != nil {
|
|
// user cannot access it.
|
|
log.Printf("Cannot Open %s\n", Free5gcLogFile)
|
|
} else {
|
|
// user can access it
|
|
if err := f.Close(); err != nil {
|
|
log.Printf("File %s cannot been closed\n", Free5gcLogFile)
|
|
}
|
|
}
|
|
|
|
sudoUID, errUID := strconv.Atoi(os.Getenv("SUDO_UID"))
|
|
sudoGID, errGID := strconv.Atoi(os.Getenv("SUDO_GID"))
|
|
|
|
if errUID == nil && errGID == nil {
|
|
// if using sudo to run the program, errUID will be nil and sudoUID will get the uid who run sudo
|
|
// else errUID will not be nil and sudoUID will be nil
|
|
// If user using sudo to run the program and create log file, log will own by root,
|
|
// here we change own to user so user can view and reuse the file
|
|
if err := os.Chown(Free5gcLogDir, sudoUID, sudoGID); err != nil {
|
|
log.Printf("Dir %s chown to %d:%d error: %v\n", Free5gcLogDir, sudoUID, sudoGID, err)
|
|
}
|
|
/*if err := os.Chown(LibLogDir, sudoUID, sudoGID); err != nil {
|
|
log.Printf("Dir %s chown to %d:%d error: %v\n", LibLogDir, sudoUID, sudoGID, err)
|
|
}
|
|
if err := os.Chown(NfLogDir, sudoUID, sudoGID); err != nil {
|
|
log.Printf("Dir %s chown to %d:%d error: %v\n", NfLogDir, sudoUID, sudoGID, err)
|
|
}*/
|
|
|
|
if fileOpenErr == nil {
|
|
if err := os.Chown(Free5gcLogFile, sudoUID, sudoGID); err != nil {
|
|
log.Printf("File %s chown to %d:%d error: %v\n", Free5gcLogFile, sudoUID, sudoGID, err)
|
|
}
|
|
}
|
|
}
|
|
}
|