Reputation: 9788
I want error logging in PHP CodeIgniter. How do I enable error logging?
I have some questions:
Upvotes: 111
Views: 257286
Reputation: 207
Enable logging
Machine : Mac OS - Intel chip
Yes you can enable it for localhost. just go to src/customers/application/config/config.php and add
$config['log_threshold'] = 1;
$config['log_path'] = '/Applications/XAMPP/logs/';
Example :
I have added below log_message statement in file : src/customers/application/views/admin/orders/view.php
log_message('info', 'Inside view.php file');
log_message('debug', 'Inside view.php file');
log_message('error', 'Inside view.php file');
Generated log file format : log-YYYY-MM-DD.php inside location /Applications/XAMPP/logs/
Upvotes: 0
Reputation: 510
In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';
Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/
Upvotes: 4
Reputation: 1787
More oin regards to question part 4 How do you e-mail that error to an email address? The error_log function has email destination too. http://php.net/manual/en/function.error-log.php
Agha, here I found an example that shows a usage. Send errors message via email using error_log()
error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);
Upvotes: 1
Reputation: 14264
CodeIgniter has some error logging functions built in.
$config['log_threshold'] = 1;
log_message('error', 'Some variable did not contain a value.');
log_exceptions()
. You can do this yourself or use this. More info on extending the core hereSee http://www.codeigniter.com/user_guide/general/errors.html
Upvotes: 217
Reputation: 3390
Also make sure that you have allowed codeigniter to log the type of messages you want in a config file.
i.e $config['log_threshold'] = [log_level ranges 0-4];
Upvotes: 4
Reputation: 10114
To simply put a line in the server's error log, use PHP's error_log() function. However, that method will not send an e-mail.
First, to trigger an error:
trigger_error("Error message here", E_USER_ERROR);
By default, this will go in the server's error log file. See the ErrorLog directive for Apache. To set your own log file:
ini_set('error_log', 'path/to/log/file');
Note that the log file you choose must already exist and be writable by the server process. The simplest way to make the file writable is to make the server user the owner of the file. (The server user may be nobody, _www, apache, or something else, depending on your OS distribution.)
To e-mail the error, you need to set up a custom error handler:
function mail_error($errno, $errstr, $errfile, $errline) {
$message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
error_log($message); // writes the error to the log file
mail('[email protected]', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);
Please see the relevant PHP documentation for more info.
Upvotes: 27