File tree Expand file tree Collapse file tree 3 files changed +98
-0
lines changed Expand file tree Collapse file tree 3 files changed +98
-0
lines changed Original file line number Diff line number Diff line change 88use Casbin \Model \Model ;
99use Casbin \Persist \Adapter ;
1010use EasySwoole \Permission \Adapters \DatabaseAdapter ;
11+ use Casbin \Log \Log ;
1112
1213/**
1314 * Class Casbin
@@ -119,6 +120,13 @@ public function __construct(?Config $config = null)
119120 $ this ->adapter = new DatabaseAdapter ();
120121 }
121122
123+ if ($ logger = $ this ->config ->getLoggerClass () ?? 'EasySwoole\Permission\Logger ' ) {
124+ if (class_exists ($ logger )) {
125+ $ logger = $ logger ::getInstance ();
126+ }
127+ Log::setLogger ($ logger );
128+ }
129+
122130 $ this ->model = new Model ();
123131
124132 if (Config::CONFIG_TYPE_FILE === $ config ->getModelConfigType ()) {
Original file line number Diff line number Diff line change @@ -37,6 +37,11 @@ class Config
3737 */
3838 protected $ log_enable = false ;
3939
40+ /**
41+ * @var string
42+ */
43+ protected $ logger_class = 'EasySwoole\Permission\Logger ' ;
44+
4045 /**
4146 * @return string
4247 */
@@ -116,4 +121,14 @@ public function setLogEnable(bool $log_enable): void
116121 {
117122 $ this ->log_enable = $ log_enable ;
118123 }
124+
125+ /**
126+ * Get the logger class
127+ *
128+ * @return string
129+ */
130+ public function getLoggerClass ()
131+ {
132+ return $ this ->logger_class ;
133+ }
119134}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace EasySwoole \Permission ;
4+
5+ use Casbin \Log \Logger as CasbinLogger ;
6+ use EasySwoole \Log \Logger as ESLogger ;
7+ use EasySwoole \Component \Singleton ;
8+
9+ class Logger extends ESLogger implements CasbinLogger
10+ {
11+ use Singleton;
12+
13+ /**
14+ * DefaultLogger is the implementation for a Logger using golang log.
15+ *
16+ * @var bool
17+ */
18+ public $ enable = false ;
19+
20+ /**
21+ * controls whether print the message.
22+ *
23+ * @param bool $enable
24+ */
25+ public function enableLog (bool $ enable ): void
26+ {
27+ $ this ->enable = $ enable ;
28+ }
29+
30+ /**
31+ * returns if logger is enabled.
32+ *
33+ * @return bool
34+ */
35+ public function isEnabled (): bool
36+ {
37+ return $ this ->enable ;
38+ }
39+
40+ /**
41+ * formats using the default formats for its operands and logs the message.
42+ *
43+ * @param mixed ...$v
44+ */
45+ public function write (...$ v ): void
46+ {
47+ if ($ this ->enable ) {
48+ $ content = '' ;
49+ foreach ($ v as $ value ) {
50+ if (\is_array ($ value )) {
51+ $ value = json_encode ($ value );
52+ } elseif (\is_object ($ value )) {
53+ $ value = json_encode ($ value );
54+ }
55+ $ content .= $ value ;
56+ }
57+ $ content .= PHP_EOL ;
58+ $ this ->log ($ content );
59+ }
60+ }
61+
62+ /**
63+ * formats according to a format specifier and logs the message.
64+ *
65+ * @param string $format
66+ * @param mixed ...$v
67+ */
68+ public function writef (string $ format , ...$ v ): void
69+ {
70+ $ content = '' ;
71+ $ content .= sprintf ($ format , ...$ v );
72+ $ content .= PHP_EOL ;
73+ $ this ->log ($ content );
74+ }
75+ }
You can’t perform that action at this time.
0 commit comments