mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-03-04 02:14:40 +01:00
40 lines
949 B
Go
40 lines
949 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
|
|
"github.com/jedisct1/dlog"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
)
|
|
|
|
func Logger(logMaxSize int, logMaxAge int, logMaxBackups int, fileName string) io.Writer {
|
|
if fileName == "/dev/stdout" {
|
|
return os.Stdout
|
|
}
|
|
if st, _ := os.Stat(fileName); st != nil && !st.Mode().IsRegular() {
|
|
if st.Mode().IsDir() {
|
|
dlog.Fatalf("[%v] is a directory", fileName)
|
|
}
|
|
fp, err := os.OpenFile(fileName, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0o644)
|
|
if err != nil {
|
|
dlog.Fatalf("Unable to access [%v]: [%v]", fileName, err)
|
|
}
|
|
return fp
|
|
}
|
|
if fp, err := os.OpenFile(fileName, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0o644); err == nil {
|
|
fp.Close()
|
|
} else {
|
|
dlog.Errorf("Unable to create [%v]: [%v]", fileName, err)
|
|
}
|
|
logger := &lumberjack.Logger{
|
|
LocalTime: true,
|
|
MaxSize: logMaxSize,
|
|
MaxAge: logMaxAge,
|
|
MaxBackups: logMaxBackups,
|
|
Filename: fileName,
|
|
Compress: true,
|
|
}
|
|
|
|
return logger
|
|
}
|