log.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package log
  2. import (
  3. "v2ray.com/core/common/errors"
  4. "v2ray.com/core/common/log/internal"
  5. )
  6. var (
  7. streamLoggerInstance internal.LogWriter = internal.NewStdOutLogWriter()
  8. debugLogger internal.LogWriter = streamLoggerInstance
  9. infoLogger internal.LogWriter = streamLoggerInstance
  10. warningLogger internal.LogWriter = streamLoggerInstance
  11. errorLogger internal.LogWriter = streamLoggerInstance
  12. )
  13. func SetLogLevel(level LogLevel) {
  14. debugLogger = new(internal.NoOpLogWriter)
  15. if level >= LogLevel_Debug {
  16. debugLogger = streamLoggerInstance
  17. }
  18. infoLogger = new(internal.NoOpLogWriter)
  19. if level >= LogLevel_Info {
  20. infoLogger = streamLoggerInstance
  21. }
  22. warningLogger = new(internal.NoOpLogWriter)
  23. if level >= LogLevel_Warning {
  24. warningLogger = streamLoggerInstance
  25. }
  26. errorLogger = new(internal.NoOpLogWriter)
  27. if level >= LogLevel_Error {
  28. errorLogger = streamLoggerInstance
  29. }
  30. }
  31. func InitErrorLogger(file string) error {
  32. logger, err := internal.NewFileLogWriter(file)
  33. if err != nil {
  34. return errors.Base(err).Message("Log: Failed to create error logger on file (", file, ")")
  35. }
  36. streamLoggerInstance = logger
  37. return nil
  38. }
  39. // Debug outputs a debug log with given format and optional arguments.
  40. func Debug(val ...interface{}) {
  41. debugLogger.Log(&internal.ErrorLog{
  42. Prefix: "[Debug]",
  43. Values: val,
  44. })
  45. }
  46. // Info outputs an info log with given format and optional arguments.
  47. func Info(val ...interface{}) {
  48. infoLogger.Log(&internal.ErrorLog{
  49. Prefix: "[Info]",
  50. Values: val,
  51. })
  52. }
  53. // Warning outputs a warning log with given format and optional arguments.
  54. func Warning(val ...interface{}) {
  55. warningLogger.Log(&internal.ErrorLog{
  56. Prefix: "[Warning]",
  57. Values: val,
  58. })
  59. }
  60. // Error outputs an error log with given format and optional arguments.
  61. func Error(val ...interface{}) {
  62. errorLogger.Log(&internal.ErrorLog{
  63. Prefix: "[Error]",
  64. Values: val,
  65. })
  66. }
  67. func Close() {
  68. streamLoggerInstance.Close()
  69. accessLoggerInstance.Close()
  70. }