如何在codeigniter中将限制设置为log_message

时间:2017-09-20 10:02:20

标签: php codeigniter

我在CodeIgniter中将限制设置为log_message时出现问题, 我想用

来完成它
$config['log_file_permissions'] = 0644;

这不起作用。

在600行日志消息之后,我想创建新文件。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

问 - 在600行日志消息之后,我想创建新文件 A - CI还没有这种功能

供将来参考

  

CI可以对要在日志文件中写入哪些数据进行分类。 (例如:错误消息,调试消息,信息......)

User Guide Link

/*
|--------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------
|
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Threshold options are:
|
|   0 = Disables logging, Error logging TURNED OFF
|   1 = Error Messages (including PHP errors)
|   2 = Debug Messages
|   3 = Informational Messages
|   4 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
|   array(2) = Debug Messages, without Error Messages
|
| For a live site you'll usually only enable Errors (1) to be logged otherwise
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

答案 1 :(得分:0)

您可以扩展system/core/Log.php并覆盖write_log($level, $msg)方法。

主要任务是更改命名日志文件的方案。

CI_Log类使用以下内容作为当前文件的名称。

$filepath = $this->_log_path.'log-'.date('Y-m-d').'.'.$this->_file_ext;

这基本上意味着任何一天都有一个日志文件。但是,您所需的功能可能会导致一天中有多个文件。我没有一个优雅的方法来解决这部分问题。答案取决于您希望如何命名其他日志文件。将“_1”,“_ 2”,“_ n”附加到date('Y-m-d')是一种可能性。同样,我没有提供确定要使用的正确“子日”版本的方法。

但是,一旦你弄明白当前文件是什么,确定文件中的行数是微不足道的。

$file="current_log_file_name";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgets($handle);
  $linecount++;
}

fclose($handle);

如果$linecount > 600然后创建一个新文件,则使用“current_log_file_name”。