Skip to content

Instantly share code, notes, and snippets.

@Go-Noji
Created October 6, 2018 18:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Go-Noji/490513574d3d9345e0a41b721981e527 to your computer and use it in GitHub Desktop.
Save Go-Noji/490513574d3d9345e0a41b721981e527 to your computer and use it in GitHub Desktop.
CodeIgniterのログを独自カテゴリーに分けて出力する ref: https://qiita.com/Go-Noji/items/dbf248f2fd55ed48ca58
log_message('debug', 'デバックメッセージ');
log_message('debug', 'デバックメッセージ');
log_message('custome', 'カスタムメッセージ');
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
DEBUG - 2018-10-05 17:33:35 --> デバックメッセージ
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
DEBUG - 2018-10-05 17:36:15 --> カスタムメッセージ
class MY_Log extends CI_Log {
private function _write_log($level, $msg)
{
$category = isset($this->_levels[$level]) ? '' : $level.'-';
$filepath = $this->_log_path.'log-'.$category.date('Y-m-d').'.'.$this->_file_ext;
$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;
}
flock($fp, LOCK_EX);
// 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('Y-m-d H:i:s.'.$microtime_short, $microtime_full));
$date = $date->format($this->_date_fmt);
}
else
{
$date = date($this->_date_fmt);
}
$message .= $this->_format_line($level, $date, $msg);
for ($written = 0, $length = self::strlen($message); $written < $length; $written += $result)
{
if (($result = fwrite($fp, self::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);
}
/**
* Write Log File
*
* Generally this function will be called using the global log_message() function
*
* @param string $level The error level: 'error', 'debug' or 'info'
* @param string $msg The error message
* @return bool
*/
public function write_log($level, $msg)
{
if ($this->_enabled === FALSE)
{
return FALSE;
}
$level = strtoupper($level);
if ( ! isset($this->_levels[$level]))
{
return $this->_write_log($level, $msg);
}
if (
isset($this->_levels[$level])
&& (($this->_levels[$level] > $this->_threshold))
&& ! isset($this->_threshold_array[$this->_levels[$level]])
)
{
return FALSE;
}
return $this->_write_log($level, $msg);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment