improve: log fields
This commit is contained in:
@@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
"github.com/Mmx233/BackoffCli/backoff"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -10,7 +11,7 @@ var BackoffConfig backoff.Conf
|
||||
func initBackoff() {
|
||||
setting := Settings.Backoff
|
||||
BackoffConfig = backoff.Conf{
|
||||
Logger: Logger,
|
||||
Logger: Logger.WithField(keys.LogComponent, "backoff"),
|
||||
DisableRecovery: true,
|
||||
InitialDuration: time.Duration(setting.InitialDuration) * time.Second,
|
||||
MaxDuration: time.Duration(setting.MaxDuration) * time.Second,
|
||||
|
||||
@@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
||||
"github.com/Mmx233/tool"
|
||||
log "github.com/sirupsen/logrus"
|
||||
@@ -24,33 +25,34 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
logger := log.New().WithField(keys.LogComponent, "init")
|
||||
reader := newReaderFromPath(flags.Path)
|
||||
|
||||
// 生成配置文件
|
||||
exist, err := tool.File.Exists(flags.Path)
|
||||
if err != nil {
|
||||
log.Fatalln("[init] 读取配置文件失败:", err)
|
||||
logger.Fatalln("读取配置文件失败:", err)
|
||||
} else if !exist {
|
||||
var data []byte
|
||||
data, err = reader.Marshal(&defaultConfig)
|
||||
if err != nil {
|
||||
log.Fatalln("[init] 生成配置文件失败:", err)
|
||||
logger.Fatalln("生成配置文件失败:", err)
|
||||
}
|
||||
if err = os.WriteFile(flags.Path, data, 0600); err != nil {
|
||||
log.Fatalln("[init] 写入配置文件失败:", err)
|
||||
logger.Fatalln("写入配置文件失败:", err)
|
||||
}
|
||||
log.Infoln("[init] 已生成配置文件,请编辑 '" + flags.Path + "' 然后重试")
|
||||
logger.Infoln("已生成配置文件,请编辑 '" + flags.Path + "' 然后重试")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
// 读取配置文件
|
||||
data, err := os.ReadFile(flags.Path)
|
||||
if err != nil {
|
||||
log.Fatalln("[init] 读取配置失败:", err)
|
||||
logger.Fatalln("读取配置失败:", err)
|
||||
}
|
||||
var fileConf ConfFromFile
|
||||
if err = reader.Unmarshal(data, &fileConf); err != nil {
|
||||
log.Fatalln("[init] 解析配置失败:", err)
|
||||
logger.Fatalln("解析配置失败:", err)
|
||||
}
|
||||
Form = &fileConf.Form
|
||||
Meta = &fileConf.Meta
|
||||
|
||||
6
internal/config/keys/log.go
Normal file
6
internal/config/keys/log.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package keys
|
||||
|
||||
const (
|
||||
LogComponent = "comp"
|
||||
LogLoginModule = "mod"
|
||||
)
|
||||
@@ -45,7 +45,6 @@ func initLog() {
|
||||
|
||||
//设置输出格式
|
||||
Logger.SetFormatter(&nested.Formatter{
|
||||
HideKeys: true,
|
||||
NoColors: Settings.Log.WriteFile,
|
||||
TimestampFormat: "2006-01-02 15:04:05",
|
||||
})
|
||||
|
||||
@@ -2,19 +2,19 @@ package controllers
|
||||
|
||||
import (
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Guardian 守护模式逻辑
|
||||
func Guardian() {
|
||||
logger := config.Logger
|
||||
|
||||
logger.Infoln("[守护模式]")
|
||||
|
||||
func Guardian(logger log.FieldLogger) {
|
||||
GuardianDuration := time.Duration(config.Settings.Guardian.Duration) * time.Second
|
||||
|
||||
for {
|
||||
_ = Login()
|
||||
_ = Login(LoginConf{
|
||||
Logger: logger.WithField(keys.LogComponent, "login"),
|
||||
IsOnlineDetectLogDebugLevel: true,
|
||||
})
|
||||
time.Sleep(GuardianDuration)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,10 +6,12 @@ import (
|
||||
"github.com/Mmx233/BackoffCli/backoff"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/dns"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/http_client"
|
||||
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -18,10 +20,18 @@ import (
|
||||
var ipLast string
|
||||
var debugTip sync.Once
|
||||
|
||||
func Login() error {
|
||||
logger := config.Logger
|
||||
type LoginConf struct {
|
||||
Logger log.FieldLogger
|
||||
IsOnlineDetectLogDebugLevel bool
|
||||
}
|
||||
|
||||
func Login(conf LoginConf) error {
|
||||
logger := conf.Logger
|
||||
if config.Settings.Basic.Interfaces == "" { //单网卡
|
||||
err := LoginSingle(nil, true)
|
||||
err := LoginSingle(LoginSingleConf{
|
||||
LoginConf: conf,
|
||||
Eth: nil,
|
||||
})
|
||||
if err != nil {
|
||||
logger.Errorln("登录出错: ", err)
|
||||
debugTip.Do(func() {
|
||||
@@ -32,13 +42,13 @@ func Login() error {
|
||||
}
|
||||
return err
|
||||
} else { //多网卡
|
||||
return LoginInterfaces()
|
||||
return LoginInterfaces(conf)
|
||||
}
|
||||
}
|
||||
|
||||
func ddns(ip string, httpClient *http.Client) error {
|
||||
func ddns(logger log.FieldLogger, ip string, httpClient *http.Client) error {
|
||||
return dns.Run(&dns.Config{
|
||||
Logger: config.Logger,
|
||||
Logger: logger.WithField(keys.LogLoginModule, "ddns"),
|
||||
Provider: config.Settings.DDNS.Provider,
|
||||
IP: ip,
|
||||
Domain: config.Settings.DDNS.Domain,
|
||||
@@ -48,8 +58,8 @@ func ddns(ip string, httpClient *http.Client) error {
|
||||
})
|
||||
}
|
||||
|
||||
func LoginInterfaces() error {
|
||||
logger := config.Logger
|
||||
func LoginInterfaces(conf LoginConf) error {
|
||||
logger := conf.Logger
|
||||
interfaces, err := tools.GetInterfaceAddr(logger, config.Settings.Basic.Interfaces)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -58,8 +68,11 @@ func LoginInterfaces() error {
|
||||
var errCount int
|
||||
for i, eth := range interfaces {
|
||||
logger.Infoln("使用网卡: ", eth.Name)
|
||||
if err := LoginSingle(ð, false); err != nil {
|
||||
config.Logger.Errorf("网卡 %s 登录出错: %v", eth.Name, err)
|
||||
if err := LoginSingle(LoginSingleConf{
|
||||
LoginConf: conf,
|
||||
Eth: ð,
|
||||
}); err != nil {
|
||||
logger.Errorf("网卡 %s 登录出错: %v", eth.Name, err)
|
||||
errCount++
|
||||
}
|
||||
if i != len(interfaces)-1 {
|
||||
@@ -72,21 +85,26 @@ func LoginInterfaces() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func LoginSingle(eth *tools.Eth, debugOutput bool) error {
|
||||
type LoginSingleConf struct {
|
||||
LoginConf
|
||||
Eth *tools.Eth
|
||||
}
|
||||
|
||||
func LoginSingle(conf LoginSingleConf) error {
|
||||
if config.Settings.Backoff.Enable {
|
||||
return backoff.NewInstance(func(ctx context.Context) error {
|
||||
return doLogin(eth, debugOutput)
|
||||
return doLogin(conf)
|
||||
}, config.BackoffConfig).Run(context.TODO())
|
||||
} else {
|
||||
return doLogin(eth, debugOutput)
|
||||
return doLogin(conf)
|
||||
}
|
||||
}
|
||||
|
||||
func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
logger := config.Logger
|
||||
func doLogin(conf LoginSingleConf) error {
|
||||
logger := conf.Logger
|
||||
|
||||
// 登录配置初始化
|
||||
httpClient := http_client.HttpPackSelect(eth).Client
|
||||
httpClient := http_client.HttpPackSelect(conf.Eth).Client
|
||||
srunClient := srun.New(&srun.Conf{
|
||||
Logger: logger,
|
||||
Https: config.Settings.Basic.Https,
|
||||
@@ -103,6 +121,8 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
// Reality 与 Acid
|
||||
var acidOnReality bool
|
||||
if config.Settings.Reality.Enable {
|
||||
logger := logger.WithField(keys.LogLoginModule, "reality")
|
||||
|
||||
logger.Debugln("开始 Reality 流程")
|
||||
acid, _, err := srunDetector.Reality(config.Settings.Reality.Addr, flags.AutoAcid)
|
||||
if err != nil {
|
||||
@@ -114,13 +134,15 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
}
|
||||
}
|
||||
if !acidOnReality && flags.AutoAcid {
|
||||
logger.Debugln("开始嗅探 acid")
|
||||
logger := logger.WithField(keys.LogLoginModule, "acid")
|
||||
|
||||
logger.Debugln("开始嗅探")
|
||||
acid, err := srunDetector.DetectAcid()
|
||||
if err != nil {
|
||||
if errors.Is(err, srun.ErrAcidCannotFound) {
|
||||
logger.Warnln("找不到 acid,使用配置 acid")
|
||||
} else {
|
||||
logger.Warnf("嗅探 acid 失败,使用配置 acid: %v", err)
|
||||
logger.Warnf("嗅探失败,使用配置 acid: %v", err)
|
||||
}
|
||||
} else {
|
||||
logger.Debugf("使用嗅探 acid: %s", acid)
|
||||
@@ -129,13 +151,15 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
}
|
||||
|
||||
if flags.AutoEnc {
|
||||
logger.Debugln("开始嗅探 enc")
|
||||
logger := logger.WithField(keys.LogLoginModule, "enc")
|
||||
|
||||
logger.Debugln("开始嗅探")
|
||||
enc, err := srunDetector.DetectEnc()
|
||||
if err != nil {
|
||||
if errors.Is(err, srun.ErrEnvCannotFound) {
|
||||
logger.Warnln("找不到 enc,使用配置 enc")
|
||||
} else {
|
||||
logger.Warnf("嗅探 enc 失败,使用配置 enc: %v", err)
|
||||
logger.Warnf("嗅探失败,使用配置 enc: %v", err)
|
||||
}
|
||||
} else {
|
||||
logger.Debugf("使用嗅探 enc: %s", enc)
|
||||
@@ -144,14 +168,14 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
}
|
||||
|
||||
// 选择输出函数
|
||||
var output func(args ...interface{})
|
||||
if debugOutput {
|
||||
output = logger.Debugln
|
||||
var _Println func(args ...interface{})
|
||||
if conf.IsOnlineDetectLogDebugLevel {
|
||||
_Println = logger.Debugln
|
||||
} else {
|
||||
output = logger.Infoln
|
||||
_Println = logger.Infoln
|
||||
}
|
||||
|
||||
output("正在获取登录状态")
|
||||
_Println("正在获取登录状态")
|
||||
|
||||
online, ip, err := srunClient.LoginStatus()
|
||||
if err != nil {
|
||||
@@ -170,10 +194,10 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
// 登录执行
|
||||
|
||||
if online {
|
||||
output("已登录~")
|
||||
_Println("已登录~")
|
||||
|
||||
if config.Settings.DDNS.Enable && config.Settings.Guardian.Enable && ipLast != ip {
|
||||
if ddns(ip, httpClient) == nil {
|
||||
if ddns(logger, ip, httpClient) == nil {
|
||||
ipLast = ip
|
||||
}
|
||||
}
|
||||
@@ -189,7 +213,7 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
||||
logger.Infoln("登录成功~")
|
||||
|
||||
if config.Settings.DDNS.Enable {
|
||||
_ = ddns(ip, httpClient)
|
||||
_ = ddns(logger, ip, httpClient)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,5 +17,5 @@ type Config struct {
|
||||
TTL uint
|
||||
Conf config.DdnsProviderConfigSum
|
||||
Http *http.Client
|
||||
Logger *log.Logger
|
||||
Logger log.FieldLogger
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package http_client
|
||||
import (
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||
"net"
|
||||
"net/http"
|
||||
@@ -17,7 +18,7 @@ var HttpPack *Http
|
||||
var httpTools map[string]*Http
|
||||
|
||||
func init() {
|
||||
logger := config.Logger
|
||||
logger := config.Logger.WithField(keys.LogComponent, "init http")
|
||||
if config.Settings.Basic.Interfaces == "" {
|
||||
var eth *tools.Eth
|
||||
if flags.Interface != "" {
|
||||
|
||||
Reference in New Issue
Block a user