CodeIgniter installed
[living-lab-site.git] / system / libraries / Log.php
1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3  * CodeIgniter
4  *
5  * An open source application development framework for PHP 5.1.6 or newer
6  *
7  * @package             CodeIgniter
8  * @author              ExpressionEngine Dev Team
9  * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
10  * @license             http://codeigniter.com/user_guide/license.html
11  * @link                http://codeigniter.com
12  * @since               Version 1.0
13  * @filesource
14  */
15
16 // ------------------------------------------------------------------------
17
18 /**
19  * Logging Class
20  *
21  * @package             CodeIgniter
22  * @subpackage  Libraries
23  * @category    Logging
24  * @author              ExpressionEngine Dev Team
25  * @link                http://codeigniter.com/user_guide/general/errors.html
26  */
27 class CI_Log {
28
29         protected $_log_path;
30         protected $_threshold   = 1;
31         protected $_date_fmt    = 'Y-m-d H:i:s';
32         protected $_enabled     = TRUE;
33         protected $_levels      = array('ERROR' => '1', 'DEBUG' => '2',  'INFO' => '3', 'ALL' => '4');
34
35         /**
36          * Constructor
37          */
38         public function __construct()
39         {
40                 $config =& get_config();
41
42                 $this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/';
43
44                 if ( ! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path))
45                 {
46                         $this->_enabled = FALSE;
47                 }
48
49                 if (is_numeric($config['log_threshold']))
50                 {
51                         $this->_threshold = $config['log_threshold'];
52                 }
53
54                 if ($config['log_date_format'] != '')
55                 {
56                         $this->_date_fmt = $config['log_date_format'];
57                 }
58         }
59
60         // --------------------------------------------------------------------
61
62         /**
63          * Write Log File
64          *
65          * Generally this function will be called using the global log_message() function
66          *
67          * @param       string  the error level
68          * @param       string  the error message
69          * @param       bool    whether the error is a native PHP error
70          * @return      bool
71          */
72         public function write_log($level = 'error', $msg, $php_error = FALSE)
73         {
74                 if ($this->_enabled === FALSE)
75                 {
76                         return FALSE;
77                 }
78
79                 $level = strtoupper($level);
80
81                 if ( ! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold))
82                 {
83                         return FALSE;
84                 }
85
86                 $filepath = $this->_log_path.'log-'.date('Y-m-d').EXT;
87                 $message  = '';
88
89                 if ( ! file_exists($filepath))
90                 {
91                         $message .= "<"."?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n";
92                 }
93
94                 if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
95                 {
96                         return FALSE;
97                 }
98
99                 $message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date($this->_date_fmt). ' --> '.$msg."\n";
100
101                 flock($fp, LOCK_EX);
102                 fwrite($fp, $message);
103                 flock($fp, LOCK_UN);
104                 fclose($fp);
105
106                 @chmod($filepath, FILE_WRITE_MODE);
107                 return TRUE;
108         }
109
110 }
111 // END Log Class
112
113 /* End of file Log.php */
114 /* Location: ./system/libraries/Log.php */