Error registration errors CodeIgniter + errors

Is there a way to log, Info + Errors without debugging?
Howcome debug level appears with information?
If I want to log the information "The account id 4345 has been deleted by the administrator", why do I need to see all of them:

DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Config Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Hooks Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 URI Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Router Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Output Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Input Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Global POST and COOKIE data sanitized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Language Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Loader Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Config file loaded: config/safe_charge.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Config file loaded: config/web_fx.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Helper loaded: loadutils_helper DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Helper loaded: objectsutils_helper DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Helper loaded: logutils_helper DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Helper loaded: password_helper DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Database Driver Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 cURL Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Language Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Config Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Account MX_Controller Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 File loaded: ./modules/accounts/models/pending_account_model.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Model Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 File loaded: ./modules/accounts/models/proccess_accounts_model.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Model Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 File loaded: ./modules/accounts/models/web_fx_model.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Model Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 File loaded: ./modules/accounts/models/trader_account_type_spreads.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Model Class Initialized DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 File loaded: ./modules/accounts/models/trader_accounts.php DEBUG - 2010-12-27 08:39:13 --> 192.168.200.32 Model Class Initialized 

thanks

+6
php logging codeigniter
source share
5 answers

From CodeIgniter Docs :

 log_message('info', 'The purpose of some variable is to provide some value.'); 

Informational messages. These are the messages with the lowest priority, just giving information about a process. CodeIgniter does not generate any informational messages, but may be required in your application.

Note. For the log file to actually be written, the Logs folder must be writable. In addition, you must set a "threshold" for logging. For example, you can request error messages rather than the other two types. If you set it to zero, the log will be disabled.

+1
source share

I understand that this question is quite old, but I ran into the same problem and was able to modify the log library to fix it.

change the write_log function in Log.php as follows:

  public function write_log($level = 'error', $msg, $php_error = FALSE) { if ($this->_enabled === FALSE) { return FALSE; } $level = strtoupper($level); if ( ! isset($this->_levels[$level])) { return FALSE; } if (($this->_levels[$level] > $this->_threshold) OR (is_array($this->_threshold) && !in_array($this->_levels[$level], $this->_threshold))) { return FALSE; } $filepath = $this->_log_path.'log-'.date('Ym-d').'.php'; $message = ''; if ( ! file_exists($filepath)) { $message .= "<"."?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n"; } if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE)) { return FALSE; } $message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date($this->_date_fmt). ' --> '.$msg."\n"; flock($fp, LOCK_EX); fwrite($fp, $message); flock($fp, LOCK_UN); fclose($fp); @chmod($filepath, FILE_WRITE_MODE); return TRUE; } 

Then you can specify the array in the configuration file:

 $config['log_threshold'] = array(3, 1); 

And then your log file will look something like this:

 ERROR - 2013-07-24 13:50:04 --> Severity: Warning --> INFO - 2013-07-24 13:50:04 --> The purpose of some variable is to provide some value. ERROR - 2013-07-24 13:50:06 --> 404 Page Not Found --> 404.shtml 
+3
source share

quickfix tested on codeigniter 2.1.4

copy

/system/libary/log.php

to

/application/libary/log.php

add the following lines before $ filepath (line 86)

 // remove all DEBUG messages if ( $this->_levels[$level] == 2 ) { return FALSE; } 
+3
source share

You will not run into a problem in codeigniter 2

 $config['log_threshold'] = array(1, 3); 

in config / config.php

and

 log_message('info', 'The purpose of some variable is to provide some value.'); 

where you want to register something, only this message will be printed in the log file, without redundant debugging code.

BUT

In codeIgniter 3, many kernel system files have

log_message ('info', *******************);

how

 log_message('info', 'Config Class Initialized'); log_message('info', 'Controller Class Initialized'); log_message('info', 'Hooks Class Initialized'); ............ 

That's why when

 $config['log_threshold'] = array(1, 3); 

