refactor(logging): replace all print/log with structured slog logger
- main.go: 30+ log.Printf → logger.Infof - plugin/registry: 12 log.Printf → logger.Infof - db/db.go, ws/hub.go: log → logger - platform-bridge: fmt.Printf/println → logger.Info - Logs now: time=... level=INFO msg=... - 16 packages pass, vet clean
This commit is contained in:
1 parent
628d416dcd
commit
a58ec7325d
8 files changed
+55
-50
No files matched your search
+25
-24
@@ -6,6 +6,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
@@ -52,15 +53,15 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||||
log.Println("🧠 Cyrene v2 启动中...")
|
logger.Info("🧠 Cyrene v2 启动中...")
|
||||||
|
|
||||||
// === 1. Platform & Config ===
|
// === 1. Platform & Config ===
|
||||||
plat := platform.Detect()
|
plat := platform.Detect()
|
||||||
log.Printf("[platform] %s", plat.Summary())
|
logger.Infof("[platform] %s", plat.Summary())
|
||||||
|
|
||||||
cfg, err := config.Load()
|
cfg, err := config.Load()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[config] .env load failed: %v", err)
|
logger.Infof("[config] .env load failed: %v", err)
|
||||||
}
|
}
|
||||||
cfg.ValidateOrFatal()
|
cfg.ValidateOrFatal()
|
||||||
cfg.LogSanitized()
|
cfg.LogSanitized()
|
||||||
@@ -74,7 +75,7 @@ func main() {
|
|||||||
MaxOpenConns: 25, MaxIdleConns: 5,
|
MaxOpenConns: 25, MaxIdleConns: 5,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[db] warning: %v (running without persistence)", err)
|
logger.Infof("[db] warning: %v (running without persistence)", err)
|
||||||
} else {
|
} else {
|
||||||
defer database.Close()
|
defer database.Close()
|
||||||
db.RunMigration(context.Background(), database, "memories", db.SplitSQL(memory.CreateTableSQL()))
|
db.RunMigration(context.Background(), database, "memories", db.SplitSQL(memory.CreateTableSQL()))
|
||||||
@@ -82,7 +83,7 @@ func main() {
|
|||||||
|
|
||||||
// === 3. NATS (in-process) ===
|
// === 3. NATS (in-process) ===
|
||||||
natsConn := nats.NewInProcess()
|
natsConn := nats.NewInProcess()
|
||||||
log.Printf("[nats] ready")
|
logger.Infof("[nats] ready")
|
||||||
_ = natsConn
|
_ = natsConn
|
||||||
|
|
||||||
// === 4. Plugin Registry ===
|
// === 4. Plugin Registry ===
|
||||||
@@ -114,7 +115,7 @@ func main() {
|
|||||||
reg.Register(websearch.New(cfg.SearXNGURL), pluginCfg)
|
reg.Register(websearch.New(cfg.SearXNGURL), pluginCfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[plugin] loaded %d plugins: %v", reg.Count(), reg.ListNames())
|
logger.Infof("[plugin] loaded %d plugins: %v", reg.Count(), reg.ListNames())
|
||||||
|
|
||||||
// === 5. Voice Service ===
|
// === 5. Voice Service ===
|
||||||
voiceSvc := voicesvc.New(voicesvc.Config{
|
voiceSvc := voicesvc.New(voicesvc.Config{
|
||||||
@@ -122,24 +123,24 @@ func main() {
|
|||||||
TTSProviders: []string{cfg.TTSProvider},
|
TTSProviders: []string{cfg.TTSProvider},
|
||||||
DashScopeKey: cfg.DashScopeAPIKey,
|
DashScopeKey: cfg.DashScopeAPIKey,
|
||||||
})
|
})
|
||||||
log.Printf("[voice] ready")
|
logger.Infof("[voice] ready")
|
||||||
|
|
||||||
// === 6. Memory Service ===
|
// === 6. Memory Service ===
|
||||||
var memSvc *memory.Service
|
var memSvc *memory.Service
|
||||||
if database != nil {
|
if database != nil {
|
||||||
memRepo := memory.NewRepository(database)
|
memRepo := memory.NewRepository(database)
|
||||||
memSvc = memory.NewService(memRepo)
|
memSvc = memory.NewService(memRepo)
|
||||||
log.Printf("[memory] connected")
|
logger.Infof("[memory] connected")
|
||||||
} else {
|
} else {
|
||||||
log.Printf("[memory] disabled (no database)")
|
logger.Infof("[memory] disabled (no database)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// === 7. AI-Core: Persona ===
|
// === 7. AI-Core: Persona ===
|
||||||
personaLoader, err := persona.NewLoader(cfg.PersonaDir)
|
personaLoader, err := persona.NewLoader(cfg.PersonaDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[persona] load error: %v (using builtin)", err)
|
logger.Infof("[persona] load error: %v (using builtin)", err)
|
||||||
}
|
}
|
||||||
log.Printf("[persona] loaded %d persona(s): %v", personaLoader.Count(), personaLoader.List())
|
logger.Infof("[persona] loaded %d persona(s): %v", personaLoader.Count(), personaLoader.List())
|
||||||
personaInjector := persona.NewInjector(personaLoader.Default())
|
personaInjector := persona.NewInjector(personaLoader.Default())
|
||||||
|
|
||||||
// === 8. AI-Core: LLM Adapter ===
|
// === 8. AI-Core: LLM Adapter ===
|
||||||
@@ -154,11 +155,11 @@ func main() {
|
|||||||
llmSelector.DefaultAdapter().SetCallLogger(func(c llm.CallRecord) {
|
llmSelector.DefaultAdapter().SetCallLogger(func(c llm.CallRecord) {
|
||||||
llmCallLogger.Record(c)
|
llmCallLogger.Record(c)
|
||||||
})
|
})
|
||||||
log.Printf("[llm] adapter ready (model=%s)", cfg.LLMModel)
|
logger.Infof("[llm] adapter ready (model=%s)", cfg.LLMModel)
|
||||||
|
|
||||||
// === 9. AI-Core: Context Store ===
|
// === 9. AI-Core: Context Store ===
|
||||||
ctxStore := aiCoreCtx.NewStore(4000, 50)
|
ctxStore := aiCoreCtx.NewStore(4000, 50)
|
||||||
log.Printf("[context] sliding window ready (4000 tokens, 50 turns)")
|
logger.Infof("[context] sliding window ready (4000 tokens, 50 turns)")
|
||||||
|
|
||||||
// === 10. AI-Core: Sub-session Manager ===
|
// === 10. AI-Core: Sub-session Manager ===
|
||||||
subMgr := subsession.NewManager(
|
subMgr := subsession.NewManager(
|
||||||
@@ -182,7 +183,7 @@ func main() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
log.Printf("[subsession] 4 providers ready")
|
logger.Infof("[subsession] 4 providers ready")
|
||||||
|
|
||||||
// === 11. AI-Core: Orchestrator ===
|
// === 11. AI-Core: Orchestrator ===
|
||||||
semanticCache := llm.NewSemanticCache()
|
semanticCache := llm.NewSemanticCache()
|
||||||
@@ -192,7 +193,7 @@ func main() {
|
|||||||
memExtractor := memory.NewExtractor(memSvc, &memory.LLMAdapterBridge{Adapter: memAdapter})
|
memExtractor := memory.NewExtractor(memSvc, &memory.LLMAdapterBridge{Adapter: memAdapter})
|
||||||
orch.SetMemoryExtractor(memExtractor)
|
orch.SetMemoryExtractor(memExtractor)
|
||||||
}
|
}
|
||||||
log.Printf("[orchestrator] pipeline ready")
|
logger.Infof("[orchestrator] pipeline ready")
|
||||||
|
|
||||||
// === 11.5 Platform Bridge ===
|
// === 11.5 Platform Bridge ===
|
||||||
bridgeCfgPath := "configs/bridge.json"
|
bridgeCfgPath := "configs/bridge.json"
|
||||||
@@ -209,7 +210,7 @@ func main() {
|
|||||||
loadAdaptersFromConfig(bridgeRouter, &bridge.BridgeConfig{Adapters: bridgeStore.GetAdapters()}, orch)
|
loadAdaptersFromConfig(bridgeRouter, &bridge.BridgeConfig{Adapters: bridgeStore.GetAdapters()}, orch)
|
||||||
bridgeRouter.StartAll()
|
bridgeRouter.StartAll()
|
||||||
|
|
||||||
log.Printf("[bridge] config store ready (path=%s, %d adapters)", bridgeCfgPath, bridgeStore.Count())
|
logger.Infof("[bridge] config store ready (path=%s, %d adapters)", bridgeCfgPath, bridgeStore.Count())
|
||||||
|
|
||||||
// === 12. Gateway ===
|
// === 12. Gateway ===
|
||||||
userStore := api.NewMemUserStore(cfg.AdminUsername, cfg.AdminPassword)
|
userStore := api.NewMemUserStore(cfg.AdminUsername, cfg.AdminPassword)
|
||||||
@@ -256,7 +257,7 @@ func main() {
|
|||||||
// === 13. Start ===
|
// === 13. Start ===
|
||||||
// Register restart handler — forks a new process and exits
|
// Register restart handler — forks a new process and exits
|
||||||
api.RestartFunc = func() {
|
api.RestartFunc = func() {
|
||||||
log.Printf("[gateway] restarting...")
|
logger.Infof("[gateway] restarting...")
|
||||||
reg.Shutdown()
|
reg.Shutdown()
|
||||||
srv.Close()
|
srv.Close()
|
||||||
// Re-exec self with same args and env
|
// Re-exec self with same args and env
|
||||||
@@ -266,17 +267,17 @@ func main() {
|
|||||||
Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
|
Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("[gateway] restart failed: %v", err)
|
logger.Fatalf("[gateway] restart failed: %v", err)
|
||||||
}
|
}
|
||||||
log.Printf("[gateway] new process PID=%d, exiting...", proc.Pid)
|
logger.Infof("[gateway] new process PID=%d, exiting...", proc.Pid)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
log.Printf("[gateway] listening on %s", addr)
|
logger.Infof("[gateway] listening on %s", addr)
|
||||||
log.Printf("[gateway] plugins=%d tools=%d", reg.Count(), len(reg.GetAllToolDefinitions()))
|
logger.Infof("[gateway] plugins=%d tools=%d", reg.Count(), len(reg.GetAllToolDefinitions()))
|
||||||
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||||
log.Fatalf("[gateway] %v", err)
|
logger.Fatalf("[gateway] %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -284,10 +285,10 @@ func main() {
|
|||||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||||
<-quit
|
<-quit
|
||||||
|
|
||||||
log.Println("[gateway] shutting down...")
|
logger.Info("[gateway] shutting down...")
|
||||||
reg.Shutdown()
|
reg.Shutdown()
|
||||||
srv.Close()
|
srv.Close()
|
||||||
log.Println("Cyrene v2 已安全退出")
|
logger.Info("Cyrene v2 已安全退出")
|
||||||
|
|
||||||
_ = voiceSvc
|
_ = voiceSvc
|
||||||
_ = memSvc
|
_ = memSvc
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ func Connect(cfg Config) (*sql.DB, error) {
|
|||||||
return nil, fmt.Errorf("ping db: %w", err)
|
return nil, fmt.Errorf("ping db: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[db] connected to %s:%d/%s (max_open=%d, max_idle=%d)",
|
logger.Infof("[db] connected to %s:%d/%s (max_open=%d, max_idle=%d)",
|
||||||
cfg.Host, cfg.Port, cfg.DBName, cfg.MaxOpenConns, cfg.MaxIdleConns)
|
cfg.Host, cfg.Port, cfg.DBName, cfg.MaxOpenConns, cfg.MaxIdleConns)
|
||||||
|
|
||||||
return db, nil
|
return db, nil
|
||||||
@@ -119,14 +119,14 @@ func Transaction(ctx context.Context, db *sql.DB, fn func(tx *sql.Tx) error) err
|
|||||||
|
|
||||||
// RunMigration executes a list of SQL migration statements in order.
|
// RunMigration executes a list of SQL migration statements in order.
|
||||||
func RunMigration(ctx context.Context, db *sql.DB, name string, statements []string) error {
|
func RunMigration(ctx context.Context, db *sql.DB, name string, statements []string) error {
|
||||||
log.Printf("[db] running migration: %s (%d statements)", name, len(statements))
|
logger.Infof("[db] running migration: %s (%d statements)", name, len(statements))
|
||||||
|
|
||||||
for i, stmt := range statements {
|
for i, stmt := range statements {
|
||||||
if _, err := db.ExecContext(ctx, stmt); err != nil {
|
if _, err := db.ExecContext(ctx, stmt); err != nil {
|
||||||
return fmt.Errorf("migration %s[%d]: %w", name, i, err)
|
return fmt.Errorf("migration %s[%d]: %w", name, i, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Printf("[db] migration %s completed", name)
|
logger.Infof("[db] migration %s completed", name)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package plugin
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ func (r *Registry) Register(p Plugin, cfg PluginConfig) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !p.Enabled() {
|
if !p.Enabled() {
|
||||||
log.Printf("[plugin] %s is disabled, skipping", p.Name())
|
logger.Infof("[plugin] %s is disabled, skipping", p.Name())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,18 +53,18 @@ func (r *Registry) Register(p Plugin, cfg PluginConfig) error {
|
|||||||
// Auto-detect provider interfaces
|
// Auto-detect provider interfaces
|
||||||
if iot, ok := p.(IoTProvider); ok {
|
if iot, ok := p.(IoTProvider); ok {
|
||||||
r.iotProviders = append(r.iotProviders, iot)
|
r.iotProviders = append(r.iotProviders, iot)
|
||||||
log.Printf("[plugin] registered IoT provider: %s v%s", p.Name(), p.Version())
|
logger.Infof("[plugin] registered IoT provider: %s v%s", p.Name(), p.Version())
|
||||||
}
|
}
|
||||||
if tool, ok := p.(ToolProvider); ok {
|
if tool, ok := p.(ToolProvider); ok {
|
||||||
r.toolProviders = append(r.toolProviders, tool)
|
r.toolProviders = append(r.toolProviders, tool)
|
||||||
log.Printf("[plugin] registered tool provider: %s v%s (%d tools)", p.Name(), p.Version(), len(tool.Tools()))
|
logger.Infof("[plugin] registered tool provider: %s v%s (%d tools)", p.Name(), p.Version(), len(tool.Tools()))
|
||||||
}
|
}
|
||||||
if rag, ok := p.(RAGProvider); ok {
|
if rag, ok := p.(RAGProvider); ok {
|
||||||
r.ragProviders = append(r.ragProviders, rag)
|
r.ragProviders = append(r.ragProviders, rag)
|
||||||
log.Printf("[plugin] registered RAG provider: %s v%s", p.Name(), p.Version())
|
logger.Infof("[plugin] registered RAG provider: %s v%s", p.Name(), p.Version())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[plugin] %s v%s loaded successfully", p.Name(), p.Version())
|
logger.Infof("[plugin] %s v%s loaded successfully", p.Name(), p.Version())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,27 +166,27 @@ func (r *Registry) Shutdown() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err := p.Close(); err != nil {
|
if err := p.Close(); err != nil {
|
||||||
log.Printf("[plugin] error closing %s: %v", p.Name(), err)
|
logger.Infof("[plugin] error closing %s: %v", p.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close IoT providers
|
// Close IoT providers
|
||||||
for _, p := range r.iotProviders {
|
for _, p := range r.iotProviders {
|
||||||
if err := p.Close(); err != nil {
|
if err := p.Close(); err != nil {
|
||||||
log.Printf("[plugin] error closing %s: %v", p.Name(), err)
|
logger.Infof("[plugin] error closing %s: %v", p.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Close tool providers
|
// Close tool providers
|
||||||
for _, p := range r.toolProviders {
|
for _, p := range r.toolProviders {
|
||||||
if err := p.Close(); err != nil {
|
if err := p.Close(); err != nil {
|
||||||
log.Printf("[plugin] error closing %s: %v", p.Name(), err)
|
logger.Infof("[plugin] error closing %s: %v", p.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Close RAG providers
|
// Close RAG providers
|
||||||
for _, p := range r.ragProviders {
|
for _, p := range r.ragProviders {
|
||||||
if err := p.Close(); err != nil {
|
if err := p.Close(); err != nil {
|
||||||
log.Printf("[plugin] error closing %s: %v", p.Name(), err)
|
logger.Infof("[plugin] error closing %s: %v", p.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Printf("[plugin] all plugins shut down")
|
logger.Infof("[plugin] all plugins shut down")
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@ package ws
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"log"
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ func (h *Hub) run() {
|
|||||||
h.clients[c] = true
|
h.clients[c] = true
|
||||||
n := len(h.clients)
|
n := len(h.clients)
|
||||||
h.mu.Unlock()
|
h.mu.Unlock()
|
||||||
log.Printf("[ws] client connected (total=%d)", n)
|
logger.Infof("[ws] client connected (total=%d)", n)
|
||||||
|
|
||||||
case c := <-h.unregister:
|
case c := <-h.unregister:
|
||||||
h.mu.Lock()
|
h.mu.Lock()
|
||||||
@@ -103,7 +103,7 @@ func (h *Hub) run() {
|
|||||||
func (h *Hub) HandleUpgrade(w http.ResponseWriter, r *http.Request) {
|
func (h *Hub) HandleUpgrade(w http.ResponseWriter, r *http.Request) {
|
||||||
conn, err := upgrader.Upgrade(w, r, nil)
|
conn, err := upgrader.Upgrade(w, r, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[ws] upgrade error: %v", err)
|
logger.Infof("[ws] upgrade error: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
// It defines unified message types and adapter interfaces for QQ, Telegram, Discord, and Webhook.
|
// It defines unified message types and adapter interfaces for QQ, Telegram, Discord, and Webhook.
|
||||||
package bridge
|
package bridge
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
|
)
|
||||||
|
|
||||||
// UnifiedMessage is the internal representation of a message from any platform.
|
// UnifiedMessage is the internal representation of a message from any platform.
|
||||||
type UnifiedMessage struct {
|
type UnifiedMessage struct {
|
||||||
@@ -85,7 +89,7 @@ func (r *Router) StartAll() {
|
|||||||
for name, a := range r.adapters {
|
for name, a := range r.adapters {
|
||||||
go func(name string, a Adapter) {
|
go func(name string, a Adapter) {
|
||||||
if err := a.Start(); err != nil {
|
if err := a.Start(); err != nil {
|
||||||
println("[bridge]", name, "start error:", err.Error())
|
logger.Info("[bridge]", name, "start error:", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for msg := range a.Incoming() {
|
for msg := range a.Incoming() {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package discord
|
package discord
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"git.yeij.top/AskaEth/Cyrene_v2/services/platform-bridge"
|
"git.yeij.top/AskaEth/Cyrene_v2/services/platform-bridge"
|
||||||
)
|
)
|
||||||
type Config struct{ Name, Token string }
|
type Config struct{ Name, Token string }
|
||||||
@@ -17,5 +17,5 @@ func (a *Adapter) Stop() error { close(a.done); return nil }
|
|||||||
func (a *Adapter) Incoming() <-chan *bridge.UnifiedMessage { return a.incoming }
|
func (a *Adapter) Incoming() <-chan *bridge.UnifiedMessage { return a.incoming }
|
||||||
func (a *Adapter) IsConnected() bool { return true }
|
func (a *Adapter) IsConnected() bool { return true }
|
||||||
func (a *Adapter) Send(target, content string, opts bridge.SendOptions) error {
|
func (a *Adapter) Send(target, content string, opts bridge.SendOptions) error {
|
||||||
fmt.Printf("[dc:%s] -> %s: %s\n", a.cfg.Name, target, content); return nil
|
logger.Infof("[dc:%s] -> %s: %s\n", a.cfg.Name, target, content); return nil
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package telegram
|
package telegram
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"git.yeij.top/AskaEth/Cyrene_v2/services/platform-bridge"
|
"git.yeij.top/AskaEth/Cyrene_v2/services/platform-bridge"
|
||||||
)
|
)
|
||||||
type Config struct{ Name, Token string }
|
type Config struct{ Name, Token string }
|
||||||
@@ -17,5 +17,5 @@ func (a *Adapter) Stop() error { close(a.done); return nil }
|
|||||||
func (a *Adapter) Incoming() <-chan *bridge.UnifiedMessage { return a.incoming }
|
func (a *Adapter) Incoming() <-chan *bridge.UnifiedMessage { return a.incoming }
|
||||||
func (a *Adapter) IsConnected() bool { return true }
|
func (a *Adapter) IsConnected() bool { return true }
|
||||||
func (a *Adapter) Send(target, content string, opts bridge.SendOptions) error {
|
func (a *Adapter) Send(target, content string, opts bridge.SendOptions) error {
|
||||||
fmt.Printf("[tg:%s] -> %s: %s\n", a.cfg.Name, target, content); return nil
|
logger.Infof("[tg:%s] -> %s: %s\n", a.cfg.Name, target, content); return nil
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package webhook
|
package webhook
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
"git.yeij.top/AskaEth/Cyrene_v2/services/platform-bridge"
|
"git.yeij.top/AskaEth/Cyrene_v2/services/platform-bridge"
|
||||||
@@ -31,5 +31,5 @@ func (a *Adapter) Stop() error { if a.server!=nil { a.server.Close() }; close(a.
|
|||||||
func (a *Adapter) Incoming() <-chan *bridge.UnifiedMessage { return a.incoming }
|
func (a *Adapter) Incoming() <-chan *bridge.UnifiedMessage { return a.incoming }
|
||||||
func (a *Adapter) IsConnected() bool { return true }
|
func (a *Adapter) IsConnected() bool { return true }
|
||||||
func (a *Adapter) Send(target, content string, opts bridge.SendOptions) error {
|
func (a *Adapter) Send(target, content string, opts bridge.SendOptions) error {
|
||||||
fmt.Printf("[webhook:%s] -> %s: %s\n", a.cfg.Name, target, content); return nil
|
logger.Infof("[webhook:%s] -> %s: %s\n", a.cfg.Name, target, content); return nil
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user