You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: tracy/bg/guide.texy
+37-21Lines changed: 37 additions & 21 deletions
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,7 @@
15
15
16
16
17
17
PHP е идеален език за генериране на фини грешки, тъй като предоставя на програмистите голяма гъвкавост. Поради това Tracy\Debugger е по-ценен. Това е най-добрият инструмент сред диагностичните.
18
+
18
19
Ако срещнете Трейси за първи път, повярвайте ми, животът ви ще се раздели на този преди Трейси и този с нея. Добре дошли в добрата част!
19
20
20
21
@@ -41,12 +42,8 @@ use Tracy\Debugger;
41
42
Debugger::enable();
42
43
```
43
44
44
-
Първото нещо, което ще забележите на сайта, е лентата Tracy.
45
-
46
-
(Ако не виждате нищо, това означава, че Tracy работи в производствен режим. От съображения за сигурност Tracy е видима само на localhost.
47
-
Можете да накарате Tracy да работи в режим на разработка, като подадете `Debugger::Development` като първи параметър на метода `enable()` ).
48
-
49
-
Методът `enable()` предполага промяна на нивото на съобщението за грешка на E_ALL.
45
+
Първото нещо, което ще забележите на страницата, е лентата на Tracy в долния десен ъгъл. Ако не я виждате, това може да означава, че Tracy работи в производствен режим.
46
+
Това е така, защото Tracy е видим само на localhost от съображения за сигурност. За да проверите дали работи, можете временно да го поставите в режим на разработка, като използвате параметъра `Debugger::enable(Debugger::Development)`.
За да открием печатните грешки при присвояване на обект, използваме [признака Nette\SmartObject |utils:smartobject].
110
+
Забележка: Когато е активирана функцията Tracy, нивото на отчитане на грешки се променя на E_ALL. Ако искате да промените това, направете го, след като извикате `enable()`.
114
111
115
112
116
-
Производствен режим и регистриране на грешки .[#toc-production-mode-and-error-logging]
Както виждате, Трейси е доста красноречива. Това може да бъде оценено в среда за разработка, но в производствен сървър ще доведе до катастрофа. Там не може да се регистрира информация за отстраняване на грешки. Ето защо Tracy разполага с функция за автоматично откриване на средата и регистриране. Вместо да се покаже, Tracy съхранява информацията в лог файл и показва на посетителя разбираемо за потребителя съобщение за грешка на сървъра:
116
+
Както можете да видите, Трейси е доста разговорлив, което може да се оцени в среда за разработка, докато на производствен сървър това би довело до катастрофа. Това е така, защото там не трябва да се показва информация за отстраняване на грешки. Поради това Tracy има **автоматично откриване на средата** и ако примерът се изпълнява на реален сървър, грешката ще се регистрира, вместо да се показва, а посетителят ще вижда само удобно за потребителя съобщение:
120
117
121
118
[* tracy-error2.webp .{url:-} *]
122
119
123
-
Изходът в производствен режим потиска цялата информация за отстраняване на грешки, която се изпраща чрез [dump( |dumper]), и, разбира се, всички съобщения за грешки, генерирани от PHP. По този начин, дори да забравите `dump($obj)` в изходния си код, няма да се налага да се притеснявате за това в производствения си сървър. Нищо няма да се вижда.
120
+
Производственият режим потиска показването на цялата информация за отстраняване на грешки, изпратена с помощта на [dump( |dumper]), и разбира се, на всички съобщения за грешки, генерирани от PHP. Така че, ако сте забравили някои `dump($obj)` в кода, не трябва да се притеснявате, нищо няма да бъде показано на производствения сървър.
121
+
122
+
Как работи автоматичното откриване на режими? Режимът е за разработка, ако приложението работи на localhost (т.е. IP адрес `127.0.0.1` или `::1`) и няма прокси (т.е. HTTP заглавието му). В противен случай то се изпълнява в производствен режим.
123
+
124
+
Ако искате да активирате режим на разработка в други случаи, например за разработчици, които осъществяват достъп от определен IP адрес, можете да го зададете като параметър на метода `enable()`:
125
+
126
+
```php
127
+
Debugger::enable('23.75.345.200'); // можете също така да предоставите масив от IP адреси
128
+
```
129
+
130
+
Определено препоръчваме да комбинирате IP адреса с бисквитка. Съхранявайте таен токен, например `secret1234`, в бисквитката `tracy-debug` и по този начин активирайте режима за разработка само за разработчици, осъществяващи достъп от определен IP адрес, които имат споменатия токен в бисквитката:
Можете също така директно да зададете режима на разработка/производство, като използвате константите `Debugger::Development` или `Debugger::Production` като параметър на метода `enable()`.
137
+
138
+
.[note]
139
+
Ако използвате Nette Framework, погледнете как да [зададете режима за него |application:bootstrap#Development vs Production Mode] и след това той ще се използва и за Tracy.
124
140
125
-
Режимът на извеждане се определя от първия параметър `Debugger::enable()`. Можете да посочите константа `Debugger::Production`, или `Debugger::Development`. Друга възможност е да зададете режим на разработка да се активира, когато приложението е достъпно от определен IP адрес с определена стойност на "бисквитка" `tracy-debug`. Това се прави с помощта на синтаксиса `cookie-value@ip-address`.
126
141
127
-
Ако не е зададена, се използва стойността по подразбиране `Debugger::Detect`. В този случай системата идентифицира сървъра чрез IP адрес. Производствен режим се избира, ако достъпът до приложението се осъществява чрез публичен IP адрес. Резултатите от локалния IP адрес са в режим на разработка. В повечето случаи не е необходимо да задавате режима. Режимът се разпознава правилно, когато приложението работи на локалния сървър или в производствен режим.
142
+
Регистриране на грешки .[#toc-error-logging]
143
+
============================================
128
144
129
-
В производствен режим Tracy автоматично записва всички грешки и изключения в текстов дневник. Освен ако не посочите друго, тя ще се съхранява в log/error.log. Този дневник за грешки е изключително полезен. Представете си, че всички потребители на вашето приложение са всъщност бета Tester. Те вършат безплатно най-съвременната работа по откриване на грешки и би било глупаво да изхвърлите дискретно ценните им доклади в кошчето за боклук.
145
+
В производствен режим Tracy автоматично записва всички грешки и изключения в текстов дневник. За да се извършва записването, трябва да зададете абсолютния път до директорията за запис в променливата `$logDirectory` или да я предадете като втори параметър на метода `enable()`:
146
+
147
+
```php
148
+
Debugger::$logDirectory = __DIR__ . '/log';
149
+
```
150
+
151
+
Регистрирането на грешки е изключително полезно. Представете си, че всички потребители на вашето приложение всъщност са бета тестери, които безплатно вършат първокласна работа по откриването на грешки, и би било глупаво да изхвърлите техните ценни доклади незабелязано в кошчето за боклук.
130
152
131
153
Ако трябва да регистрирате собствени съобщения или прихванати изключения, използвайте метода `log()`:
132
154
@@ -142,13 +164,7 @@ try {
142
164
}
143
165
```
144
166
145
-
Директорията за регистриране на грешки може да бъде зададена като втори параметър на метода enable():
Copy file name to clipboardExpand all lines: tracy/cs/guide.texy
+34-19Lines changed: 34 additions & 19 deletions
Original file line number
Diff line number
Diff line change
@@ -42,12 +42,8 @@ use Tracy\Debugger;
42
42
Debugger::enable();
43
43
```
44
44
45
-
První, čeho si můžete na stránce všimnout, Tracy Bar.
46
-
47
-
(Pokud nic nevidíte, znamená to, že Tracy běží v produkčním režimu. Tracy je z bezpečnostních důvodů viditelná pouze na localhost.
48
-
Můžete vynutit, aby Tracy běžela ve vývojovém režimu předáním `Debugger::Development` jako prvního parametru metody `enable()`.)
49
-
50
-
`enable()` změní úroveň hlášených chyb na E_ALL.
45
+
První, čeho si na stránce všimnete, je Tracy Bar v pravém dolním rohu. Pokud jej nevidíte, může to znamenat, že Tracy běží v produkčním režimu.
46
+
Tracy je totiž z bezpečnostních důvodů viditelná pouze na localhost. Pro otestování, zda funguje, ji můžete dočasně přepnout do vývojovém režimu pomocí parametru `Debugger::enable(Debugger::Development)`.
Abychom odhalili i překlepy při přiřazení do proměnné objektu, použijeme [traitu Nette\SmartObject |utils:smartobject].
110
+
Poznámka: Tracy po aktivaci změní úroveň hlášení chyb na E_ALL. Pokud chcete tuto hodnotu změnit, učiňte tak po volání `enable()`.
115
111
116
112
117
-
Produkční režim a logování chyb
118
-
===============================
113
+
Vývojářský vs produkční režim
114
+
=============================
119
115
120
-
Jak vidíte, Laděnka je poměrně výřečná, což lze ocenit ve vývojovém prostředí, zatímco na produkčním serveru by to způsobilo hotové neštěstí. Tam se totiž žádné ladící informace vypsat nesmí. Laděnka proto disponuje autodetekcí prostředí a pokud příklad spustíme na ostrém serveru, chyba se místo zobrazení zaloguje a návštěvník uvidí jen uživatelsky srozumitelnou hlášku:
116
+
Jak vidíte, Laděnka je poměrně výřečná, což lze ocenit ve vývojovém prostředí, zatímco na produkčním serveru by to způsobilo hotové neštěstí. Tam se totiž žádné ladící informace vypsat nesmí. Laděnka proto disponuje **autodetekcí prostředí** a pokud příklad spustíme na ostrém serveru, chyba se místo zobrazení zaloguje a návštěvník uvidí jen uživatelsky srozumitelnou hlášku:
121
117
122
118
[* tracy-error2.webp .{url:-} *]
123
119
124
120
Produkční režim potlačí zobrazování všech ladících informacích, které posíláme ven pomocí [dump() |dumper], a samozřejmě také všech chybových zpráv, které generuje PHP. Pokud jste tedy v kódu zapomněli nějaké `dump($obj)`, nemusíte se obávat, na produkčním serveru se nic nevypíše.
125
121
126
-
K nastavování režimu se používá první parametr metody `Debugger::enable()`. Režim lze napevno nastavit konstantou `Debugger::Production` nebo `Debugger::Development`. Další možnost je, že bude vývojový režim zapnutý při přístupu z dané IP adresy s danou hodnotou `tracy-debug` cookie. Používá se syntaxe `hodnota-cookie@ip-adresa`.
122
+
Jak funguje autodetekce režimu? Režim je vývojářský tehdy, pokud je aplikace spuštěna na localhostu (tj. IP adresa `127.0.0.1` nebo `::1`) a není přitomna proxy (tj. její HTTP hlavička). Jinak běží v produkčním režimu.
123
+
124
+
Pokud chceme vývojářský režim povolit i v dalších případech, například programátorům přistupujícím z konkrétní IP adresy, uvedeme ji jako parametr metody `enable()`:
125
+
126
+
```php
127
+
Debugger::enable('23.75.345.200'); // lze uvést i pole IP adres
128
+
```
129
+
130
+
Rozhodně doporučujeme kombinovat IP adresu s cookie. Do cookie `tracy-debug` uložíme tajný token, např. `secret1234`, a tímto způsobem aktivujeme vývojářský režim jen pro programátory přistupující z konkrétní IP adresy, kteří mají v cookie zmíněný token:
Vývojářský/produkční režim můžeme také přímo nastavit použitím konstanty `Debugger::Development` nebo `Debugger::Production` jako parametru metody `enable()`.
127
137
128
-
Pokud jej neuvedeme, má výchozí hodnotu `Debugger::Detect` a v takovém případě se detekuje režim podle IP adresy serveru - je-li dostupný přes veřejnou IP adresu, běží v produkčním režimu, je-li na lokální, tak ve vývojářském. V drtivé většině případů tak není potřeba režim nastavovat a správně se rozezná podle toho, jestli aplikaci spouštíme na svém lokálním serveru nebo v ostrém provozu.
138
+
.[note]
139
+
Pokud používát Nette Framework, podívejte se, jak [nastavit režim pro něj |application:bootstrap#Vývojářský vs produkční režim] a ten se následně použije i pro Tracy.
129
140
130
-
V produkčním režimu Laděnka automaticky všechny chyby a zachycené výjimky zaznamenává do textového logu. Pokud neurčíme jinak, půjde o soubor `log/error.log`. Logování chyb je přitom nesmírně užitečné. Představte si, že všichni uživatelé vaší aplikace jsou vlastně betatesteři, kteří zdarma odvádějí špičkovou práci v hledání chyb a vy byste udělali hloupost, kdybyste jejich cenné reporty zahodili bez povšimnutí do odpadkového koše.
141
+
142
+
Logování chyb
143
+
=============
144
+
145
+
V produkčním režimu Laděnka automaticky všechny chyby a zachycené výjimky zaznamenává do textového logu. Aby logování mohlo probíhat, musíme nastavit absolutní cestu k logovacímu adresáři do proměnné `$logDirectory` nebo předat jako druhý parametr metody `enable()`:
146
+
147
+
```php
148
+
Debugger::$logDirectory = __DIR__ . '/log';
149
+
```
150
+
151
+
Logování chyb je přitom nesmírně užitečné. Představte si, že všichni uživatelé vaší aplikace jsou vlastně betatesteři, kteří zdarma odvádějí špičkovou práci v hledání chyb a vy byste udělali hloupost, kdybyste jejich cenné reporty zahodili bez povšimnutí do odpadkového koše.
131
152
132
153
Pokud potřebujeme zalogovat vlastní zprávu nebo vámi zachycenou výjimku, použijeme k tomu metodu `log()`:
133
154
@@ -143,12 +164,6 @@ try {
143
164
}
144
165
```
145
166
146
-
Jiný adresář pro logování chyb lze nastavit druhým parametrem metody enable():
0 commit comments