summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--args.go6
-rw-r--r--log.go24
-rw-r--r--notes.go80
-rw-r--r--verbose.go10
4 files changed, 119 insertions, 1 deletions
diff --git a/args.go b/args.go
index 87deb0f..4752f53 100644
--- a/args.go
+++ b/args.go
@@ -12,6 +12,7 @@ var argLog ArgLog
// This struct can be used with the go-arg package
type ArgLog struct {
+ LogDebug bool `arg:"--log-debug" help:"show the log gui"`
LogTmp bool `arg:"--log-tmp" help:"send all output /tmp"`
LogStdout bool `arg:"--log-stdout" help:"send all output to STDOUT"`
LogQuiet bool `arg:"--log-quiet" help:"suppress all output"`
@@ -20,3 +21,8 @@ type ArgLog struct {
func init() {
arg.Register(&argLog)
}
+
+// returns true if --log-debug was passed from the command line
+func ArgDebug() bool {
+ return argLog.LogDebug
+}
diff --git a/log.go b/log.go
index e52ff48..17247db 100644
--- a/log.go
+++ b/log.go
@@ -5,16 +5,19 @@ import (
origlog "log"
)
-var SPEW bool = false
var INFO bool = true
var WARN bool = true
var ERROR bool = true
+var VERBOSE bool = false
+var SPEW bool = false
+
func All(b bool) {
Set("SPEW", b)
Set("INFO", b)
Set("WARN", b)
Set("ERROR", b)
+ Set("VERBOSE", b)
}
func Set(flag string, b bool) {
@@ -27,6 +30,8 @@ func Set(flag string, b bool) {
SPEW = b
case "ERROR":
ERROR = b
+ case "VERBOSE":
+ VERBOSE = b
default:
Error(errors.New("unknown flag"), "Flag name sent:", flag)
}
@@ -42,16 +47,33 @@ func Get(flag string) bool {
return SPEW
case "ERROR":
return ERROR
+ case "VERBOSE":
+ return VERBOSE
default:
Error(errors.New("unknown flag"), "Flag name sent:", flag)
}
return false
}
+// a simple way turn logging messages on and off
+func Log(b bool, a ...any) {
+ if ! b { return }
+ golanglog.Println(a...)
+}
+
+func Logf(b bool, s string, a ...any) {
+ if ! b { return }
+ golanglog.Printf(s, a...)
+}
+
func Println(a ...any) {
origlog.Println(a...)
}
+func Printf(s string, a ...any) {
+ origlog.Printf(s, a...)
+}
+
func Fatalf(s string, a ...any) {
origlog.Fatalf(s, a...)
}
diff --git a/notes.go b/notes.go
new file mode 100644
index 0000000..6b422f6
--- /dev/null
+++ b/notes.go
@@ -0,0 +1,80 @@
+package log
+
+/*
+var argv struct {
+ Foo string
+ Bar bool
+ User string `arg:"env:USER"`
+ Demo bool `help:"run a demo"`
+}
+*/
+
+/*
+var f1 *os.File
+var f2 *os.File
+var err error
+*/
+
+/* from gocron:
+
+// DefaultLogger is used by Cron if none is specified.
+var DefaultLogger Logger = PrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))
+
+// DiscardLogger can be used by callers to discard all log messages.
+var DiscardLogger Logger = PrintfLogger(log.New(ioutil.Discard, "", 0))
+
+// Logger is the interface used in this package for logging, so that any backend
+// can be plugged in. It is a subset of the github.com/go-logr/logr interface.
+type Logger interface {
+ // Info logs routine messages about cron's operation.
+ Info(msg string, keysAndValues ...interface{})
+ // Error logs an error condition.
+ Error(err error, msg string, keysAndValues ...interface{})
+}
+
+*/
+
+// fmt.Println(argv.Foo, args.Bar, args.User)
+/*
+ // from: https://github.com/robfig/cron/blob/master/logger.go
+ log.Println()
+ log.Println("STDOUT is now at /tmp/guilogfile")
+ log.Println("STDOUT is now at /tmp/guilogfile")
+ log.Println()
+ f1, err = os.OpenFile(outfile, os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
+ if err != nil {
+ log.Fatalf("error opening file: %v", err)
+ }
+ // hmm. is there a trick here or must this be in main()
+ // defer f.Close()
+
+ log.SetOutput(f1)
+ log.Println("This is a test log entry")
+*/
+
+/*
+func captureSTDOUT() {
+ f2, _ = os.OpenFile("/tmp/my.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0664)
+ multiWriter := io.MultiWriter(os.Stderr, f2)
+ rd, wr, err := os.Pipe()
+ if err != nil {
+ os.Exit(1)
+ }
+
+ // overwrite os.Stdout
+ os.Stderr = wr
+
+ go func() {
+ scanner := bufio.NewScanner(rd)
+ for scanner.Scan() {
+ stdoutLine := scanner.Text()
+ multiWriter.Write([]byte(stdoutLine + "\n"))
+ }
+ }()
+
+ fmt.Println("foobar")
+
+ // hacky sleep to ensure the go routine can write before program exits
+ time.Sleep(time.Second)
+}
+*/
diff --git a/verbose.go b/verbose.go
new file mode 100644
index 0000000..90add81
--- /dev/null
+++ b/verbose.go
@@ -0,0 +1,10 @@
+package log
+
+import (
+ golanglog "log"
+)
+
+func Verbose(a ...any) {
+ if ! VERBOSE { return }
+ golanglog.Println(a...)
+}