log.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package log
  2. import (
  3. "strings"
  4. "github.com/v2fly/v2ray-core/v4/app/log"
  5. clog "github.com/v2fly/v2ray-core/v4/common/log"
  6. )
  7. func DefaultLogConfig() *log.Config {
  8. return &log.Config{
  9. Access: &log.LogSpecification{Type: log.LogType_None},
  10. Error: &log.LogSpecification{Type: log.LogType_Console, Level: clog.Severity_Warning},
  11. }
  12. }
  13. type LogConfig struct {
  14. AccessLog string `json:"access"`
  15. ErrorLog string `json:"error"`
  16. LogLevel string `json:"loglevel"`
  17. }
  18. func (v *LogConfig) Build() *log.Config {
  19. if v == nil {
  20. return nil
  21. }
  22. config := &log.Config{
  23. Access: &log.LogSpecification{Type: log.LogType_Console},
  24. Error: &log.LogSpecification{Type: log.LogType_Console},
  25. }
  26. if v.AccessLog == "none" {
  27. config.Access.Type = log.LogType_None
  28. } else if len(v.AccessLog) > 0 {
  29. config.Access.Path = v.AccessLog
  30. config.Access.Type = log.LogType_File
  31. }
  32. if v.ErrorLog == "none" {
  33. config.Error.Type = log.LogType_None
  34. } else if len(v.ErrorLog) > 0 {
  35. config.Error.Path = v.ErrorLog
  36. config.Error.Type = log.LogType_File
  37. }
  38. level := strings.ToLower(v.LogLevel)
  39. switch level {
  40. case "debug":
  41. config.Error.Level = clog.Severity_Debug
  42. case "info":
  43. config.Error.Level = clog.Severity_Info
  44. case "error":
  45. config.Error.Level = clog.Severity_Error
  46. case "none":
  47. config.Error.Type = log.LogType_None
  48. config.Error.Type = log.LogType_None
  49. default:
  50. config.Error.Level = clog.Severity_Warning
  51. }
  52. return config
  53. }