Replace standard log package with logrus

The standard "log" package was replaced by the structured logger "github.com/sirupsen/logrus" for better log control in various files. This change will allow to tailor the logging information more precisely and make logs easier to read and analyze. All calls of standard log methods were replaced by their logrus counterparts.
This commit is contained in:
Senis 2023-12-28 13:40:31 +08:00
parent 5ba0624bbc
commit 115d7bad6f
No known key found for this signature in database
16 changed files with 99 additions and 82 deletions

View File

@ -5,7 +5,6 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"reflect"
"regexp"
@ -14,6 +13,8 @@ import (
"sync"
"time"
log "github.com/sirupsen/logrus"
"github.com/go-resty/resty/v2"
"github.com/XrayR-project/XrayR/api"
@ -294,7 +295,7 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]User) (*[]api.User
c.access.Unlock()
}()
var deviceLimit, localDeviceLimit int = 0, 0
var deviceLimit, localDeviceLimit = 0, 0
var speedLimit uint64 = 0
var userList []api.UserInfo
for _, user := range *userInfoResponse {
@ -332,8 +333,8 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]User) (*[]api.User
UUID: user.UUID,
SpeedLimit: speedLimit,
DeviceLimit: deviceLimit,
Passwd: user.UUID,
Email: user.UUID + "@bunpanel.user",
Passwd: user.UUID,
Email: user.UUID + "@bunpanel.user",
})
}

View File

