access.go 915 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package log
  2. import (
  3. "fmt"
  4. "github.com/v2ray/v2ray-core/common/log/internal"
  5. )
  6. // AccessStatus is the status of an access request from clients.
  7. type AccessStatus string
  8. const (
  9. AccessAccepted = AccessStatus("accepted")
  10. AccessRejected = AccessStatus("rejected")
  11. )
  12. var (
  13. accessLoggerInstance internal.LogWriter = new(internal.NoOpLogWriter)
  14. )
  15. // InitAccessLogger initializes the access logger to write into the give file.
  16. func InitAccessLogger(file string) error {
  17. logger, err := internal.NewFileLogWriter(file)
  18. if err != nil {
  19. Error("Failed to create access logger on file (", file, "): ", file, err)
  20. return err
  21. }
  22. accessLoggerInstance = logger
  23. return nil
  24. }
  25. // Access writes an access log.
  26. func Access(from, to fmt.Stringer, status AccessStatus, reason fmt.Stringer) {
  27. accessLoggerInstance.Log(&internal.AccessLog{
  28. From: from,
  29. To: to,
  30. Status: string(status),
  31. Reason: reason,
  32. })
  33. }