log.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package mycasbin
  2. import (
  3. "IotAdmin/core/logger"
  4. "sync/atomic"
  5. )
  6. // Logger Logger的实现.
  7. type CasbinLogger struct {
  8. enable int32
  9. }
  10. // EnableLog 设置是否打印消息
  11. func (l *CasbinLogger) EnableLog(enable bool) {
  12. i := 0
  13. if enable {
  14. i = 1
  15. }
  16. atomic.StoreInt32(&(l.enable), int32(i))
  17. }
  18. // IsEnabled 记录器是否启用
  19. func (l *CasbinLogger) IsEnabled() bool {
  20. return atomic.LoadInt32(&(l.enable)) != 0
  21. }
  22. // LogModel 记录Model
  23. func (l *CasbinLogger) LogModel(model [][]string) {
  24. var str string
  25. for i := range model {
  26. for j := range model[i] {
  27. str += " " + model[i][j]
  28. }
  29. str += "\n"
  30. }
  31. logger.DefaultLogger.Log(logger.InfoLevel, str)
  32. }
  33. // LogEnforce 记录强制执行相关的日志信息
  34. func (l *CasbinLogger) LogEnforce(matcher string, request []interface{}, result bool, explains [][]string) {
  35. logger.DefaultLogger.Fields(map[string]interface{}{
  36. "matcher": matcher,
  37. "request": request,
  38. "result": result,
  39. "explains": explains,
  40. }).Log(logger.InfoLevel, nil)
  41. }
  42. // LogRole 记录角色相关的信息。
  43. func (l *CasbinLogger) LogRole(roles []string) {
  44. logger.DefaultLogger.Fields(map[string]interface{}{
  45. "roles": roles,
  46. })
  47. }
  48. // LogPolicy 记录策略相关的日志信息。
  49. func (l *CasbinLogger) LogPolicy(policy map[string][][]string) {
  50. data := make(map[string]interface{}, len(policy))
  51. for k := range policy {
  52. data[k] = policy[k]
  53. }
  54. logger.DefaultLogger.Fields(data).Log(logger.InfoLevel, nil)
  55. }
  56. func (l *CasbinLogger) LogError(err error, msg ...string) {
  57. logger.DefaultLogger.Fields(map[string]interface{}{
  58. "error": err.Error(),
  59. "msg": msg,
  60. }).Log(logger.ErrorLevel, nil)
  61. }