logs.go 896 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package web
  2. import (
  3. "io"
  4. "log"
  5. "net/http"
  6. "os"
  7. )
  8. // MemoryLogs 内存中的日志
  9. type MemoryLogs struct {
  10. MaxNum int // 保存最大条数
  11. Logs []string // 日志
  12. }
  13. func (mlogs *MemoryLogs) Write(p []byte) (n int, err error) {
  14. mlogs.Logs = append(mlogs.Logs, string(p))
  15. // 处理日志数量
  16. if len(mlogs.Logs) > mlogs.MaxNum {
  17. mlogs.Logs = mlogs.Logs[len(mlogs.Logs)-mlogs.MaxNum:]
  18. }
  19. return len(p), nil
  20. }
  21. var mlogs = &MemoryLogs{MaxNum: 50}
  22. // 初始化日志
  23. func init() {
  24. log.SetOutput(io.MultiWriter(mlogs, os.Stdout))
  25. // log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
  26. }
  27. // Logs web
  28. func Logs(writer http.ResponseWriter, request *http.Request) {
  29. for _, log := range mlogs.Logs {
  30. writer.Write([]byte(log))
  31. writer.Write([]byte("<br/>"))
  32. }
  33. }
  34. // ClearLog
  35. func ClearLog(writer http.ResponseWriter, request *http.Request) {
  36. mlogs.Logs = mlogs.Logs[:0]
  37. }