add logger component
This commit is contained in:
parent
b41aea03da
commit
ed29b34c68
@ -1,10 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
|
|
||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
"github.com/go-gost/core/service"
|
"github.com/go-gost/core/service"
|
||||||
"github.com/go-gost/x/api"
|
"github.com/go-gost/x/api"
|
||||||
@ -17,15 +13,14 @@ import (
|
|||||||
hosts_parser "github.com/go-gost/x/config/parsing/hosts"
|
hosts_parser "github.com/go-gost/x/config/parsing/hosts"
|
||||||
ingress_parser "github.com/go-gost/x/config/parsing/ingress"
|
ingress_parser "github.com/go-gost/x/config/parsing/ingress"
|
||||||
limiter_parser "github.com/go-gost/x/config/parsing/limiter"
|
limiter_parser "github.com/go-gost/x/config/parsing/limiter"
|
||||||
|
logger_parser "github.com/go-gost/x/config/parsing/logger"
|
||||||
recorder_parser "github.com/go-gost/x/config/parsing/recorder"
|
recorder_parser "github.com/go-gost/x/config/parsing/recorder"
|
||||||
resolver_parser "github.com/go-gost/x/config/parsing/resolver"
|
resolver_parser "github.com/go-gost/x/config/parsing/resolver"
|
||||||
router_parser "github.com/go-gost/x/config/parsing/router"
|
router_parser "github.com/go-gost/x/config/parsing/router"
|
||||||
sd_parser "github.com/go-gost/x/config/parsing/sd"
|
sd_parser "github.com/go-gost/x/config/parsing/sd"
|
||||||
service_parser "github.com/go-gost/x/config/parsing/service"
|
service_parser "github.com/go-gost/x/config/parsing/service"
|
||||||
xlogger "github.com/go-gost/x/logger"
|
|
||||||
metrics "github.com/go-gost/x/metrics/service"
|
metrics "github.com/go-gost/x/metrics/service"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"gopkg.in/natefinch/lumberjack.v2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func buildService(cfg *config.Config) (services []service.Service) {
|
func buildService(cfg *config.Config) (services []service.Service) {
|
||||||
@ -35,6 +30,14 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
|||||||
|
|
||||||
log := logger.Default()
|
log := logger.Default()
|
||||||
|
|
||||||
|
for _, loggerCfg := range cfg.Loggers {
|
||||||
|
if lg := logger_parser.ParseLogger(loggerCfg); lg != nil {
|
||||||
|
if err := registry.LoggerRegistry().Register(loggerCfg.Name, lg); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, autherCfg := range cfg.Authers {
|
for _, autherCfg := range cfg.Authers {
|
||||||
if auther := auth_parser.ParseAuther(autherCfg); auther != nil {
|
if auther := auth_parser.ParseAuther(autherCfg); auther != nil {
|
||||||
if err := registry.AutherRegistry().Register(autherCfg.Name, auther); err != nil {
|
if err := registry.AutherRegistry().Register(autherCfg.Name, auther); err != nil {
|
||||||
@ -171,48 +174,6 @@ func buildService(cfg *config.Config) (services []service.Service) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func logFromConfig(cfg *config.LogConfig) logger.Logger {
|
|
||||||
if cfg == nil {
|
|
||||||
cfg = &config.LogConfig{}
|
|
||||||
}
|
|
||||||
opts := []xlogger.LoggerOption{
|
|
||||||
xlogger.FormatLoggerOption(logger.LogFormat(cfg.Format)),
|
|
||||||
xlogger.LevelLoggerOption(logger.LogLevel(cfg.Level)),
|
|
||||||
}
|
|
||||||
|
|
||||||
var out io.Writer = os.Stderr
|
|
||||||
switch cfg.Output {
|
|
||||||
case "none", "null":
|
|
||||||
return xlogger.Nop()
|
|
||||||
case "stdout":
|
|
||||||
out = os.Stdout
|
|
||||||
case "stderr", "":
|
|
||||||
out = os.Stderr
|
|
||||||
default:
|
|
||||||
if cfg.Rotation != nil {
|
|
||||||
out = &lumberjack.Logger{
|
|
||||||
Filename: cfg.Output,
|
|
||||||
MaxSize: cfg.Rotation.MaxSize,
|
|
||||||
MaxAge: cfg.Rotation.MaxAge,
|
|
||||||
MaxBackups: cfg.Rotation.MaxBackups,
|
|
||||||
LocalTime: cfg.Rotation.LocalTime,
|
|
||||||
Compress: cfg.Rotation.Compress,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
os.MkdirAll(filepath.Dir(cfg.Output), 0755)
|
|
||||||
f, err := os.OpenFile(cfg.Output, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
|
||||||
if err != nil {
|
|
||||||
logger.Default().Warn(err)
|
|
||||||
} else {
|
|
||||||
out = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
opts = append(opts, xlogger.OutputLoggerOption(out))
|
|
||||||
|
|
||||||
return xlogger.NewLogger(opts...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func buildAPIService(cfg *config.APIConfig) (service.Service, error) {
|
func buildAPIService(cfg *config.APIConfig) (service.Service, error) {
|
||||||
auther := auth_parser.ParseAutherFromAuth(cfg.Auth)
|
auther := auth_parser.ParseAutherFromAuth(cfg.Auth)
|
||||||
if cfg.Auther != "" {
|
if cfg.Auther != "" {
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
"github.com/go-gost/x/config"
|
"github.com/go-gost/x/config"
|
||||||
"github.com/go-gost/x/config/parsing"
|
"github.com/go-gost/x/config/parsing"
|
||||||
|
logger_parser "github.com/go-gost/x/config/parsing/logger"
|
||||||
xmetrics "github.com/go-gost/x/metrics"
|
xmetrics "github.com/go-gost/x/metrics"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/judwhite/go-svc"
|
"github.com/judwhite/go-svc"
|
||||||
@ -73,7 +74,11 @@ func (p *program) Init(env svc.Environment) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.SetDefault(logFromConfig(cfg.Log))
|
logCfg := cfg.Log
|
||||||
|
if logCfg == nil {
|
||||||
|
logCfg = &config.LogConfig{}
|
||||||
|
}
|
||||||
|
logger.SetDefault(logger_parser.ParseLogger(&config.LoggerConfig{Log: logCfg}))
|
||||||
|
|
||||||
if outputFormat != "" {
|
if outputFormat != "" {
|
||||||
if err := cfg.Write(os.Stdout, outputFormat); err != nil {
|
if err := cfg.Write(os.Stdout, outputFormat); err != nil {
|
||||||
@ -171,6 +176,7 @@ func (p *program) mergeConfig(cfg1, cfg2 *config.Config) *config.Config {
|
|||||||
Limiters: append(cfg1.Limiters, cfg2.Limiters...),
|
Limiters: append(cfg1.Limiters, cfg2.Limiters...),
|
||||||
CLimiters: append(cfg1.CLimiters, cfg2.CLimiters...),
|
CLimiters: append(cfg1.CLimiters, cfg2.CLimiters...),
|
||||||
RLimiters: append(cfg1.RLimiters, cfg2.RLimiters...),
|
RLimiters: append(cfg1.RLimiters, cfg2.RLimiters...),
|
||||||
|
Loggers: append(cfg1.Loggers, cfg2.Loggers...),
|
||||||
TLS: cfg1.TLS,
|
TLS: cfg1.TLS,
|
||||||
Log: cfg1.Log,
|
Log: cfg1.Log,
|
||||||
API: cfg1.API,
|
API: cfg1.API,
|
||||||
|
4
go.mod
4
go.mod
@ -6,7 +6,7 @@ replace github.com/templexxx/cpu v0.0.7 => github.com/templexxx/cpu v0.0.10-0.20
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/go-gost/core v0.0.0-20231119081403-abc73f2ca2b7
|
github.com/go-gost/core v0.0.0-20231119081403-abc73f2ca2b7
|
||||||
github.com/go-gost/x v0.0.0-20231119081612-44064e4dd142
|
github.com/go-gost/x v0.0.0-20231119115548-c87faa20174d
|
||||||
github.com/judwhite/go-svc v1.2.1
|
github.com/judwhite/go-svc v1.2.1
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
||||||
)
|
)
|
||||||
@ -28,7 +28,7 @@ require (
|
|||||||
github.com/gin-gonic/gin v1.9.1 // indirect
|
github.com/gin-gonic/gin v1.9.1 // indirect
|
||||||
github.com/go-gost/gosocks4 v0.0.1 // indirect
|
github.com/go-gost/gosocks4 v0.0.1 // indirect
|
||||||
github.com/go-gost/gosocks5 v0.4.0 // indirect
|
github.com/go-gost/gosocks5 v0.4.0 // indirect
|
||||||
github.com/go-gost/plugin v0.0.0-20231119081435-96a9cabbf6b6 // indirect
|
github.com/go-gost/plugin v0.0.0-20231119084331-d49a1cb23b3b // indirect
|
||||||
github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7 // indirect
|
github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7 // indirect
|
||||||
github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 // indirect
|
github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 // indirect
|
||||||
github.com/go-playground/locales v0.14.1 // indirect
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
|
3
go.sum
3
go.sum
@ -102,12 +102,15 @@ github.com/go-gost/gosocks5 v0.4.0 h1:EIrOEkpJez4gwHrMa33frA+hHXJyevjp47thpMQsJz
|
|||||||
github.com/go-gost/gosocks5 v0.4.0/go.mod h1:1G6I7HP7VFVxveGkoK8mnprnJqSqJjdcASKsdUn4Pp4=
|
github.com/go-gost/gosocks5 v0.4.0/go.mod h1:1G6I7HP7VFVxveGkoK8mnprnJqSqJjdcASKsdUn4Pp4=
|
||||||
github.com/go-gost/plugin v0.0.0-20231119081435-96a9cabbf6b6 h1:nkeo0TCEZVz74eZlVBDM6xiqDjS3DGWFRBOJ6kiDudU=
|
github.com/go-gost/plugin v0.0.0-20231119081435-96a9cabbf6b6 h1:nkeo0TCEZVz74eZlVBDM6xiqDjS3DGWFRBOJ6kiDudU=
|
||||||
github.com/go-gost/plugin v0.0.0-20231119081435-96a9cabbf6b6/go.mod h1:qXr2Zm9Ex2ATqnWuNUzVZqySPMnuIihvblYZt4MlZLw=
|
github.com/go-gost/plugin v0.0.0-20231119081435-96a9cabbf6b6/go.mod h1:qXr2Zm9Ex2ATqnWuNUzVZqySPMnuIihvblYZt4MlZLw=
|
||||||
|
github.com/go-gost/plugin v0.0.0-20231119084331-d49a1cb23b3b/go.mod h1:qXr2Zm9Ex2ATqnWuNUzVZqySPMnuIihvblYZt4MlZLw=
|
||||||
github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7 h1:qAG1OyjvdA5h221CfFSS3J359V3d2E7dJWyP29QoDSI=
|
github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7 h1:qAG1OyjvdA5h221CfFSS3J359V3d2E7dJWyP29QoDSI=
|
||||||
github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8=
|
github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8=
|
||||||
github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 h1:xj8gUZGYO3nb5+6Bjw9+tsFkA9sYynrOvDvvC4uDV2I=
|
github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 h1:xj8gUZGYO3nb5+6Bjw9+tsFkA9sYynrOvDvvC4uDV2I=
|
||||||
github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs=
|
github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs=
|
||||||
github.com/go-gost/x v0.0.0-20231119081612-44064e4dd142 h1:AcfPO32QUPkBXG53tWmY96pc1I0eMVs/2A0Z3BhG/2s=
|
github.com/go-gost/x v0.0.0-20231119081612-44064e4dd142 h1:AcfPO32QUPkBXG53tWmY96pc1I0eMVs/2A0Z3BhG/2s=
|
||||||
github.com/go-gost/x v0.0.0-20231119081612-44064e4dd142/go.mod h1:nKHCiUUdeB4dBKwqsPWtKVTUkicbjVh56/L47ieJrxg=
|
github.com/go-gost/x v0.0.0-20231119081612-44064e4dd142/go.mod h1:nKHCiUUdeB4dBKwqsPWtKVTUkicbjVh56/L47ieJrxg=
|
||||||
|
github.com/go-gost/x v0.0.0-20231119115548-c87faa20174d h1:dkYojb+aCEy48Of0BGOHhlSME8I4+bPsjp2CgNcZBvQ=
|
||||||
|
github.com/go-gost/x v0.0.0-20231119115548-c87faa20174d/go.mod h1:TBJYF2Hs0B4qwdtR1hu+oXXJOln/XpSx/JhFyLYCB3M=
|
||||||
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
|
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
|
||||||
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||||
|
Loading…
Reference in New Issue
Block a user