YetiForce CRM to bardzo zaawansowany system, posiada kilkanaście tysięcy plików i setki zależności a codziennie jest tego coraz więcej. Dlatego aby móc analizować problemy w systemie, zostało stworzonych wiele mechanizmów logujących, które w zależności od potrzeb, w odpowiednim miejscu aktywujemy. Istnieją również inne metody analizowania błędów, lecz nie są one tutaj wymienione, ponieważ albo wymagają zaawansowanego poziomu programowania albo są specyficzne dla środowiska i wdrożonych funkcjonalności.
Aby rozpocząć analizę problemów lub błędów występujących w systemie należy włączyć zapis logów i wyświetlanie komunikatów serwera. Bez tej zmiany system nie będzie w stanie informować nas o występujących problemach z np. krótkim czasem wykonywania skryptu. W konfiguracji php.ini należy ustawić wartości log_errorsi display_errors na On. Jeśli konfiguracja umożliwia nadpisywanie parametrów PHP to za pomocą .htaccess Dodatkowa konfiguracja z użyciem .htaccess. Ważne aby przez rozpoczęciem debugowania sprawdzić w panelu Serwer - konfiguracja czy opisane parametry są poprawnie ustawione.
Ścieżki plików z logami:
$config['debug_level'] = 1;W Roundcube możemy debugować różne elementy:
// System error reporting, sum of: 1 = log; 4 = show, 8 = trace 'ROUNDCUBE_DEBUG_LEVEL' => 1,// Devel_mode this will print real PHP memory usage into logs/console and do not compress JS libraries 'ROUNDCUBE_DEVEL_MODE' => false, // Activate this option if logs should be written to per-user directories. // Data will only be logged if a directry cache/logs// exists and is writable. 'ROUNDCUBE_PER_USER_LOGGING' => false, // Log sent messages to cache/logs/sendmail or to syslog 'ROUNDCUBE_SMTP_LOG' => false, // Log successful/failed logins to cache/logs/userlogins or to syslog 'ROUNDCUBE_LOG_LOGINS' => false, // Log session authentication errors to cache/logs/session or to syslog 'ROUNDCUBE_LOG_SESSION' => false, // Log SQL queries to cache/logs/sql or to syslog 'ROUNDCUBE_SQL_DEBUG' => false, // Log IMAP conversation to cache/logs/imap or to syslog 'ROUNDCUBE_IMAP_DEBUG' => false, // Log LDAP conversation to cache/logs/ldap or to syslog 'ROUNDCUBE_LDAP_DEBUG' => false, // Log SMTP conversation to cache/logs/smtp or to syslog 'ROUNDCUBE_SMTP_DEBUG' => false, w pliku config/debug.php znajdziesz więcej zmiennych, które pozwalają debugować bardziej złożone elementy komunikacji pomiędzy serwerem poczty a roundcube.
'DAV_DEBUG_EXCEPTIONS' => true, 'DAV_DEBUG_PLUGIN' => false, - Parametr włącza dodatkowy plugin który służy do logowania/zapisywania wszystkich danych otrzymywanych i wysyłanych przez serwer do pliku cache/logs/davDebug.log
public static $LOG_TO_FILE = true; public static $LOG_LEVELS = ['error', 'warning']; public static $LOG_TRACE_LEVEL = 9; public static $SQL_DIE_ON_ERROR = true; public static $DEBUG_CRON = true; public static $SMARTY_ERROR_REPORTING = E_ALL & ~E_NOTICE; public static $JS_DEBUG = true; public static $DISPLAY_EXCEPTION_BACKTRACE = true; public static $DISPLAY_EXCEPTION_LOGS = true; public static $EXCEPTION_ERROR_LEVEL = E_ALL & ~E_NOTICE; public static $DAV_DEBUG_EXCEPTIONS = true; public static $DAV_DEBUG_PLUGIN = true; public static $WEBSERVICE_SHOW_ERROR = true; public static $WEBSERVICE_DEBUG = true; public static $MAILER_DEBUG = true; public static $ROUNDCUBE_DEVEL_MODE = true; public static $ROUNDCUBE_SMTP_DEBUG = true; public static $ROUNDCUBE_IMAP_DEBUG = true;
public static $LOG_TO_FILE = true; public static $LOG_LEVELS = ['error']; public static $LOG_TRACE_LEVEL = 9; public static $SQL_DIE_ON_ERROR = false; public static $DEBUG_CRON = true; public static $SMARTY_ERROR_REPORTING = E_ALL & ~E_NOTICE; public static $JS_DEBUG = true; public static $DAV_DEBUG_EXCEPTIONS = true; public static $DAV_DEBUG_PLUGIN = true; public static $WEBSERVICE_DEBUG = true; public static $MAILER_DEBUG = true; public static $ROUNDCUBE_SMTP_DEBUG = true; public static $ROUNDCUBE_IMAP_DEBUG = true;
error_reporting = E_ALL html_errors = On log_errors = On display_errors = On display_startup_errors = On error_log = __php__log_path__/php_error.log
error_log __nginx__log_path__/nginx_error.log notice;
proxy_intercept_errors on; fastcgi_intercept_errors on;
[global] error_log = __nginx__log_path__/fpm_error.log.log
[www]
php_flag[display_errors] = on php_admin_flag[log_errors] = true