package mycasbin import ( "IotAdmin/core/logger" "sync/atomic" ) // Logger Logger的实现. type CasbinLogger struct { enable int32 } // EnableLog 设置是否打印消息 func (l *CasbinLogger) EnableLog(enable bool) { i := 0 if enable { i = 1 } atomic.StoreInt32(&(l.enable), int32(i)) } // IsEnabled 记录器是否启用 func (l *CasbinLogger) IsEnabled() bool { return atomic.LoadInt32(&(l.enable)) != 0 } // LogModel 记录Model func (l *CasbinLogger) LogModel(model [][]string) { var str string for i := range model { for j := range model[i] { str += " " + model[i][j] } str += "\n" } logger.DefaultLogger.Log(logger.InfoLevel, str) } // LogEnforce 记录强制执行相关的日志信息 func (l *CasbinLogger) LogEnforce(matcher string, request []interface{}, result bool, explains [][]string) { logger.DefaultLogger.Fields(map[string]interface{}{ "matcher": matcher, "request": request, "result": result, "explains": explains, }).Log(logger.InfoLevel, nil) } // LogRole 记录角色相关的信息。 func (l *CasbinLogger) LogRole(roles []string) { logger.DefaultLogger.Fields(map[string]interface{}{ "roles": roles, }) } // LogPolicy 记录策略相关的日志信息。 func (l *CasbinLogger) LogPolicy(policy map[string][][]string) { data := make(map[string]interface{}, len(policy)) for k := range policy { data[k] = policy[k] } logger.DefaultLogger.Fields(data).Log(logger.InfoLevel, nil) } func (l *CasbinLogger) LogError(err error, msg ...string) { logger.DefaultLogger.Fields(map[string]interface{}{ "error": err.Error(), "msg": msg, }).Log(logger.ErrorLevel, nil) }