or

 $config['log_threshold'] = array(3); 

or

 $config['log_threshold'] = 3; 

then all unwanted log messages appear in the log file.

So, one way is to allow this to distribute all the core files and change

 log_message('info' 

to

 log_message('debug' 

or creating a new thresold for example

in config / config.php

 $config['log_threshold'] = array(1, 5); 

in the kernel / MY _Log.php

 protected $_levels = array('ERROR' => '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4', 'USER_INFO' => '5'); 

Full kernel file / MY _Log.php

 class MY_Log extends CI_Log { protected $_log_path; protected $_threshold = 1; protected $_date_fmt = 'Ymd H:i:s'; protected $_enabled = TRUE; protected $_levels = array('ERROR' => '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4', 'USER_INFO' => '5'); /** * Constructor */ public function __construct() { parent::__construct(); $config =& get_config(); $this->_log_path = ($config['log_path'] !== '') ? $config['log_path'] : APPPATH.'logs/'; $this->_file_ext = (isset($config['log_file_extension']) && $config['log_file_extension'] !== '') ? ltrim($config['log_file_extension'], '.') : 'log'; file_exists($this->_log_path) OR mkdir($this->_log_path, 0755, TRUE); if ( ! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path)) { $this->_enabled = FALSE; } if (is_numeric($config['log_threshold'])) { $this->_threshold = (int) $config['log_threshold']; } elseif (is_array($config['log_threshold'])) { $this->_threshold = 0; $this->_threshold_array = array_flip($config['log_threshold']); } if ( ! empty($config['log_date_format'])) { $this->_date_fmt = $config['log_date_format']; } if ( ! empty($config['log_file_permissions']) && is_int($config['log_file_permissions'])) { $this->_file_permissions = $config['log_file_permissions']; } } // -------------------------------------------------------------------- /** * Write Log File * * Generally this function will be called using the global log_message() function * * @param string the error level * @param string the error message * @param bool whether the error is a native PHP error * @return bool */ public function write_log($level = 'error', $msg, $php_error = FALSE) { if ($this->_enabled === FALSE) { return FALSE; } $level = strtoupper($level); if (( ! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold)) && ! isset($this->_threshold_array[$this->_levels[$level]])) { return FALSE; } if($level == 'USER_INFO') { $filepath = $this->_log_path . 'info-log-' . date('Ym-d') . '.php'; } else { $filepath = $this->_log_path . 'log-' . date('Ym-d') . '.php'; } $message = ''; if ( ! file_exists($filepath)) { $newfile = TRUE; // Only add protection to php files if ($this->_file_ext === 'php') { $message .= "<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>\n\n"; } } if ( ! $fp = @fopen($filepath, 'ab')) { return FALSE; } // Instantiating DateTime with microseconds appended to initial date is needed for proper support of this format if (strpos($this->_date_fmt, 'u') !== FALSE) { $microtime_full = microtime(TRUE); $microtime_short = sprintf("%06d", ($microtime_full - floor($microtime_full)) * 1000000); $date = new DateTime(date('Ymd H:i:s.'.$microtime_short, $microtime_full)); $date = $date->format($this->_date_fmt); } else { $date = date($this->_date_fmt); } $message .= $level.' - '.$date.' --> '.$msg."\n"; flock($fp, LOCK_EX); for ($written = 0, $length = strlen($message); $written < $length; $written += $result) { if (($result = fwrite($fp, substr($message, $written))) === FALSE) { break; } } flock($fp, LOCK_UN); fclose($fp); if (isset($newfile) && $newfile === TRUE) { chmod($filepath, $this->_file_permissions); } return is_int($result); } } 
+3
source share

the best way that I will respond is to use the file obtained with codeigniter. I had the same problem and she robbed her. look here https://github.com/EllisLab/CodeIgniter/wiki/Custom-Logging-Threshold

+1
source share

All Articles