diff --git a/flags.go b/flags.go index 927ccb5..f6ae676 100644 --- a/flags.go +++ b/flags.go @@ -27,6 +27,7 @@ package log import ( "net/http" + "os" "sync" ) @@ -56,6 +57,7 @@ type LogFlag struct { var flags []*LogFlag var daemonMode bool +var captureMode *os.File var httpMode http.ResponseWriter func init() { diff --git a/reallog.go b/reallog.go index 347db85..3c565a3 100644 --- a/reallog.go +++ b/reallog.go @@ -7,12 +7,17 @@ import ( "fmt" reallog "log" "net/http" + "os" ) func DaemonMode(b bool) { daemonMode = b } +func CaptureMode(f *os.File) { + captureMode = f +} + func HttpMode(w http.ResponseWriter) { httpMode = w } @@ -27,9 +32,18 @@ func DaemonShow() { func realPrintln(a ...any) { if daemonMode { - fmt.Println(a...) + if captureMode == nil { + fmt.Println(a...) + } else { + fmt.Fprintln(captureMode, a...) + } } else { - reallog.Println(a...) + if captureMode == nil { + fmt.Println(a...) + } else { + // TODO: add datestamp + fmt.Fprintln(captureMode, a...) + } } if httpMode != nil { s := fmt.Sprint(a...) @@ -39,9 +53,17 @@ func realPrintln(a ...any) { func realPrintf(s string, a ...any) { if daemonMode { - fmt.Printf(s, a...) + if captureMode == nil { + fmt.Printf(s, a...) + } else { + fmt.Fprintf(captureMode, s, a...) + } } else { - reallog.Printf(s, a...) + if captureMode == nil { + reallog.Printf(s, a...) + } else { + fmt.Fprintf(captureMode, s, a...) + } } if httpMode != nil { fmt.Fprintln(httpMode, fmt.Sprintf(s, a...))