[LR] Produkcja i błędy |
[LR] Produkcja i błędy |
27.10.2017, 22:48:35
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Laravel respektuje proste
error_reporting(0); ini_set('display_errors', 0); i chyba najlepszą opcją jest wrzucenie tego w App providera? Oczywiście z warunkiem, że tylko dla produkcji. Tylko kiedyś nadejdzie taki moment, że będę miał za dużo czasu i przejże sobie logi na produkcji aby ponaprawiać wszystkie notice'y które się tam pojawiły. Tylko powyższe wyłącza błędy całkowicie. No i tu mam problem - jak zachować logowanie błędów (póki co w pliku, ale w przyszłości coś ambitniejszego), ale zarazem zezwolić na wykonanie skryptu do końca gdy wywali error o niskiej szkodliwości? -------------------- |
|
|
28.10.2017, 13:54:36
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
APP_DEBUG = false ppowinno załatwiać sprawę.
PS. Pamiętam Ten post edytował Pyton_000 28.10.2017, 13:55:11 |
|
|
30.10.2017, 14:01:01
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
APP_DEBUG oczywiście nie załatwia sprawy bo to by było zbyt trywialne.
Ta zmienna determinuje wyłącznie format zwracanych błędów - przy true zwraca informacje o błędzie do debugowania, a przy false zwraca tylko widok Oopps. -------------------- |
|
|
30.10.2017, 22:31:39
Post
#4
|
|
Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) |
Nie rozumiem jaki jest w tym problem, wręcz powiedziałbym że jest to bardzo dobre zachowanie. Pewnie rozwiązanie swojego problemu znajdziesz w dokumentacji, w szczególności w sekcji "Errors & Logging".
-------------------- |
|
|
31.10.2017, 00:37:45
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Takie czyli jakie? Nie puszczanie na produkcji aplikacji gdy natrafi na "notice error" to dobre zachowanie?
Link, który wysłałeś dotyczy logowania błędów, nie ma związku z problemem który poruszam. Logować chce wszystko. Ten post edytował markonix 31.10.2017, 00:42:12 -------------------- |
|
|
31.10.2017, 04:55:45
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Notice to też błąd który może doprowadzić do wywalenia się całej aplikacji więc nie powinno go być już na etapie tworzenia kodu.
-------------------- |
|
|
31.10.2017, 08:27:42
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Czyli chcesz aby aplikacja działała pomimo że wywali się error?
|
|
|
31.10.2017, 10:59:46
Post
#8
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
@markonix
Do logowania błędów na produkcji polecam Bugsnag, Sentry lub coś podobnego. Ja korzystam z tego pierwszego. Jeśli lubisz bawić się w zaawansowane raportowanie i monitorowanie, sprawdź Logstash. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
31.10.2017, 17:24:35
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Notice to też błąd który może doprowadzić do wywalenia się całej aplikacji więc nie powinno go być już na etapie tworzenia kodu. Czyli chcesz aby aplikacja działała pomimo że wywali się error? Tak, notice gdy zabraknie przy wyświetlaniu widoku jakiejś zmiennej nie jest dla mnie wystarczającym powodem aby wyłączać całą stronę. Nie wiem jak ale w Codeigniter tak właśnie mam, że notice nie blokują strony bo się zdarzają bo mam je w logach, a nie ma bata (a teraz już motywacji bo przepisuje całość) aby wyłapać wszystko. @markonix Do logowania błędów na produkcji polecam Bugsnag, Sentry lub coś podobnego. Ja korzystam z tego pierwszego. Jeśli lubisz bawić się w zaawansowane raportowanie i monitorowanie, sprawdź Logstash. Logowanie błędów takie bardziej PRO jak najbardziej ale do tego przejdę później, ale na razie rozkminiam etap wcześniej. Edit: Popatrzyłem jak to jest w CI zrobione.
I nie wiem czy tu nie ma odpowiedzi display_errors i error_reporting zawsze myślałem, że to tylko komplementarne ustawienia, ale teraz jak się temu przyjrzałem to są to osobne ustawienia jak same ich nazwy wskazują - wyświetlanie błędów i ogólnego raportowania. To teraz moje pytanie brzmi czy zgapić z CI i wstawić to do Laravel'a czy macie inne sugestie - czy da się kontrolować na poziomie aplikacji. Błędy poważne takie jak błędy bazy danych też bym obsłużył inaczej aniżeli wywalenie "Nie udało się" na całą stronę, wg mnie najbardziej userfrielndy będzie wyłapanie tego, zalogowanie oczywiście, a usera np. wrócić na poprzednią stronę już z flash komunikatem, że operacja się nie powiodła itp. Ten post edytował markonix 31.10.2017, 17:34:50 -------------------- |
|
|
31.10.2017, 18:24:40
Post
#10
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) |
Pytasz się o zgodę czy o rozwiązanie ? Bo jak o zgodę to nie. Laravel łapie wszystkie błędy więc pozostaje ci samemu je obsłużyć.
|
|
|
31.10.2017, 18:46:44
Post
#11
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Tylko że Laravel rejestruje własne exceptionHandlers i jak już złapie error to nie wypuści go i jedynine co możesz zrobić to obsłużyć go i ew. przekierować go gdzieś lub wyrenderować własny widok.
|
|
|
31.10.2017, 18:51:18
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Gdyby łapał, a następnie pozwolił mi wybrać odpowiednie akcje było by ok (np. na podstawie ENVIRONMENT podejmowałbym odpowiednie kroki).
https://laravel.com/docs/5.5/errors#the-exception-handler Cytat Sometimes you may need to report an exception but continue handling the current request. The report helper function allows you to quickly report an exception using your exception handler's report method without rendering an error page: To brzmi obiecująco. -------------------- |
|
|
31.10.2017, 19:01:20
Post
#13
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Ale to jest tylko jak samemu sobie łapiesz wyjątki, wtedy możesz tylko zaraportować.
|
|
|
1.10.2018, 18:09:35
Post
#14
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Laravel 5.7 i ciągle mam problem aby to dobrze skonfigurować.
Jestem albo w stanie wyłączyć błędy NOTICE całkowicie (brak przerwania skryptu, brak informacji w logach), albo wyświetlić defaultowy błąd na całą stronę (z debugiem albo bez). Error_report i display_errors próbowałem wszystkie kombinacje. -------------------- |
|
|
1.10.2018, 19:13:22
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Laravel respektuje proste - po to się używa frameworka, żeby nie majstrować przy ustawieniach PHP i dostosować aplikację do środowiska a nie odwrotnie.error_reporting(0); ini_set('display_errors', 0); No i tu mam problem - jak zachować logowanie błędów (póki co w pliku, ale w przyszłości coś ambitniejszego), ale zarazem zezwolić na wykonanie skryptu do końca gdy wywali error o niskiej szkodliwości? - w każdym lepszym fw jest coś takiego jak logger i error handler - obie te rzeczy zazwyczaj można niezależnie od siebie konfigurować. Standardowe zachowanie to przechwytywanie wszystkich błędów czy notatek i rzucanie zamiast nich wyjątków, następnie ujednolicona obsługa tych wyjątków.Jest to opisane w dokumentacji Larwy: https://laravel.com/docs/5.7/errors Jest też fragment, który szczególnie Ciebie powinien zainteresować: Cytat Sometimes you may need to report an exception but continue handling the current request.
|
|
|
2.10.2018, 16:22:09
Post
#16
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
- po to się używa frameworka, żeby nie majstrować przy ustawieniach PHP i dostosować aplikację do środowiska a nie odwrotnie. No widzisz, dokładnie tak samo uważam ale 90% wyników na stacku na frazę "ukrywania błędów" na produkcji to wyłączenie tych błędów przed framework'iem przez php, ini czy htaccess. Jest też fragment, który szczególnie Ciebie powinien zainteresować: Jakbyś wzrokowo przejrzał ostatnie moje posty, to sam się do tego fragmentu odniosłem tylko, że ja nie chce nadpisywać handlingu Laravela. Chce aby działało wszystko jak teraz z wyjątkiem nie wywalania się na notice (i może deprecated). Ale spróbuje jeszcze. Dziwie się, że nie znajduje żadnych gotowych rozwiązań bo "stan", które chce osiągnąć wg mnie jest najbardziej prawidłowy na produkcji.. edit: Próbuje w metodzie render coś zmajstrować ale nie wiem jak w niej zrobić wyjątki. Problemy jakie mam to wykrycie kategorii Exception (czy to jest notice czy nie). getSeverity() zwraca mi zawsze 1, jedynie to jakoś ma sens:
Dla notice nie jest to fatal.. I może to jest to czego szukam ale ok - wiem już, że nie chce wywalać użytkownikowi strony i przejść dalej więc jak poinstruować o tym FW? Muszę w metodzie render() coś zwrócić, dokładniej to jakiś Response ale jaki? Ten post edytował markonix 2.10.2018, 16:22:48 -------------------- |
|
|
2.10.2018, 20:39:45
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Na produkcji wyłącza się jedynie wyświetlanie błędów - tak na wszelki wypadek, bo może być np. błąd podczas uruchamiania error handlera Jednak tak czy inaczej logi muszą być, całkowite wyłączanie błędów (zwłaszcza fatali) to przegięcie ale znam to i wciąż mam tego typu problemy: biała strona (albo strona błędu) i nic w logach.
Tak czy inaczej musisz napisać kawałek własnego kodu, nadpisać handling Larwy, bo defaultowy jest do bani. Larwa używa Whoopsa, który jest świetnym tego typu komponentem, ale ma tą brzydką wadę, że nie puszcza niczego do logów jeśli jest włączony - dlatego najlepiej zarejestrować własny handler i tak właśnie robiłem w apkach na Larwie a także tych, które korzystały jedynie z Whoopsa. Jak znajdziesz lepszy sposób to oczywiście też chętnie tego użyję I trzeba mieć świadomość, że z Larwą za dużo nie poszalejesz bo to fw dość leciwy i skazany prędzej czy później na wymarcie (a na pewno w obecnej formie). |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 01:46 |