humanemulator.net — справка. Продукт, демо и покупка — на хуманэмулятор.рф | Демо | Купить | API | Changelog

getLogsByLevelsFromSQLite

getLogsByLevelsFromSQLite($levelCodes,$startDateStr='',$endDateStr='',$offset=0,$pageSize=100); - Get log entries by multiple levels with period and pagination

Функция на вход принимает параметры:

  • $levelCodes – Comma-separated list of log level codes [0..5]
  • $startDateStr – Start date period (format: dd.MM.yyyy)
  • $endDateStr – End date period (format: dd.MM.yyyy)
  • $offset – Number of records to skip (for pagination)
  • $pageSize – Number of records per page

    После выполнения функции возвращаемое значение будет равно одному из двух :
  • результат – Array of log entries in JSON format
  • пусто / null – ошибка

    Пример использования
    <?php
    // Test: getLogsByLevelsFromSQLite method
    
    $xhe_host = getenv("RPABOT_HOST_URL");
    if (!isset($path)){
      $path = "../../../Templates/init.php";
      require($path);
    }
    
    echo "\n<span >logger->" . basename(__FILE__) . "</span>\n";
    
    $dbPath = __DIR__ . "/logs/test_getlogsbylevels.db";
    echo "\n";
    echo "Initializing logger with SQLite DB...\n";
    echo "Initializing logger with parameters:\n";
    $minLogLevel = LogLevel::TRACE;
    echo "- Min Log Level: TRACE (value: $minLogLevel)\n";
    $phpUseThroughShell = true;
    echo "- PHP Use Through Shell: " . ($phpUseThroughShell ? "true" : "false") . "\n";
    $writeLogToLogPanel = false;
    echo "- Write Log To Log Panel: " . ($writeLogToLogPanel ? "true" : "false") . "\n";
    $logFilePath = "";
    echo "- Log File Path: ''\n";
    $logSQLiteDbFilePath = $dbPath;
    echo "- Log SQLite DB Path: '$logSQLiteDbFilePath'\n";
    echo "- Date Time Format: d-M-yyyy HH:mm:ss (default)\n";
    echo "- Localization Code: en (default)\n";
    echo "- Need Text Transliteration: false (default)\n";
    SYSTEM::$logger->init($minLogLevel, $phpUseThroughShell, $writeLogToLogPanel, $logFilePath, $logSQLiteDbFilePath);
    echo "Logger initialized with SQLite DB: $dbPath\n";
    
    echo "\n\n";
    echo "Test: getLogsByLevelsFromSQLite method:\n";
    
    $testData = (object) ['test_key' => 'test_value'];
    
    SYSTEM::$logger->trace("This is a trace message", $testData, 'levels_test');
    SYSTEM::$logger->debug("This is a debug message", $testData, 'levels_test');
    SYSTEM::$logger->info("This is an info message", $testData, 'levels_test');
    SYSTEM::$logger->warn("This is a warning message", $testData, 'levels_test');
    SYSTEM::$logger->error("This is an error message", $testData, 'levels_test');
    SYSTEM::$logger->critical("This is a critical message", $testData, 'levels_test');
    
    sleep(1);
    
    $traceDebugInfoLogs = SYSTEM::$logger->getLogsByLevelsFromSQLite("0,1,2");
    $traceDebugInfoLogsCount = ($traceDebugInfoLogs !== null) ? count($traceDebugInfoLogs) : 0;
    echo "Test #1. TRACE, DEBUG, INFO levels logs: $traceDebugInfoLogsCount (expected: 3) " . ($traceDebugInfoLogsCount >= 3 ? "✓" : "✗") . "\n";
    
    $warnErrorCriticalLogs = SYSTEM::$logger->getLogsByLevelsFromSQLite("3,4,5");
    $warnErrorCriticalLogsCount = ($warnErrorCriticalLogs !== null) ? count($warnErrorCriticalLogs) : 0;
    echo "Test #2. WARNING, ERROR, CRITICAL levels logs: $warnErrorCriticalLogsCount (expected: 3) " . ($warnErrorCriticalLogsCount >= 3 ? "✓" : "✗") . "\n";
    
    $allLevelsLogs = SYSTEM::$logger->getLogsByLevelsFromSQLite("0,1,2,3,4,5");
    $allLevelsLogsCount = ($allLevelsLogs !== null) ? count($allLevelsLogs) : 0;
    echo "Test #3. All levels logs: $allLevelsLogsCount (expected: 6) " . ($allLevelsLogsCount >= 6 ? "✓" : "✗") . "\n";
    
    $errorOnlyLogs = SYSTEM::$logger->getLogsByLevelsFromSQLite("4");
    $errorOnlyLogsCount = ($errorOnlyLogs !== null) ? count($errorOnlyLogs) : 0;
    echo "Test #4. ERROR level only logs: $errorOnlyLogsCount (expected: 1) " . ($errorOnlyLogsCount >= 1 ? "✓" : "✗") . "\n";
    
    $traceDebugLogs = SYSTEM::$logger->getLogsByLevelsFromSQLite("0,1");
    $traceDebugLogsCount = ($traceDebugLogs !== null) ? count($traceDebugLogs) : 0;
    echo "Test #5. TRACE, DEBUG levels logs: $traceDebugLogsCount (expected: 2) " . ($traceDebugLogsCount >= 2 ? "✓" : "✗") . "\n";
    
    $emptyLevelsLogs = SYSTEM::$logger->getLogsByLevelsFromSQLite("");
    $emptyLevelsLogsCount = ($emptyLevelsLogs !== null) ? count($emptyLevelsLogs) : 0;
    echo "Test #6. Empty levels logs: $emptyLevelsLogsCount (expected: 0) " . ($emptyLevelsLogsCount === 0 ? "✓" : "✗") . "\n";
    
    echo "\n✓ Test completed successfully!\n";
    echo "\n";
    WINDOW::$app->quit();
    # Additional paths
    import sys
    sys.path.insert(0, '../../../Templates PY/')
    
    xhe_host = "127.0.0.1:7019"
    from xweb_human_emulator import *
    
    # start
    echo("<hr><font color=blue>logger.getLogsByLevelsFromSQLite</font><hr>")
    
    echo("Initializing logger using SQLite for log storage: ")
    if logger.init(logSQLiteDbFilePath=debug.get_cur_script_folder() + "/logs/logger.db"):
    	echo("вњ“ Success\n\n")
    else:
    	echo("вњ— Failed\n\n")
    
    # 1
    echo("1. Getting logs for info and warning levels (levels='2,3'): ")
    logs = logger.getLogsByLevelsFromSQLite("2,3")
    if logs:
    	echo("вњ“ Success: found entries - " + str(len(logs)) + "\n\n")
    else:
    	echo("вњ— Failed\n\n")
    
    # 2
    echo("2. Getting logs for error and critical levels (levels='4,5') with pagination: ")
    logs = logger.getLogsByLevelsFromSQLite("4,5", offset=0, pageSize=10)
    if logs:
    	echo("вњ“ Success: retrieved entries - " + str(len(logs)) + "\n\n")
    else:
    	echo("вњ— Failed\n\n")
    
    # 3
    echo("3. Getting logs for all levels (levels='0,1,2,3,4,5'): ")
    logs = logger.getLogsByLevelsFromSQLite("0,1,2,3,4,5", offset=0, pageSize=20)
    if logs:
    	echo("вњ“ Success: found entries - " + str(len(logs)) + "\n\n")
    else:
    	echo("вњ— Failed\n\n")
    
    # end
    echo("\n")
    
    app.quit()
    #region using
    
    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;
    using System.Text;
    using System.Threading;
    
    using XHE;
    using XHE.XHE_DOM;
    using XHE.XHE_System;
    using XHE.XHE_Window;
    using XHE.XHE_Web;
    
    #endregion
    
    class Program:XHEScript
    {
    	static void Main(string[] args)
    	{
    		server = Environment.GetEnvironmentVariable("RPABOT_HOST_URL");
    		InitXHE();
    
    		echo("<hr><font color=blue>logger.getLogsByLevelsFromSQLite</font><hr>");
    
    		echo("0. Initialize logger: ");
    		bool initResult = logger.init(0, true, true, "", "test\\logger_test.db");
    		if(initResult)
    			echo("вњ“ Init successful<br>");
    		else
    			echo("вњ— Init failed<br>");
    
    		// 1 step
    		echo("\n1. Get logs for levels 0,1,2 (trace, debug, info): ");
    		object logs1 = logger.getLogsByLevelsFromSQLite("0,1,2");
    		if(logs1 != null)
    			echo("вњ“ Retrieved logs for levels 0,1,2<br>");
    		else
    			echo("вњ— Failed to retrieve logs for levels 0,1,2<br>");
    
    		// 2 step
    		echo("\n2. Get error and critical logs (levels 4,5): ");
    		object logs2 = logger.getLogsByLevelsFromSQLite("4,5");
    		if(logs2 != null)
    			echo("вњ“ Retrieved error and critical logs<br>");
    		else
    			echo("вњ— Failed to retrieve error and critical logs<br>");
    
    		// 3 step
    		echo("\n3. Get multiple levels with date range (levels 2,3): ");
    		string today = DateTime.Now.ToString("dd.MM.yyyy");
    		object logs3 = logger.getLogsByLevelsFromSQLite("2,3", today, today);
    		if(logs3 != null)
    			echo("вњ“ Retrieved info and warning logs for today<br>");
    		else
    			echo("вњ— Failed to retrieve logs with date range<br>");
    
    		// 4 step
    		echo("\n4. Get logs with offset and limit (levels 0,1, offset=0, pageSize=10): ");
    		object logs4 = logger.getLogsByLevelsFromSQLite("0,1", "", "", 0, 10);
    		if(logs4 != null)
    			echo("вњ“ Retrieved trace and debug logs with pagination<br>");
    		else
    			echo("вњ— Failed to retrieve logs with offset and limit<br>");
    
    		echo("\n\n");
    
    		app.quit();
    	}
    }
    const xhe_host = "127.0.0.1:7019";
    require("../../../Templates JS/init.js");
    const path = require("path");
    
    async function main()
    {
    	var dbPath = path.join(__dirname, "/logs/test_logger.db");
    	logger.init(1, true, true, "", dbPath, "d-m-Y H:i:s", "en", false, true);
    	
    	logger.addLogToSQLite(1, "Debug message 1", "{\"debug\":\"data1\"}", "Caller1");
    	logger.addLogToSQLite(2, "Info message 1", "{\"info\":\"data1\"}", "Caller2");
    	logger.addLogToSQLite(3, "Warning message 1", "{\"warn\":\"data1\"}", "Caller3");
    	
    	var logs = logger.getLogsByLevelsFromSQLite("1,2", "", "", 0, 100);
    	if (logs !== null && Array.isArray(logs) && logs.length >= 2)
    		console.log("вњ“ Test 1: Get logs by levels 1 and 2 - PASSED");
    	else
    		console.log("вњ— Test 1: Get logs by levels 1 and 2 - FAILED");
    	
    	logs = logger.getLogsByLevelsFromSQLite("2,3,4", "", "", 0, 100);
    	if (logs !== null && Array.isArray(logs) && logs.length >= 2)
    		console.log("вњ“ Test 2: Get logs by levels 2, 3, 4 - PASSED");
    	else
    		console.log("вњ— Test 2: Get logs by levels 2, 3, 4 - FAILED");
    	
    	logger.addLogToSQLite(0, "Trace message", "{\"trace\":\"data\"}", "Caller4");
    	logger.addLogToSQLite(5, "Critical message", "{\"critical\":\"data\"}", "Caller5");
    	logs = logger.getLogsByLevelsFromSQLite("0,1,2,3,4,5", "", "", 0, 100);
    	if (logs !== null && Array.isArray(logs) && logs.length >= 5)
    		console.log("вњ“ Test 3: Get logs by all levels - PASSED");
    	else
    		console.log("вњ— Test 3: Get logs by all levels - FAILED");
    	
    	logs = logger.getLogsByLevelsFromSQLite("1,2,3", "", "", 0, 3);
    	if (logs !== null && Array.isArray(logs) && logs.length <= 3)
    		console.log("вњ“ Test 4: Get logs by multiple levels with page size limit - PASSED");
    	else
    		console.log("вњ— Test 4: Get logs by multiple levels with page size limit - FAILED");
    }
    
    main();

    =============================================
    logger    Объекты    DOM  System  Vision  Web  Window        
    =============================================
    если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
    .