diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/client.go | 39 | ||||
| -rw-r--r-- | client/fsm.go | 4 |
2 files changed, 26 insertions, 17 deletions
diff --git a/client/client.go b/client/client.go index 6c905ca..ea5b2b9 100644 --- a/client/client.go +++ b/client/client.go @@ -6,6 +6,8 @@ package client import ( "context" "errors" + "log/slog" + "os" "sync" "time" @@ -46,6 +48,9 @@ type Client struct { // tokenCacher tokCacher TokenCacher + // logf is the log file + logf *os.File + // cfg is the config cfg *config.Config @@ -101,7 +106,7 @@ func (c *Client) goTransition(id fsm.StateID) error { return i18nerr.WrapInternal(err, "state transition error") } if !handled { - log.Logger.Debugf("transition not handled by the client to internal state: '%s'", GetStateName(id)) + slog.Debug("transition not handled by the client to internal state", "state", GetStateName(id)) } return nil } @@ -126,14 +131,16 @@ func New(name string, version string, directory string, stateCallback func(FSMSt } // Initialize the logger - lvl := log.LevelInfo + lvl := slog.LevelInfo if debug { - lvl = log.LevelDebug + lvl = slog.LevelDebug } - if err = log.Logger.Init(lvl, directory); err != nil { + logf, err := log.Init(lvl, directory) + if err != nil { return nil, i18nerr.WrapInternalf(err, "The log file with directory: '%s' failed to initialize", directory) } + c.logf = logf // set client name c.Name = name @@ -207,7 +214,7 @@ func (c *Client) AuthDone(id string, t srvtypes.Type) { } _, err = c.FSM.GoTransition(StateMain) if err != nil { - log.Logger.Debugf("unhandled auth done main transition: %v", err) + slog.Debug("unhandled auth done transition", "error", err) } c.TrySave() } @@ -222,7 +229,7 @@ func (c *Client) TokensUpdated(id string, t srvtypes.Type, tok eduoauth.Token) { // Set the memory err := c.tokCacher.Set(id, t, tok) if err != nil { - log.Logger.Warningf("failed to set tokens into cache with error: %v", err) + slog.Warn("failed to set tokens in cache", "error", err) } if c.TokenSetter == nil { @@ -256,11 +263,13 @@ func (c *Client) Deregister() { // Move the state machine back _, err := c.FSM.GoTransition(StateDeregistered) if err != nil { - log.Logger.Debugf("failed deregistered transition: %v", err) + slog.Debug("failed deregistered transition", "error", err) } // Close the log file - _ = log.Logger.Close() + if c.logf != nil { + _ = c.logf.Close() + } release() // Empty out the state @@ -316,14 +325,14 @@ func (c *Client) locationCallback(ck *cookie.Cookie, orgID string) error { // TrySave tries to save the internal state file // If an error occurs it logs it func (c *Client) TrySave() { - log.Logger.Debugf("saving state file") + slog.Debug("saving state file") if c.cfg == nil { - log.Logger.Warningf("no state file to save") + slog.Warn("no state file to save") return } err := c.cfg.Save() if err != nil { - log.Logger.Warningf("failed to save state file: %v", err) + slog.Warn("failed to save state file", "error", err) } } @@ -429,12 +438,12 @@ func (c *Client) GetConfig(ck *cookie.Cookie, identifier string, _type srvtypes. } err = c.GettingConfig() if err != nil { - log.Logger.Debugf("failed getting config transition: %v", err) + slog.Debug("failed getting config transition", "error", err) } tok, err := c.retrieveTokens(identifier, _type) if err != nil { - log.Logger.Debugf("no tokens found for server: '%s', with error: '%v'", identifier, err) + slog.Debug("no tokens found for server", "server", identifier, "error", err) } ctx := ck.Context() @@ -443,7 +452,7 @@ func (c *Client) GetConfig(ck *cookie.Cookie, identifier string, _type srvtypes. // make sure the servers are fetched fresh _, _, dserverr := disco.Servers(ctx) if dserverr != nil { - log.Logger.Warningf("failed to fetch server discovery when getting config: %v", dserverr) + slog.Warn("failed to fetch server discovery when getting config", "error", dserverr) } release() } @@ -457,7 +466,7 @@ func (c *Client) GetConfig(ck *cookie.Cookie, identifier string, _type srvtypes. // make sure the organizations are fetched if they need an update _, _, dorgerr := disco.Organizations(ctx) if dorgerr != nil { - log.Logger.Warningf("failed to fetch organization discovery when getting config: %v", dorgerr) + slog.Warn("failed to fetch organization discovery when getting config", "error", dorgerr) } release() srv, err = c.Servers.GetSecure(ctx, identifier, c.discoMan, tok, startup) diff --git a/client/fsm.go b/client/fsm.go index d22f947..6fffc8a 100644 --- a/client/fsm.go +++ b/client/fsm.go @@ -2,10 +2,10 @@ package client import ( "fmt" + "log/slog" "codeberg.org/eduVPN/eduvpn-common/i18nerr" "codeberg.org/eduVPN/eduvpn-common/internal/fsm" - "codeberg.org/eduVPN/eduvpn-common/internal/log" ) type ( @@ -182,7 +182,7 @@ func (c *Client) SetState(state FSMStateID) error { if err != nil { // self-transitions are only debug errors if c.FSM.InState(state) { - log.Logger.Debugf("attempt an invalid self-transition: %s", c.FSM.GetStateName(state)) + slog.Debug("attempt at an invalid self-transition", "transition", c.FSM.GetStateName(state)) return nil } return i18nerr.WrapInternalf(err, "Failed internal state transition requested by the client from: '%s' to '%s'", GetStateName(curr), GetStateName(state)) |
