diff --git a/flags.go b/flags.go index de58c8d..d8d886a 100644 --- a/flags.go +++ b/flags.go @@ -11,24 +11,25 @@ var ERROR bool = true var VERBOSE bool = false // var SPEW bool = false -var SPEW logFlag +var SPEW LogFlag -type logFlag struct { - b bool - name string - pkg string - desc string +type LogFlag struct { + B bool + Name string + Subsystem string + Desc string } var registered map[string][]string +var flags []*LogFlag func init() { registered = make(map[string][]string) - SPEW.b = false - SPEW.name = "SPEW" - SPEW.pkg = "log" - SPEW.desc = "Enable log.Spew()" + SPEW.B = false + SPEW.Name = "SPEW" + SPEW.Subsystem = "log" + SPEW.Desc = "Enable log.Spew()" // register the default flags used by this log package registered["log"] = []string{"SPEW","INFO", "WARN", "ERROR", "VERBOSE"} @@ -43,6 +44,11 @@ func All(b bool) { } func ListFlags() map[string][]string { + Info("ListFlags() registered =", registered) + for _, f := range flags { + Info("ListFlags() flag B =", f.B, "Name =", f.Name, "Subsystem =", f.Subsystem, "Description:", f.Desc) + } + return registered } @@ -53,7 +59,7 @@ func Set(flag string, b bool) { case "WARN": WARN = b case "SPEW": - SPEW.b = b + SPEW.B = b case "ERROR": ERROR = b case "VERBOSE": @@ -70,7 +76,7 @@ func Get(flag string) bool { case "WARN": return WARN case "SPEW": - return SPEW.b + return SPEW.B case "ERROR": return ERROR case "VERBOSE": @@ -81,6 +87,12 @@ func Get(flag string) bool { return false } +// register a variable name from a subsystem +func (f *LogFlag) Register() { + Info("log.Register() ", f) + flags = append(flags,f) +} + // register a variable name from a subsystem // this is used for custom log flags func Register(subsystem string, name string, b *bool) { diff --git a/log.go b/log.go index 026a3f1..9f07af3 100644 --- a/log.go +++ b/log.go @@ -20,12 +20,41 @@ In your package, register NETWARN: log.Register("myNetPkg", "NETWARN", &NETWARN) */ -func Log(b bool, a ...any) { - if ! b { return } - origlog.Println(a...) +func Log(x any, a ...any) { + if x == nil { return } + switch x.(type) { + case bool: + if ! x.(bool) { + return + } + origlog.Println(a...) + case LogFlag: + var f LogFlag + f = x.(LogFlag) + if ! f.B { + return + } + a = append([]any{f.Subsystem}, a...) + origlog.Println(a...) + default: + a = append([]any{x}, a...) + origlog.Println(a...) + } } -func Logf(b bool, s string, a ...any) { - if ! b { return } +func Logf(x any, s string, a ...any) { + if x == nil { return } + switch x.(type) { + case bool: + if ! x.(bool) { + return + } + case LogFlag: + var f LogFlag + f = x.(LogFlag) + if ! f.B { + return + } + } origlog.Printf(s, a...) } diff --git a/spew.go b/spew.go index a467906..7fa0251 100644 --- a/spew.go +++ b/spew.go @@ -6,7 +6,7 @@ import ( ) func Spew(b any, a ...any) { - if ! SPEW.b { return } + if ! SPEW.B { return } switch b.(type) { case bool: @@ -14,10 +14,10 @@ func Spew(b any, a ...any) { return } origlog.Println("SPEW:", spew.Sdump(a...)) - case logFlag: - var f logFlag - f = b.(logFlag) - if ! f.b { + case LogFlag: + var f LogFlag + f = b.(LogFlag) + if ! f.B { return } origlog.Println("SPEW:", spew.Sdump(a...))