File write txt log

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan terhuijzen

jan terhuijzen

04/09/2012 17:09:34
Quote Anchor link
Hallo
Ik heb een class gemaakt om errors in een error log te zetten.
Bij het schrijven van de error in het bestand errors.txt gebruik ik de PHP functie fwrite()
http://php.net/manual/en/function.fwrite.php
Ik heb nu deze class
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?PHP
class Fout {
    public function ErrorLog($error) {
        if(empty($error)) {
        $error = 'Onbekende fout';
        }
else {
        $fp = fopen('errors.txt', 'w');
        fwrite($fp, '['.date('d-m-Y h:i:s').'] '.$error);
        fclose($fp);
        }
    }

    public function ShowError($errorText) {
        echo '<div class="error">';
        echo $errorText;
        echo '</div>';
    }

}

?>


En zo roep ik het aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?PHP

$error
= new Fout();
        $error->ErrorLog('Test');
        $error->ShowError('Er is iets fout gegaan, je kunt het opnieuw proberen');
?>


Het probleem is dat alleen de allereerste error in het bestand wordt gezet.
En als er 1x iets in is gezet werkt het niet meer, er gebeurt dan niks meer.
Op php.net staat juist dat de functie fwrite() de tekst erbij zet en niet de hele tekst doet veranderen.
Ook staat er niet dat die functie maar 1x werkt...

En dan heb ik nog een ander vraagje:

Als ik nou een PHP error wil opvangen en in de error log wil zetten hoe doe ik dat?
Weet iemand een beter script? Dit wat ik nu heb is eigenlijk niet echt een error logger, omdat je zelf instelt wat er in de txt file komt.
Gewijzigd op 04/09/2012 17:11:06 door Jan terhuijzen
 
PHP hulp

PHP hulp

18/04/2024 05:12:12
 
John Berg

John Berg

04/09/2012 17:14:51
Quote Anchor link
in plaats van een file te openen, schrijven en te sluiten kun je gemakkelijker file_put_contents gebruiken. De 2e parameter geeft aan of je aan de bestaande file wil toevoegen, of compleet overschrijven.
 
- SanThe -

- SanThe -

04/09/2012 17:23:03
Quote Anchor link
Quote:
'r' Open for reading only; place the file pointer at the beginning of the file.
'r+' Open for reading and writing; place the file pointer at the beginning of the file.
'w' Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'x' Create and open for writing only; place the file pointer at the beginning of the file. If the file already exists, the fopen() call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call.
'x+' Create and open for reading and writing; otherwise it has the same behavior as 'x'.
'c' Open the file for writing only. If the file does not exist, it is created. If it exists, it is neither truncated (as opposed to 'w'), nor the call to this function fails (as is the case with 'x'). The file pointer is positioned on the beginning of the file. This may be useful if it's desired to get an advisory lock (see flock()) before attempting to modify the file, as using 'w' could truncate the file before the lock was obtained (if truncation is desired, ftruncate() can be used after the lock is requested).
'c+' Open the file for reading and writing; otherwise it has the same behavior as 'c'.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

04/09/2012 17:23:32
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}

set_error_handler("exception_error_handler");
?>

En dan met try .... catch blokken gaan werken
 
Jan terhuijzen

jan terhuijzen

04/09/2012 17:36:52
Quote Anchor link
Heel ingewikkeld vind ik.
Is er geen manier om alle errors op te vangen die anders met error_reporting worden weergegeven?
En dan ook nog eens zodat de errors niet worden weergegeven op het beeldscherm, maar in de txt file worden gezet.
Gewijzigd op 04/09/2012 17:37:03 door jan terhuijzen
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

04/09/2012 17:48:57
Quote Anchor link
Met set_error_handler, kan je doen wat je wilt met de fouten die via error_reporting worden weergegeven, je kent gewoon een eigen functie toe

Toevoeging op 04/09/2012 17:50:31:

Ik ben zelf een (fatale) uitzondering, dus ik hou er wel van om met exceptions te werken in een try ... catch blok
Gewijzigd op 04/09/2012 17:50:52 door Ger van Steenderen
 
Jan terhuijzen

jan terhuijzen

04/09/2012 17:59:42
Quote Anchor link
Hoe werken exeptions (uitzonderingen)? Wat is een try en catch blok? Ik heb zoiets ook al eens in Javascript gezien.
Gewijzigd op 04/09/2012 18:25:07 door jan terhuijzen
 
Write Down

Write Down

04/09/2012 18:28:43
Quote Anchor link
Bekijk dit eens :-)
 
Wim E

Wim E

04/09/2012 20:57:01
Quote Anchor link
Het domste is om eigen klasse te gaan maken met treffer "Fout". Die fout kan in dat geval alles betekenen. Met behulp van Exceptions kun je over het algemeen zien wat voor fout je te maken hebt. Bijv. NullReferenceException (leeg object verwijzing) of IndexOutOfBoundsException (Index valt buiten array etc.) Hier kun je dus ook een eigen Exception voor maken bijv. JanException wat staat voor iets wat die exception veroorzaakt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.