@ -5,7 +5,6 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"regexp"
"strconv"
@ -13,6 +12,8 @@ import (
"sync/atomic"
"time"
log "github.com/sirupsen/logrus"
"github.com/bitly/go-simplejson"
"github.com/go-resty/resty/v2"
"github.com/gogf/gf/v2/util/gconv"

View File

@ -5,7 +5,6 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"regexp"
"strconv"
@ -13,6 +12,8 @@ import (
"sync/atomic"
"time"
log "github.com/sirupsen/logrus"
"github.com/bitly/go-simplejson"
"github.com/go-resty/resty/v2"
"github.com/xtls/xray-core/common/net"
@ -57,7 +58,7 @@ func New(apiConfig *api.Config) *APIClient {
var nodeType string
if apiConfig.NodeType =="V2ray" && apiConfig.EnableVless {
if apiConfig.NodeType == "V2ray" && apiConfig.EnableVless {
nodeType = "vless"
} else {
nodeType = strings.ToLower(apiConfig.NodeType)
@ -363,12 +364,12 @@ func (c *APIClient) parseSSNodeResponse(s *serverConfig) (*api.NodeInfo, error)
// parseV2rayNodeResponse parse the response for the given nodeInfo format
func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, error) {
var (
host string
header json.RawMessage
enableTLS bool
host string
header json.RawMessage
enableTLS bool
enableREALITY bool
dest string
xVer uint64
dest string
xVer uint64
)
if s.VlessTlsSettings.Dest != "" {
@ -383,11 +384,11 @@ func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, erro
}
realityConfig := api.REALITYConfig{
Dest: dest + ":" + s.VlessTlsSettings.ServerPort,
Dest: dest + ":" + s.VlessTlsSettings.ServerPort,
ProxyProtocolVer: xVer,
ServerNames: []string{s.VlessTlsSettings.Sni},
PrivateKey: s.VlessTlsSettings.PrivateKey,
ShortIds: []string{s.VlessTlsSettings.ShortId},
ServerNames: []string{s.VlessTlsSettings.Sni},
PrivateKey: s.VlessTlsSettings.PrivateKey,
ShortIds: []string{s.VlessTlsSettings.ShortId},
}
if c.EnableVless {

View File

@ -4,13 +4,14 @@ import (
"bufio"
"encoding/json"
"fmt"
"log"
"os"
"reflect"
"regexp"
"strconv"
"time"
log "github.com/sirupsen/logrus"
"github.com/go-resty/resty/v2"
"github.com/XrayR-project/XrayR/api"

View File

@ -4,13 +4,14 @@ import (
"bufio"
"encoding/json"
"fmt"
"log"
"os"
"reflect"
"regexp"
"strconv"
"time"
log "github.com/sirupsen/logrus"
"github.com/go-resty/resty/v2"
"github.com/XrayR-project/XrayR/api"

View File

@ -5,7 +5,6 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"reflect"
"regexp"
@ -14,6 +13,8 @@ import (
"sync"
"time"
log "github.com/sirupsen/logrus"
"github.com/go-resty/resty/v2"
"github.com/XrayR-project/XrayR/api"
@ -687,7 +688,7 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]UserResponse) (*[]
c.access.Unlock()
}()
var deviceLimit, localDeviceLimit int = 0, 0
var deviceLimit, localDeviceLimit = 0, 0
var speedLimit uint64 = 0
var userList []api.UserInfo
for _, user := range *userInfoResponse {

View File

@ -5,7 +5,6 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"regexp"
"strconv"
@ -13,6 +12,8 @@ import (
"sync"
"time"
log "github.com/sirupsen/logrus"
"github.com/bitly/go-simplejson"
"github.com/go-resty/resty/v2"
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
@ -426,7 +427,7 @@ func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *simplejson.Json) (*
var header json.RawMessage
var enableTLS bool
var enableVless bool
var enableReality bool
var enableReality bool
var alterID uint16 = 0
tmpInboundInfo := nodeInfoResponse.Get("inbounds").MustArray()

View File

@ -2,7 +2,6 @@ package cmd
import (
"fmt"
"log"
"os"
"os/signal"
"path"
@ -11,6 +10,8 @@ import (
"syscall"
"time"
log "github.com/sirupsen/logrus"
"github.com/fsnotify/fsnotify"
"github.com/spf13/cobra"
"github.com/spf13/viper"

View File

@ -6,12 +6,13 @@ import (
"encoding/json"
"encoding/pem"
"errors"
"log"
"net/url"
"os"
"path/filepath"
"strings"
log "github.com/sirupsen/logrus"
"github.com/go-acme/lego/v4/certcrypto"
"github.com/go-acme/lego/v4/lego"
"github.com/go-acme/lego/v4/registration"

View File

@ -4,11 +4,12 @@ import (
"bytes"
"crypto/x509"
"encoding/json"
"log"
"os"
"path/filepath"
"strings"
log "github.com/sirupsen/logrus"
"github.com/go-acme/lego/v4/certcrypto"
"github.com/go-acme/lego/v4/certificate"
"golang.org/x/net/idna"

View File

@ -3,9 +3,10 @@ package mylego
import (
"crypto"
"crypto/x509"
"log"
"time"
log "github.com/sirupsen/logrus"
"github.com/go-acme/lego/v4/certcrypto"
"github.com/go-acme/lego/v4/certificate"
"github.com/go-acme/lego/v4/lego"

View File

@ -2,11 +2,11 @@ package mylego
import (
"fmt"
"log"
"github.com/go-acme/lego/v4/certificate"
"github.com/go-acme/lego/v4/lego"
"github.com/go-acme/lego/v4/registration"
log "github.com/sirupsen/logrus"
)
const rootPathWarningMessage = `!!!! HEADS UP !!!!

View File

@ -1,10 +1,11 @@
package mylego
import (
"log"
"os"
"time"
log "github.com/sirupsen/logrus"
"github.com/go-acme/lego/v4/certcrypto"
"github.com/go-acme/lego/v4/challenge/dns01"
"github.com/go-acme/lego/v4/challenge/http01"

View File

@ -1,7 +1,7 @@
package main
import (
"log"
log "github.com/sirupsen/logrus"
"github.com/XrayR-project/XrayR/cmd"
)

View File

@ -2,17 +2,12 @@ package panel
import (
"encoding/json"
"log"
"os"
"sync"
"github.com/XrayR-project/XrayR/api/bunpanel"
"github.com/XrayR-project/XrayR/api/gov2panel"
"github.com/XrayR-project/XrayR/api/newV2board"
"github.com/XrayR-project/XrayR/app/mydispatcher"
"dario.cat/mergo"
"github.com/r3labs/diff/v2"
log "github.com/sirupsen/logrus"
"github.com/xtls/xray-core/app/proxyman"
"github.com/xtls/xray-core/app/stats"
"github.com/xtls/xray-core/common/serial"
@ -20,10 +15,14 @@ import (
"github.com/xtls/xray-core/infra/conf"
"github.com/XrayR-project/XrayR/api"
"github.com/XrayR-project/XrayR/api/bunpanel"
"github.com/XrayR-project/XrayR/api/gov2panel"
"github.com/XrayR-project/XrayR/api/newV2board"
"github.com/XrayR-project/XrayR/api/pmpanel"
"github.com/XrayR-project/XrayR/api/proxypanel"
"github.com/XrayR-project/XrayR/api/sspanel"
"github.com/XrayR-project/XrayR/api/v2raysocks"
"github.com/XrayR-project/XrayR/app/mydispatcher"
_ "github.com/XrayR-project/XrayR/cmd/distro/all"
"github.com/XrayR-project/XrayR/service"
"github.com/XrayR-project/XrayR/service/controller"
@ -155,7 +154,6 @@ func (p *Panel) loadCore(panelConfig *Config) *core.Instance {
if err != nil {
log.Panicf("failed to create instance: %s", err)
}
log.Printf("Xray Core Version: %s", core.Version())
return server
}

View File

@ -3,10 +3,10 @@ package controller
import (
"errors"
"fmt"
"log"
"reflect"
"time"
log "github.com/sirupsen/logrus"
"github.com/xtls/xray-core/common/protocol"
"github.com/xtls/xray-core/common/task"
"github.com/xtls/xray-core/core"
@ -44,6 +44,7 @@ type Controller struct {
stm stats.Manager
dispatcher *mydispatcher.DefaultDispatcher
startAt time.Time
logger *log.Entry
}
type periodicTask struct {
@ -53,6 +54,11 @@ type periodicTask struct {
// New return a Controller service with default parameters.
func New(server *core.Instance, api api.API, config *Config, panelType string) *Controller {
logger := log.NewEntry(log.StandardLogger()).WithFields(log.Fields{
"Host": api.Describe().APIHost,
"Type": api.Describe().NodeType,
"ID": api.Describe().NodeID,
})
controller := &Controller{
server: server,
config: config,
@ -63,6 +69,7 @@ func New(server *core.Instance, api api.API, config *Config, panelType string) *
stm: server.GetFeature(stats.ManagerType()).(stats.Manager),
dispatcher: server.GetFeature(routing.DispatcherType()).(*mydispatcher.DefaultDispatcher),
startAt: time.Now(),
logger: logger,
}
return controller
@ -85,7 +92,7 @@ func (c *Controller) Start() error {
// Add new tag
err = c.addNewTag(newNodeInfo)
if err != nil {
log.Panic(err)
c.logger.Panic(err)
return err
}
// Update user
@ -104,16 +111,16 @@ func (c *Controller) Start() error {
// Add Limiter
if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, userInfo, c.config.GlobalDeviceLimitConfig); err != nil {
log.Print(err)
c.logger.Print(err)
}
// Add Rule Manager
if !c.config.DisableGetRule {
if ruleList, err := c.apiClient.GetNodeRule(); err != nil {
log.Printf("Get rule list filed: %s", err)
c.logger.Printf("Get rule list filed: %s", err)
} else if len(*ruleList) > 0 {
if err := c.UpdateRule(c.Tag, *ruleList); err != nil {
log.Print(err)
c.logger.Print(err)
}
}
}
@ -155,7 +162,7 @@ func (c *Controller) Start() error {
// Start periodic tasks
for i := range c.tasks {
log.Printf("%s Start %s periodic task", c.logPrefix(), c.tasks[i].tag)
c.logger.Printf("Start %s periodic task", c.tasks[i].tag)
go c.tasks[i].Start()
}
@ -167,7 +174,7 @@ func (c *Controller) Close() error {
for i := range c.tasks {
if c.tasks[i].Periodic != nil {
if err := c.tasks[i].Periodic.Close(); err != nil {
log.Panicf("%s %s periodic task close failed: %s", c.logPrefix(), c.tasks[i].tag, err)
c.logger.Panicf("%s periodic task close failed: %s", c.tasks[i].tag, err)
}
}
}
@ -189,7 +196,7 @@ func (c *Controller) nodeInfoMonitor() (err error) {
nodeInfoChanged = false
newNodeInfo = c.nodeInfo
} else {
log.Print(err)
c.logger.Print(err)
return nil
}
}
@ -205,7 +212,7 @@ func (c *Controller) nodeInfoMonitor() (err error) {
usersChanged = false
newUserInfo = c.userList
} else {
log.Print(err)
c.logger.Print(err)
return nil
}
}
@ -217,14 +224,14 @@ func (c *Controller) nodeInfoMonitor() (err error) {
oldTag := c.Tag
err := c.removeOldTag(oldTag)
if err != nil {
log.Print(err)
c.logger.Print(err)
return nil
}
if c.nodeInfo.NodeType == "Shadowsocks-Plugin" {
err = c.removeOldTag(fmt.Sprintf("dokodemo-door_%s+1", c.Tag))
}
if err != nil {
log.Print(err)
c.logger.Print(err)
return nil
}
// Add new tag
@ -232,13 +239,13 @@ func (c *Controller) nodeInfoMonitor() (err error) {
c.Tag = c.buildNodeTag()
err = c.addNewTag(newNodeInfo)
if err != nil {
log.Print(err)
c.logger.Print(err)
return nil
}
nodeInfoChanged = true
// Remove Old limiter
if err = c.DeleteInboundLimiter(oldTag); err != nil {
log.Print(err)
c.logger.Print(err)
return nil
}
} else {
@ -250,11 +257,11 @@ func (c *Controller) nodeInfoMonitor() (err error) {
if !c.config.DisableGetRule {
if ruleList, err := c.apiClient.GetNodeRule(); err != nil {
if err.Error() != api.RuleNotModified {
log.Printf("Get rule list filed: %s", err)
c.logger.Printf("Get rule list filed: %s", err)
}
} else if len(*ruleList) > 0 {
if err := c.UpdateRule(c.Tag, *ruleList); err != nil {
log.Print(err)
c.logger.Print(err)
}
}
}
@ -262,13 +269,13 @@ func (c *Controller) nodeInfoMonitor() (err error) {
if nodeInfoChanged {
err = c.addNewUser(newUserInfo, newNodeInfo)
if err != nil {
log.Print(err)
c.logger.Print(err)
return nil
}
// Add Limiter
if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, newUserInfo, c.config.GlobalDeviceLimitConfig); err != nil {
log.Print(err)
c.logger.Print(err)
return nil
}
@ -283,21 +290,21 @@ func (c *Controller) nodeInfoMonitor() (err error) {
}
err := c.removeUsers(deletedEmail, c.Tag)
if err != nil {
log.Print(err)
c.logger.Print(err)
}
}
if len(added) > 0 {
err = c.addNewUser(&added, c.nodeInfo)
if err != nil {
log.Print(err)
c.logger.Print(err)
}
// Update Limiter
if err := c.UpdateInboundLimiter(c.Tag, &added); err != nil {
log.Print(err)
c.logger.Print(err)
}
}
}
log.Printf("%s %d user deleted, %d user added", c.logPrefix(), len(deleted), len(added))
c.logger.Printf("%d user deleted, %d user added", len(deleted), len(added))
}
c.userList = newUserInfo
return nil
@ -418,7 +425,7 @@ func (c *Controller) addNewUser(userInfo *[]api.UserInfo, nodeInfo *api.NodeInfo
if err != nil {
return err
}
log.Printf("%s Added %d new users", c.logPrefix(), len(*userInfo))
c.logger.Printf("Added %d new users", len(*userInfo))
return nil
}
@ -466,7 +473,7 @@ func limitUser(c *Controller, user api.UserInfo, silentUsers *[]api.UserInfo) {
currentSpeedLimit: c.config.AutoSpeedLimitConfig.LimitSpeed,
originSpeedLimit: user.SpeedLimit,
}
log.Printf("Limit User: %s Speed: %d End: %s", c.buildUserTag(&user), c.config.AutoSpeedLimitConfig.LimitSpeed, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05"))
c.logger.Printf("Limit User: %s Speed: %d End: %s", c.buildUserTag(&user), c.config.AutoSpeedLimitConfig.LimitSpeed, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05"))
user.SpeedLimit = uint64((c.config.AutoSpeedLimitConfig.LimitSpeed * 1000000) / 8)
*silentUsers = append(*silentUsers, user)
}
@ -480,7 +487,7 @@ func (c *Controller) userInfoMonitor() (err error) {
// Get server status
CPU, Mem, Disk, Uptime, err := serverstatus.GetSystemInfo()
if err != nil {
log.Print(err)
c.logger.Print(err)
}
err = c.apiClient.ReportNodeStatus(
&api.NodeStatus{
@ -490,25 +497,25 @@ func (c *Controller) userInfoMonitor() (err error) {
Uptime: Uptime,
})
if err != nil {
log.Print(err)
c.logger.Print(err)
}
// Unlock users
if c.config.AutoSpeedLimitConfig.Limit > 0 && len(c.limitedUsers) > 0 {
log.Printf("%s Limited users:", c.logPrefix())
c.logger.Printf("Limited users:")
toReleaseUsers := make([]api.UserInfo, 0)
for user, limitInfo := range c.limitedUsers {
if time.Now().Unix() > limitInfo.end {
user.SpeedLimit = limitInfo.originSpeedLimit
toReleaseUsers = append(toReleaseUsers, user)
log.Printf("User: %s Speed: %d End: nil (Unlimit)", c.buildUserTag(&user), user.SpeedLimit)
c.logger.Printf("User: %s Speed: %d End: nil (Unlimit)", c.buildUserTag(&user), user.SpeedLimit)
delete(c.limitedUsers, user)
} else {
log.Printf("User: %s Speed: %d End: %s", c.buildUserTag(&user), limitInfo.currentSpeedLimit, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05"))
c.logger.Printf("User: %s Speed: %d End: %s", c.buildUserTag(&user), limitInfo.currentSpeedLimit, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05"))
}
}
if len(toReleaseUsers) > 0 {
if err := c.UpdateInboundLimiter(c.Tag, &toReleaseUsers); err != nil {
log.Print(err)
c.logger.Print(err)
}
}
}
@ -559,7 +566,7 @@ func (c *Controller) userInfoMonitor() (err error) {
}
if len(limitedUsers) > 0 {
if err := c.UpdateInboundLimiter(c.Tag, &limitedUsers); err != nil {
log.Print(err)
c.logger.Print(err)
}
}
if len(userTraffic) > 0 {
@ -569,7 +576,7 @@ func (c *Controller) userInfoMonitor() (err error) {
}
// If report traffic error, not clear the traffic
if err != nil {
log.Print(err)
c.logger.Print(err)
} else {
c.resetTraffic(&upCounterList, &downCounterList)
}
@ -577,23 +584,23 @@ func (c *Controller) userInfoMonitor() (err error) {
// Report Online info
if onlineDevice, err := c.GetOnlineDevice(c.Tag); err != nil {
log.Print(err)
c.logger.Print(err)
} else if len(*onlineDevice) > 0 {
if err = c.apiClient.ReportNodeOnlineUsers(onlineDevice); err != nil {
log.Print(err)
c.logger.Print(err)
} else {
log.Printf("%s Report %d online users", c.logPrefix(), len(*onlineDevice))
c.logger.Printf("Report %d online users", len(*onlineDevice))
}
}
// Report Illegal user
if detectResult, err := c.GetDetectResult(c.Tag); err != nil {
log.Print(err)
c.logger.Print(err)
} else if len(*detectResult) > 0 {
if err = c.apiClient.ReportIllegal(detectResult); err != nil {
log.Print(err)
c.logger.Print(err)
} else {
log.Printf("%s Report %d illegal behaviors", c.logPrefix(), len(*detectResult))
c.logger.Printf("Report %d illegal behaviors", len(*detectResult))
}
}
@ -604,9 +611,9 @@ func (c *Controller) buildNodeTag() string {
return fmt.Sprintf("%s_%s_%d", c.nodeInfo.NodeType, c.config.ListenIP, c.nodeInfo.Port)
}
func (c *Controller) logPrefix() string {
return fmt.Sprintf("[%s] %s(ID=%d)", c.clientInfo.APIHost, c.nodeInfo.NodeType, c.nodeInfo.NodeID)
}
// func (c *Controller) logPrefix() string {
// return fmt.Sprintf("[%s] %s(ID=%d)", c.clientInfo.APIHost, c.nodeInfo.NodeType, c.nodeInfo.NodeID)
// }
// Check Cert
func (c *Controller) certMonitor() error {
@ -615,12 +622,12 @@ func (c *Controller) certMonitor() error {
case "dns", "http", "tls":
lego, err := mylego.New(c.config.CertConfig)
if err != nil {
log.Print(err)
c.logger.Print(err)
}
// Xray-core supports the OcspStapling certification hot renew
_, _, _, err = lego.RenewCert()
if err != nil {
log.Print(err)
c.logger.Print(err)
}
}
}