Просмотр исходного кода

Merge pull request #1816 from visuddhinanda/agile

grpc 根据命令行参数输出不同级别log
visuddhinanda 2 лет назад
Родитель
Сommit
b0a7bd6d81

+ 1 - 1
dashboard/src/components/fts/FtsBookList.tsx

@@ -111,7 +111,7 @@ const FtsBookListWidget = ({
         setTreeData([
           {
             key: "all",
-            title: "all " + totalResult + "个单词",
+            title: "all " + totalResult + "个结果",
             children: json.data.rows.map((item, id) => {
               const title = item.title ? item.title : item.paliTitle;
               return {

+ 7 - 9
rpc/tulip/tulip/log.php

@@ -1,21 +1,19 @@
 <?php
 require_once __DIR__ . '/vendor/autoload.php';
+require_once dirname(__FILE__) . '/config.php';
 
 use Monolog\Logger;
 use Monolog\Handler\StreamHandler;
 
 function myLog()
 {
-    $dir = __DIR__ . '/tmp/logs';
-    if (!is_dir($dir)) {
-        $res = mkdir($dir, 0700, true);
-        if (!$res) {
-            echo "error: mkdir fail path=" . $dir;
-            return 0;
-        }
-    }
 
     $log = new Logger('tulip');
-    $log->pushHandler(new StreamHandler($dir . '/tulip-' . date("Y-m-d") . '.log'));
+    if(isset($GLOBALS['debug']) && $GLOBALS['debug']===true){
+        $level = Logger::DEBUG;
+    }else{
+        $level = Logger::INFO;
+    }
+    $log->pushHandler(new StreamHandler('php://stdout', $level));
     return $log;
 }

+ 3 - 5
rpc/tulip/tulip/pdo.php

@@ -19,7 +19,7 @@ class PdoHelper
         $db .= ";user=" . Config['database']['user'];
         $db .= ";password=" . Config['database']['password'] . ";";
 
-        echo 'connect to db host=' . Config['database']['host'] . ' name=' . Config['database']['name'] . PHP_EOL;
+        myLog()->debug('connect to db host=' . Config['database']['host'] . ' name=' . Config['database']['name']);
         try {
             $PDO = new PDO(
                 $db,
@@ -27,11 +27,9 @@ class PdoHelper
                 Config['database']['password'],
                 array(PDO::ATTR_PERSISTENT => true)
             );
-            myLog()->info('connect to db success');
+            myLog()->debug('connect to db success');
         } catch (PDOException $e) {
-            echo 'connect to db fail' . PHP_EOL;
-            print $e->getMessage();
-            myLog()->error('connect to db fail');
+            myLog()->error('connect to db fail',['message'=>$e->getMessage()]);
             return false;
         }
         $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

+ 51 - 37
rpc/tulip/tulip/server.php

@@ -19,15 +19,18 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         foreach ($request->getKeywords()->getIterator() as $word) {
             $keyWords[] = $word;
         }
-        $msg = "[" . date("Y/m/d h:i:sa") . "] pali search: request words = " . implode(',', $keyWords);
-        console('debug', $msg);
-        myLog()->info($msg);
 
-        $pdo = new PdoHelper;
-        $pdo->connectDb();
-        /**
-         * 查询业务逻辑
-         */
+        if ($request->hasPage()) {
+            $limit = $request->getPage()->getSize();
+            $offset = $request->getPage()->getIndex();
+        } else {
+            $limit = 10;
+            $offset = 0;
+        }
+
+        $matchMode = $request->getMatchMode();
+
+
 
         $bookId = [];
         if ($request->getBooks()->count() > 0) {
@@ -38,12 +41,20 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         } else {
             $queryBookId = '';
         }
-        $msg = 'query books = ' . implode(',', $bookId);
-        console('debug', $msg);
-        myLog()->info($msg);
 
-        $matchMode = $request->getMatchMode();
-        console('debug', 'query mode = ' . $matchMode);
+        myLog()->info('request',[
+            'keyWords'=>$keyWords,
+            'limit'=>$limit,
+            'offset'=>$offset,
+            'mode'=>$matchMode,
+            'books'=>implode(',', $bookId),
+        ]);
+        
+        $pdo = new PdoHelper;
+        $pdo->connectDb();
+        /**
+         * 查询业务逻辑
+         */
         $param = [];
         switch ($matchMode) {
             case 'complete':
@@ -95,6 +106,9 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         $querySelect_2 = "  book,paragraph,content ";
 
         $queryCount = "SELECT count(*) as co FROM fts_texts WHERE {$queryWhere} {$queryBookId};";
+
+        myLog()->debug('pali queryCount',['sql'=>$queryCount,'param'=>$_queryWhere['param']]);
+
         $resultCount = $pdo->dbSelect($queryCount, $_queryWhere['param']);
         if (
             is_array($resultCount) &&
@@ -103,21 +117,12 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         ) {
             $total = $resultCount[0]['co'];
         } else {
-            console('error', 'result must be of type array' . $pdo->errorInfo());
             myLog()->error('result must be of type array' . $pdo->errorInfo());
             $total = 0;
         }
-        console('debug', "total={$total}");
-        myLog()->info("total={$total}");
 
-        if ($request->hasPage()) {
-            $limit = $request->getPage()->getSize();
-            $offset = $request->getPage()->getIndex();
-        } else {
-            $limit = 10;
-            $offset = 0;
-        }
-        console('debug', "size={$limit} index={$offset}");
+        myLog()->info("pali result total={$total}");
+
         $_orderBy = 'rank';
         switch ($_orderBy) {
             case 'rank':
@@ -150,6 +155,7 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         $output = $response->getItems();
 
         if ($result !== false) {
+            myLog()->debug('query result count='.count($result));
             foreach ($result as $row) {
                 $item = new \Mint\Tulip\V1\SearchResponse\Item;
                 $item->setRank($row['rank']);
@@ -160,10 +166,9 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
                 $output[] = $item;
             }
         } else {
-            console('error', "result is false");
+            myLog()->error("result is false");
         }
 
-
         $response->setTotal($total);
         $page = new \Mint\Tulip\V1\SearchRequest\Page;
         $page->setIndex($offset);
@@ -186,13 +191,15 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         foreach ($request->getKeywords()->getIterator() as $word) {
             $keyWords[] = $word;
         }
-        console('debug', "book list: request words = " . implode(',', $keyWords));
+        
         /**
          * 查询业务逻辑
          */
         $pdo = new PdoHelper;
         $pdo->connectDb();
 
+        myLog()->debug('db connected');
+
         $bookId = [];
         if ($request->getBooks()->count() > 0) {
             foreach ($request->getBooks()->getIterator() as $book) {
@@ -202,12 +209,16 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
         } else {
             $queryBookId = '';
         }
-        console('debug', 'query books = ' . implode(',', $bookId));
+        myLog()->info("book list: request ",[
+            'words'=>implode(',', $keyWords),
+            'books'=>implode(',', $bookId),
+            ] );
 
         $matchMode = $request->getMatchMode();
-        console('debug', 'query mode = ' . $matchMode);
+        myLog()->debug('query mode = ' . $matchMode);
         $queryWhere = $this->makeQueryWhere($keyWords, $matchMode);
         $query = "SELECT pcd_book_id, count(*) as co FROM fts_texts WHERE {$queryWhere['query']} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
+        myLog()->debug('book list queryCount',['sql'=>$query,'param'=>$queryWhere['param']]);
         $result = $pdo->dbSelect($query, $queryWhere['param']);
         //返回数据
         $response = new \Mint\Tulip\V1\BookListResponse();
@@ -220,8 +231,7 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
                 $output[] = $item;
             }
         }
-
-        console('debug', "total=" . count($output));
+        myLog()->debug("book list total=" . count($output));
         return $response;
     }
 
@@ -264,15 +274,19 @@ class Greeter extends \Mint\Tulip\V1\SearchStub
     }
 }
 
-$port = Config['port'];
+$param = getopt('d::');
+if(isset($param['d'])){
+    echo 'debug mode'.PHP_EOL;
+    $GLOBALS['debug'] = true;
+}
 
-if (!isset($port)) {
-    console('debug', 'parameter port is required. ');
+if (!isset(Config['port'])) {
+    myLog()->error('parameter port is required.');
     return;
 }
+
 $server = new \Grpc\RpcServer();
-$server->addHttp2Port('0.0.0.0:' . $port);
+$server->addHttp2Port('0.0.0.0:' . Config['port']);
 $server->handle(new Greeter());
-console('debug', 'Listening on port :' . $port);
-myLog()->debug('Listening on port :' . $port);
+myLog()->info('Listening on port :' . Config['port']);
 $server->run();