Feat: add disable log color flag

pull/44/head
zijiren233 2 years ago
parent b6ea5a52ca
commit 00ae5b93dc

@ -3,4 +3,5 @@ package flags
var ( var (
DisableUpdateCheck bool DisableUpdateCheck bool
DisableWeb bool DisableWeb bool
DisableLogColor bool
) )

@ -26,8 +26,8 @@ var ServerCmd = &cobra.Command{
boot := bootstrap.New(bootstrap.WithContext(cmd.Context())).Add( boot := bootstrap.New(bootstrap.WithContext(cmd.Context())).Add(
bootstrap.InitSysNotify, bootstrap.InitSysNotify,
bootstrap.InitConfig, bootstrap.InitConfig,
bootstrap.InitLog,
bootstrap.InitGinMode, bootstrap.InitGinMode,
bootstrap.InitLog,
bootstrap.InitDatabase, bootstrap.InitDatabase,
bootstrap.InitProvider, bootstrap.InitProvider,
bootstrap.InitOp, bootstrap.InitOp,
@ -161,4 +161,5 @@ func init() {
RootCmd.AddCommand(ServerCmd) RootCmd.AddCommand(ServerCmd)
ServerCmd.PersistentFlags().BoolVar(&flags.DisableUpdateCheck, "disable-update-check", false, "disable update check") ServerCmd.PersistentFlags().BoolVar(&flags.DisableUpdateCheck, "disable-update-check", false, "disable update check")
ServerCmd.PersistentFlags().BoolVar(&flags.DisableWeb, "disable-web", false, "disable web") ServerCmd.PersistentFlags().BoolVar(&flags.DisableWeb, "disable-web", false, "disable web")
ServerCmd.PersistentFlags().BoolVar(&flags.DisableLogColor, "disable-log-color", false, "disable log color")
} }

@ -145,7 +145,7 @@ func newDBLogger() logger.Interface {
LogLevel: logLevel, LogLevel: logLevel,
IgnoreRecordNotFoundError: true, IgnoreRecordNotFoundError: true,
ParameterizedQueries: !flags.Dev && version.Version != "dev", ParameterizedQueries: !flags.Dev && version.Version != "dev",
Colorful: true, Colorful: utils.ForceColor(),
}, },
) )
} }

@ -5,6 +5,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/synctv-org/synctv/cmd/flags" "github.com/synctv-org/synctv/cmd/flags"
"github.com/synctv-org/synctv/utils"
) )
func InitGinMode(ctx context.Context) error { func InitGinMode(ctx context.Context) error {
@ -13,7 +14,11 @@ func InitGinMode(ctx context.Context) error {
} else { } else {
gin.SetMode(gin.ReleaseMode) gin.SetMode(gin.ReleaseMode)
} }
gin.ForceConsoleColor() if utils.ForceColor() {
gin.ForceConsoleColor()
} else {
gin.DisableConsoleColor()
}
return nil return nil
} }

@ -26,6 +26,7 @@ func setLog(l *logrus.Logger) {
func InitLog(ctx context.Context) (err error) { func InitLog(ctx context.Context) (err error) {
setLog(logrus.StandardLogger()) setLog(logrus.StandardLogger())
forceColor := utils.ForceColor()
if conf.Conf.Log.Enable { if conf.Conf.Log.Enable {
conf.Conf.Log.FilePath, err = utils.OptFilePath(conf.Conf.Log.FilePath) conf.Conf.Log.FilePath, err = utils.OptFilePath(conf.Conf.Log.FilePath)
if err != nil { if err != nil {
@ -57,13 +58,10 @@ func InitLog(ctx context.Context) (err error) {
if conf.Conf.Log.LogFormat != "text" { if conf.Conf.Log.LogFormat != "text" {
logrus.Warnf("unknown log format: %s, use default: text", conf.Conf.Log.LogFormat) logrus.Warnf("unknown log format: %s, use default: text", conf.Conf.Log.LogFormat)
} }
if colorable.IsTerminal(os.Stdout.Fd()) { logrus.SetFormatter(&logrus.TextFormatter{
logrus.SetFormatter(&logrus.TextFormatter{ ForceColors: forceColor,
ForceColors: true, DisableColors: !forceColor,
}) })
} else {
logrus.SetFormatter(&logrus.TextFormatter{})
}
} }
log.SetOutput(logrus.StandardLogger().Writer()) log.SetOutput(logrus.StandardLogger().Writer())
return nil return nil

@ -16,6 +16,7 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
"github.com/synctv-org/synctv/cmd/flags" "github.com/synctv-org/synctv/cmd/flags"
"github.com/zijiren233/go-colorable"
"github.com/zijiren233/stream" "github.com/zijiren233/stream"
yamlcomment "github.com/zijiren233/yaml-comment" yamlcomment "github.com/zijiren233/yaml-comment"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
@ -342,3 +343,18 @@ func GetUrlExtension(u string) string {
} }
return strings.TrimLeft(filepath.Ext(p.Path), ".") return strings.TrimLeft(filepath.Ext(p.Path), ".")
} }
var needColor atomic.Pointer[bool]
func ForceColor() bool {
b := needColor.Load()
if b == nil {
forceColor := colorable.IsTerminal(os.Stdout.Fd())
if flags.DisableLogColor {
forceColor = false
}
needColor.Store(&forceColor)
return forceColor
}
return *b
}

Loading…
Cancel
Save