go.wit.com/log Flags change
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
6749a1d173
commit
6c5a9f6ed5
2
error.go
2
error.go
|
@ -5,7 +5,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func Error(err error, a ...any) {
|
func Error(err error, a ...any) {
|
||||||
if ! ERROR.B { return }
|
if ! ERROR.b { return }
|
||||||
origlog.Println("Error:", err)
|
origlog.Println("Error:", err)
|
||||||
origlog.Println(a...)
|
origlog.Println(a...)
|
||||||
}
|
}
|
||||||
|
|
160
flags.go
160
flags.go
|
@ -4,6 +4,25 @@ package log
|
||||||
Handles the on/off flags for things like log.Info() and log.Warn()
|
Handles the on/off flags for things like log.Info() and log.Warn()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
The original log flags:
|
||||||
|
|
||||||
|
log.Ldate: The date in the local time zone: YYYY/MM/DD.
|
||||||
|
log.Ltime: The time in the local time zone: HH:MM:SS.
|
||||||
|
log.Lmicroseconds: Microsecond resolution: HH:MM:SS.microseconds.
|
||||||
|
log.Llongfile: Full file name and line number: /a/b/c/d.go:23.
|
||||||
|
log.Lshortfile: Final file name element and line number: d.go:23.
|
||||||
|
log.LUTC: If Ldate or Ltime is set, use UTC rather than the local time zone.
|
||||||
|
log.Lmsgprefix: Move the "prefix" from the beginning of the line to before the message.
|
||||||
|
log.LstdFlags: Initial values for the standard logger (Ldate | Ltime).
|
||||||
|
|
||||||
|
can be set this way:
|
||||||
|
myLogger.SetFlags(log.Ldate | log.Ltime)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
@ -15,57 +34,53 @@ var WARN LogFlag
|
||||||
var ERROR LogFlag
|
var ERROR LogFlag
|
||||||
var PRINTLN LogFlag
|
var PRINTLN LogFlag
|
||||||
|
|
||||||
|
var always LogFlag
|
||||||
|
|
||||||
// writeMutex protects locks the write process
|
// writeMutex protects locks the write process
|
||||||
var flagsMutex sync.Mutex
|
var flagsMutex sync.Mutex
|
||||||
|
|
||||||
type LogFlag struct {
|
type LogFlag struct {
|
||||||
B bool
|
b bool
|
||||||
Default bool // set at the time of Registration()
|
orig bool // used as the Default value. set at the time of Registration()
|
||||||
Name string
|
name string
|
||||||
// TODO: figure out what package is sending the Registration
|
// TODO: figure out what package is sending the Registration
|
||||||
Subsystem string // probably should just be forced to be the package name
|
subsystem string // probably should just be forced to be the package name
|
||||||
Short string // string actually printed on each line
|
short string // string actually printed on each line
|
||||||
Desc string
|
desc string
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags []*LogFlag
|
var flags []*LogFlag
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
INFO.B = false
|
full := "go.wit.com/log"
|
||||||
INFO.Name = "INFO"
|
short := "gui"
|
||||||
INFO.Subsystem = "log"
|
|
||||||
INFO.Desc = "Enable log.Info()"
|
|
||||||
INFO.Register()
|
|
||||||
|
|
||||||
SPEW.B = false
|
INFO.NewFlag("INFO", false, full, short, "Enable log.Info()")
|
||||||
SPEW.Name = "SPEW"
|
SPEW.NewFlag("SPEW", false, full, short, "Enable log.Spew()")
|
||||||
SPEW.Subsystem = "log"
|
WARN.NewFlag("WARN", true, full, short, "Enable log.Warn()")
|
||||||
SPEW.Desc = "Enable log.Spew()"
|
|
||||||
SPEW.Register()
|
|
||||||
|
|
||||||
VERBOSE.B = false
|
VERBOSE.b = false
|
||||||
VERBOSE.Name = "VERBOSE"
|
VERBOSE.name = "VERBOSE"
|
||||||
VERBOSE.Subsystem = "log"
|
VERBOSE.subsystem = "log"
|
||||||
VERBOSE.Desc = "Enable log.Verbose()"
|
VERBOSE.desc = "Enable log.Verbose()"
|
||||||
VERBOSE.Register()
|
VERBOSE.Register()
|
||||||
|
|
||||||
WARN.B = true
|
ERROR.b = true
|
||||||
WARN.Name = "WARN"
|
ERROR.name = "ERROR"
|
||||||
WARN.Subsystem = "log"
|
ERROR.subsystem = "log"
|
||||||
WARN.Desc = "Enable log.Warn()"
|
ERROR.desc = "Enable log.Error()"
|
||||||
WARN.Register()
|
|
||||||
|
|
||||||
ERROR.B = true
|
|
||||||
ERROR.Name = "ERROR"
|
|
||||||
ERROR.Subsystem = "log"
|
|
||||||
ERROR.Desc = "Enable log.Error()"
|
|
||||||
ERROR.Register()
|
ERROR.Register()
|
||||||
|
|
||||||
PRINTLN.B = true
|
PRINTLN.b = true
|
||||||
PRINTLN.Name = "PRINTLN"
|
PRINTLN.name = "PRINTLN"
|
||||||
PRINTLN.Subsystem = "log"
|
PRINTLN.subsystem = "log"
|
||||||
PRINTLN.Desc = "Enable log.Println()"
|
PRINTLN.desc = "Enable log.Println()"
|
||||||
PRINTLN.Register()
|
PRINTLN.Register()
|
||||||
|
|
||||||
|
always.b = true
|
||||||
|
always.subsystem = "log"
|
||||||
|
always.short = "log"
|
||||||
|
always.Register()
|
||||||
}
|
}
|
||||||
|
|
||||||
// set all the flags
|
// set all the flags
|
||||||
|
@ -73,16 +88,20 @@ func SetAll(b bool) {
|
||||||
flagsMutex.Lock()
|
flagsMutex.Lock()
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
f.B = b
|
f.b = b
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *LogFlag) SetDefault() {
|
||||||
|
f.b = f.orig
|
||||||
|
}
|
||||||
|
|
||||||
// set all the flags
|
// set all the flags
|
||||||
func SetDefaults() {
|
func SetDefaults() {
|
||||||
flagsMutex.Lock()
|
flagsMutex.Lock()
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
f.B = f.Default
|
f.b = f.orig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +113,7 @@ func ShowFlags() []*LogFlag {
|
||||||
flagsMutex.Lock()
|
flagsMutex.Lock()
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
Log(true, "ShowFlags() ", "(" + f.Subsystem + ")", f.Name, "=", f.B, ":", f.Desc)
|
Log(always, "ShowFlags() ", "(" + f.subsystem + ")", f.name, "=", f.b, ":", f.desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
return flags
|
return flags
|
||||||
|
@ -105,7 +124,7 @@ func ProcessFlags(callback func(*LogFlag)) {
|
||||||
flagsMutex.Lock()
|
flagsMutex.Lock()
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
Log(true, "ProcessFlags() run callback(f) here on", f)
|
Log(always, "ProcessFlags() run callback(f) here on", f)
|
||||||
callback(f)
|
callback(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,19 +138,60 @@ func (f *LogFlag) Register() {
|
||||||
flagsMutex.Lock()
|
flagsMutex.Lock()
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
Info("log.Register() ", f)
|
Info("log.Register() ", f)
|
||||||
f.Default = f.B
|
f.orig = f.b
|
||||||
if f.Short == "" {
|
if f.short == "" {
|
||||||
f.Short = f.Subsystem
|
f.short = f.subsystem
|
||||||
}
|
}
|
||||||
flags = append(flags,f)
|
flags = append(flags,f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *LogFlag) Ok() bool {
|
||||||
|
if f == nil {return false}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *LogFlag) Get() bool {
|
||||||
|
if ! f.Ok() {return false}
|
||||||
|
return f.b
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *LogFlag) GetName() string {
|
||||||
|
if ! f.Ok() {return ""}
|
||||||
|
return f.name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *LogFlag) GetSubsystem() string {
|
||||||
|
if ! f.Ok() {return ""}
|
||||||
|
return f.subsystem
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *LogFlag) GetDesc() string {
|
||||||
|
if ! f.Ok() {return ""}
|
||||||
|
return f.desc
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is what the current log.SetFlag() function should become
|
||||||
|
func (f *LogFlag) NewFlag(name string, b bool, full, short, desc string) {
|
||||||
|
if f != nil {return}
|
||||||
|
flagsMutex.Lock()
|
||||||
|
defer flagsMutex.Unlock()
|
||||||
|
Info("log.SetFlag() ", full, short, name, true)
|
||||||
|
f = new(LogFlag)
|
||||||
|
f.b = b
|
||||||
|
f.orig = b
|
||||||
|
f.short = short
|
||||||
|
f.subsystem = full
|
||||||
|
f.name = name
|
||||||
|
f.desc = desc
|
||||||
|
flags = append(flags,f)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *LogFlag) Set(b bool) {
|
func (f *LogFlag) Set(b bool) {
|
||||||
flagsMutex.Lock()
|
flagsMutex.Lock()
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
Info("Set() ", "(" + f.Subsystem + ")", f.Name, "=", f.B, ":", f.Desc)
|
Info("Set() ", "(" + f.subsystem + ")", f.name, "=", f.b, ":", f.desc)
|
||||||
f.B = b
|
f.b = b
|
||||||
Info("Set() f.B is now", f.B)
|
Info("Set() f.b is now", f.b)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Set(subsystem string, name string, b bool) {
|
func Set(subsystem string, name string, b bool) {
|
||||||
|
@ -139,10 +199,10 @@ func Set(subsystem string, name string, b bool) {
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
Verbose("log.Set() TODO find var:", "(" + subsystem + ")", name, "=", b)
|
Verbose("log.Set() TODO find var:", "(" + subsystem + ")", name, "=", b)
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
Verbose("log.Set() ", "(" + f.Subsystem + ")", f.Name, "=", f.B, ":", f.Desc)
|
Verbose("log.Set() ", "(" + f.subsystem + ")", f.name, "=", f.b, ":", f.desc)
|
||||||
if (subsystem == f.Subsystem) && (name == f.Name) {
|
if (subsystem == f.subsystem) && (name == f.name) {
|
||||||
Verbose("log.Set() FOUND ", f)
|
Verbose("log.Set() FOUND ", f)
|
||||||
f.B = b
|
f.b = b
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,10 +214,10 @@ func Get(subsystem string, name string) bool {
|
||||||
defer flagsMutex.Unlock()
|
defer flagsMutex.Unlock()
|
||||||
Verbose("log.Get() TODO find var:", "(" + subsystem + ")", name)
|
Verbose("log.Get() TODO find var:", "(" + subsystem + ")", name)
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
Verbose("log.Get() ", "(" + f.Subsystem + ")", f.Name, "=", f.B, ":", f.Desc)
|
Verbose("log.Get() ", "(" + f.subsystem + ")", f.name, "=", f.b, ":", f.desc)
|
||||||
if (subsystem == f.Subsystem) && (name == f.Name) {
|
if (subsystem == f.subsystem) && (name == f.name) {
|
||||||
Verbose("log.Get() FOUND ", f)
|
Verbose("log.Get() FOUND ", f)
|
||||||
return f.B
|
return f.b
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|
4
info.go
4
info.go
|
@ -5,11 +5,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func Info(a ...any) {
|
func Info(a ...any) {
|
||||||
if ! INFO.B { return }
|
if ! INFO.b { return }
|
||||||
golanglog.Println(a...)
|
golanglog.Println(a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Infof(s string, a ...any) {
|
func Infof(s string, a ...any) {
|
||||||
if ! INFO.B { return }
|
if ! INFO.b { return }
|
||||||
golanglog.Printf(s, a...)
|
golanglog.Printf(s, a...)
|
||||||
}
|
}
|
||||||
|
|
35
log.go
35
log.go
|
@ -20,41 +20,18 @@ In your package, register NETWARN:
|
||||||
log.Register("myNetPkg", "NETWARN", &NETWARN)
|
log.Register("myNetPkg", "NETWARN", &NETWARN)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
func Log(x any, a ...any) {
|
func Log(f LogFlag, a ...any) {
|
||||||
if x == nil { return }
|
if ! f.b {
|
||||||
switch x.(type) {
|
|
||||||
case bool:
|
|
||||||
if ! x.(bool) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
a = append([]any{f.short}, a...)
|
||||||
origlog.Println(a...)
|
origlog.Println(a...)
|
||||||
case LogFlag:
|
|
||||||
var f LogFlag
|
|
||||||
f = x.(LogFlag)
|
|
||||||
if ! f.B {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
a = append([]any{f.Short}, a...)
|
|
||||||
origlog.Println(a...)
|
|
||||||
default:
|
|
||||||
a = append([]any{x}, a...)
|
|
||||||
origlog.Println(a...)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Logf(x any, s string, a ...any) {
|
func Logf(f LogFlag, s string, a ...any) {
|
||||||
if x == nil { return }
|
if ! f.b {
|
||||||
switch x.(type) {
|
|
||||||
case bool:
|
|
||||||
if ! x.(bool) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case LogFlag:
|
s = f.short + " " + s
|
||||||
var f LogFlag
|
|
||||||
f = x.(LogFlag)
|
|
||||||
if ! f.B {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
origlog.Printf(s, a...)
|
origlog.Printf(s, a...)
|
||||||
}
|
}
|
||||||
|
|
34
original.go
34
original.go
|
@ -19,18 +19,48 @@ package log
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TODO: fill in the other functions from "log". Is there a way to automagically do that?
|
// TODO: fill in the other functions from "log". Is there a way to automagically do that?
|
||||||
|
// the full list is:
|
||||||
|
/*
|
||||||
|
type Logger
|
||||||
|
|
||||||
|
// NEED THESE
|
||||||
|
func (l *Logger) Fatal(v ...any)
|
||||||
|
func (l *Logger) Fatalf(format string, v ...any)
|
||||||
|
func (l *Logger) Fatalln(v ...any)
|
||||||
|
func (l *Logger) Panic(v ...any)
|
||||||
|
func (l *Logger) Panicf(format string, v ...any)
|
||||||
|
func (l *Logger) Panicln(v ...any)
|
||||||
|
func (l *Logger) Print(v ...any)
|
||||||
|
func (l *Logger) Printf(format string, v ...any)
|
||||||
|
func (l *Logger) Println(v ...any)
|
||||||
|
|
||||||
|
func Default() *Logger
|
||||||
|
func New(out io.Writer, prefix string, flag int) *Logger
|
||||||
|
|
||||||
|
// what are these?
|
||||||
|
func (l *Logger) Flags() int
|
||||||
|
func (l *Logger) SetFlags(flag int)
|
||||||
|
func (l *Logger) Prefix() string
|
||||||
|
func (l *Logger) SetPrefix(prefix string)
|
||||||
|
|
||||||
|
// probably not this stuff
|
||||||
|
func (l *Logger) SetOutput(w io.Writer)
|
||||||
|
func (l *Logger) Output(calldepth int, s string) error
|
||||||
|
func (l *Logger) Writer() io.Writer
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
origlog "log"
|
origlog "log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Println(a ...any) {
|
func Println(a ...any) {
|
||||||
if ! PRINTLN.B { return }
|
if ! PRINTLN.b { return }
|
||||||
origlog.Println(a...)
|
origlog.Println(a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Printf(s string, a ...any) {
|
func Printf(s string, a ...any) {
|
||||||
if ! PRINTLN.B { return }
|
if ! PRINTLN.b { return }
|
||||||
origlog.Printf(s, a...)
|
origlog.Printf(s, a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
spew.go
4
spew.go
|
@ -6,7 +6,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func Spew(b any, a ...any) {
|
func Spew(b any, a ...any) {
|
||||||
if ! SPEW.B { return }
|
if ! SPEW.b { return }
|
||||||
|
|
||||||
switch b.(type) {
|
switch b.(type) {
|
||||||
case bool:
|
case bool:
|
||||||
|
@ -17,7 +17,7 @@ func Spew(b any, a ...any) {
|
||||||
case LogFlag:
|
case LogFlag:
|
||||||
var f LogFlag
|
var f LogFlag
|
||||||
f = b.(LogFlag)
|
f = b.(LogFlag)
|
||||||
if ! f.B {
|
if ! f.b {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
origlog.Println("SPEW:", spew.Sdump(a...))
|
origlog.Println("SPEW:", spew.Sdump(a...))
|
||||||
|
|
|
@ -5,6 +5,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func Verbose(a ...any) {
|
func Verbose(a ...any) {
|
||||||
if ! VERBOSE.B { return }
|
if ! VERBOSE.b { return }
|
||||||
golanglog.Println(a...)
|
golanglog.Println(a...)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue