Merge pull request #68 from router-for-me/log

refactor(logging): Improve client loading and registration logs
This commit is contained in:
Luis Pater
2025-09-26 18:22:49 +08:00
committed by GitHub
4 changed files with 8 additions and 15 deletions

View File

@@ -8,6 +8,7 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
// Separator used to visually group related log lines.
var credentialSeparator = strings.Repeat("-", 70) var credentialSeparator = strings.Repeat("-", 70)
// LogSavingCredentials emits a consistent log message when persisting auth material. // LogSavingCredentials emits a consistent log message when persisting auth material.
@@ -21,5 +22,5 @@ func LogSavingCredentials(path string) {
// LogCredentialSeparator adds a visual separator to group auth/key processing logs. // LogCredentialSeparator adds a visual separator to group auth/key processing logs.
func LogCredentialSeparator() { func LogCredentialSeparator() {
log.Info(credentialSeparator) log.Debug(credentialSeparator)
} }

View File

@@ -9,6 +9,7 @@ import (
"sync" "sync"
"time" "time"
misc "github.com/router-for-me/CLIProxyAPI/v6/internal/misc"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
@@ -148,6 +149,8 @@ func (r *ModelRegistry) RegisterClient(clientID, clientProvider string, models [
delete(r.clientProviders, clientID) delete(r.clientProviders, clientID)
} }
log.Debugf("Registered client %s from provider %s with %d models", clientID, clientProvider, len(models)) log.Debugf("Registered client %s from provider %s with %d models", clientID, clientProvider, len(models))
// Separator at the end of the registration block (acts as boundary to next group)
misc.LogCredentialSeparator()
} }
// UnregisterClient removes a client and decrements counts for its models // UnregisterClient removes a client and decrements counts for its models
@@ -207,6 +210,8 @@ func (r *ModelRegistry) unregisterClientInternal(clientID string) {
delete(r.clientProviders, clientID) delete(r.clientProviders, clientID)
} }
log.Debugf("Unregistered client %s", clientID) log.Debugf("Unregistered client %s", clientID)
// Separator line after completing client unregistration (after the summary line)
misc.LogCredentialSeparator()
} }
// SetModelQuotaExceeded marks a model as quota exceeded for a specific client // SetModelQuotaExceeded marks a model as quota exceeded for a specific client

View File

@@ -561,8 +561,7 @@ func (w *Watcher) reloadClients() {
w.refreshAuthState() w.refreshAuthState()
log.Infof("full client reload complete - old: %d clients, new: %d clients (%d auth files + %d GL API keys + %d Claude API keys + %d Codex keys + %d OpenAI-compat)", log.Infof("full client load complete - %d clients (%d auth files + %d GL API keys + %d Claude API keys + %d Codex keys + %d OpenAI-compat)",
0,
totalNewClients, totalNewClients,
authFileCount, authFileCount,
glAPIKeyCount, glAPIKeyCount,

View File

@@ -18,7 +18,6 @@ import (
"github.com/router-for-me/CLIProxyAPI/v6/internal/registry" "github.com/router-for-me/CLIProxyAPI/v6/internal/registry"
"github.com/router-for-me/CLIProxyAPI/v6/internal/runtime/executor" "github.com/router-for-me/CLIProxyAPI/v6/internal/runtime/executor"
_ "github.com/router-for-me/CLIProxyAPI/v6/internal/usage" _ "github.com/router-for-me/CLIProxyAPI/v6/internal/usage"
"github.com/router-for-me/CLIProxyAPI/v6/internal/util"
"github.com/router-for-me/CLIProxyAPI/v6/internal/watcher" "github.com/router-for-me/CLIProxyAPI/v6/internal/watcher"
sdkaccess "github.com/router-for-me/CLIProxyAPI/v6/sdk/access" sdkaccess "github.com/router-for-me/CLIProxyAPI/v6/sdk/access"
_ "github.com/router-for-me/CLIProxyAPI/v6/sdk/access/providers/configapikey" _ "github.com/router-for-me/CLIProxyAPI/v6/sdk/access/providers/configapikey"
@@ -382,17 +381,6 @@ func (s *Service) Run(ctx context.Context) error {
log.Infof("core auth auto-refresh started (interval=%s)", interval) log.Infof("core auth auto-refresh started (interval=%s)", interval)
} }
authFileCount := util.CountAuthFiles(s.cfg.AuthDir)
totalNewClients := authFileCount + apiKeyResult.GeminiKeyCount + apiKeyResult.ClaudeKeyCount + apiKeyResult.CodexKeyCount + apiKeyResult.OpenAICompatCount
log.Infof("full client load complete - %d clients (%d auth files + %d GL API keys + %d Claude API keys + %d Codex keys + %d OpenAI-compat)",
totalNewClients,
authFileCount,
apiKeyResult.GeminiKeyCount,
apiKeyResult.ClaudeKeyCount,
apiKeyResult.CodexKeyCount,
apiKeyResult.OpenAICompatCount,
)
select { select {
case <-ctx.Done(): case <-ctx.Done():
log.Debug("service context cancelled, shutting down...") log.Debug("service context cancelled, shutting down...")