diff --git a/app/app.go b/app/app.go index 03f2dbe..a241f1f 100644 --- a/app/app.go +++ b/app/app.go @@ -9,6 +9,7 @@ import ( "git.sr.ht/~cco/go-scopes/config" "git.sr.ht/~cco/go-scopes/lib" "git.sr.ht/~cco/go-scopes/lib/message" + "git.sr.ht/~cco/go-scopes/logging" "git.sr.ht/~cco/go-scopes/logging/log" ) @@ -16,6 +17,7 @@ type Cfg struct { *config.Base AppType string Home string + Logging *logging.Config } func Start(ctx lib.Context) { diff --git a/examples/demo/etc/etc.go b/examples/demo/etc/etc.go index 8094c23..fe597f7 100644 --- a/examples/demo/etc/etc.go +++ b/examples/demo/etc/etc.go @@ -4,6 +4,7 @@ import ( "git.sr.ht/~cco/go-scopes/app" "git.sr.ht/~cco/go-scopes/config" "git.sr.ht/~cco/go-scopes/lib" + "git.sr.ht/~cco/go-scopes/logging" ) func Config() lib.Config { @@ -13,6 +14,9 @@ func Config() lib.Config { Base: b("dummy", app.Start), Home: ovr(".", HOME), AppType: "standard", + Logging: &logging.Config{ + Logfile: ovr("log/scopes.log", LOGFILE), + }, } cfg.Add(config.Cfg{ Base: b("config", config.Start), @@ -24,5 +28,6 @@ func Config() lib.Config { // collect here the names of fields that may be overridden via // explicit Override() or SCOPES_* environment settings. const ( - HOME = "home" + HOME = "home" + LOGFILE = "logfile" ) diff --git a/examples/demo/go.mod b/examples/demo/go.mod index 5c41c08..63f4dbd 100644 --- a/examples/demo/go.mod +++ b/examples/demo/go.mod @@ -4,4 +4,11 @@ go 1.20 require git.sr.ht/~cco/go-scopes v0.1.20 +require ( + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/rs/zerolog v1.29.1 // indirect + golang.org/x/sys v0.8.0 // indirect +) + replace git.sr.ht/~cco/go-scopes => ../../../go-scopes diff --git a/examples/demo/go.sum b/examples/demo/go.sum new file mode 100644 index 0000000..11b371d --- /dev/null +++ b/examples/demo/go.sum @@ -0,0 +1,19 @@ +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= +github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/examples/demo/log/README.md b/examples/demo/log/README.md new file mode 100644 index 0000000..6878c3c --- /dev/null +++ b/examples/demo/log/README.md @@ -0,0 +1 @@ +Directory `log`. Store log files here. diff --git a/examples/demo/main.go b/examples/demo/main.go index 3283ef5..c44e341 100644 --- a/examples/demo/main.go +++ b/examples/demo/main.go @@ -7,6 +7,7 @@ import ( "git.sr.ht/~cco/go-scopes" "git.sr.ht/~cco/go-scopes/app" + "git.sr.ht/~cco/go-scopes/logging" ) func main() { @@ -14,5 +15,6 @@ func main() { fmt.Println(cfg.Name()) appCfg := cfg.(*app.Cfg) fmt.Println(appCfg.Home) + logging.Setup(appCfg.Logging, appCfg.Home) scopes.RunApp(cfg) } diff --git a/lib/lib.go b/lib/lib.go index a634c44..da78097 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -23,9 +23,9 @@ type Config interface { Step() StepProc MessageHandler() MessageHandler Actions() []ActionConfig + AddAction(string, ActionSpec) Children() []Config Add(Config) - AddAction(string, ActionSpec) } type Services map[string]Context diff --git a/logging/log/log.go b/logging/log/log.go index 1acfd49..7ab1f4c 100644 --- a/logging/log/log.go +++ b/logging/log/log.go @@ -1,5 +1,5 @@ package log -import "github.com/rs/zerolog/log" +import "git.sr.ht/~cco/go-scopes/logging" -var Info = log.Info +var Info = logging.Logger.Info diff --git a/logging/logging.go b/logging/logging.go index 2b43acc..eb6de12 100644 --- a/logging/logging.go +++ b/logging/logging.go @@ -1 +1,19 @@ package logging + +import ( + "fmt" + + "github.com/rs/zerolog/log" +) + +var Logger = log.Logger + +type Config struct { + Logfile string +} + +func Setup(cfg *Config, home string) { + if cfg != nil { + fmt.Println("logging:", home, cfg.Logfile) + } +} diff --git a/testing/testing.go b/testing/testing.go index ea64d24..e57e7ed 100644 --- a/testing/testing.go +++ b/testing/testing.go @@ -12,6 +12,7 @@ import ( "git.sr.ht/~cco/go-scopes/lib" "git.sr.ht/~cco/go-scopes/lib/context" "git.sr.ht/~cco/go-scopes/lib/message" + "git.sr.ht/~cco/go-scopes/logging" ) func Start(ctx lib.Context) { @@ -39,6 +40,8 @@ func SetUp(tbase *testing.T) *T { } func SetUpApp(tbase *testing.T, cfg lib.Config) *T { + appCfg := cfg.(*app.Cfg) + logging.Setup(appCfg.Logging, appCfg.Home) t := SetUp(tbase) t.Ctx = context.AppContext(cfg).WithState(t) cfg.Starter()(t.Ctx) diff --git a/tests/etc/etc.go b/tests/etc/etc.go index d506881..93425a8 100644 --- a/tests/etc/etc.go +++ b/tests/etc/etc.go @@ -6,6 +6,7 @@ import ( "git.sr.ht/~cco/go-scopes/lib" "git.sr.ht/~cco/go-scopes/lib/action" "git.sr.ht/~cco/go-scopes/lib/core" + "git.sr.ht/~cco/go-scopes/logging" "git.sr.ht/~cco/go-scopes/testing" ) @@ -17,6 +18,9 @@ func Config() lib.Config { Base: b("testing", testing.Start), Home: ovr(".", HOME), AppType: "standard", + Logging: &logging.Config{ + Logfile: ovr("log/scopes.log", LOGFILE), + }, } cfg.AddAction("demo", action.BaseSpec(action.Forward, @@ -43,7 +47,8 @@ var ( // collect here the names of fields that may be overridden via // explicit Override() or SCOPES_* environment settings. const ( - HOME = "home" + HOME = "home" + LOGFILE = "logfile" ) // in a production scenario this should be put in a separate diff --git a/tests/log/README.md b/tests/log/README.md new file mode 100644 index 0000000..6878c3c --- /dev/null +++ b/tests/log/README.md @@ -0,0 +1 @@ +Directory `log`. Store log files here.