| 1 |  |  | <?php | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | use Monolog\Logger; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | use Monolog\Handler\StreamHandler; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | use Monolog\Handler\RotatingFileHandler; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | class Xcloner_Logger extends Logger{ | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  | 	 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | 	private $logger_path ; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  | 	private $max_logger_files = 15; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  | 	private $main_logger_url; | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 12 |  |  | 	 | 
            
                                                                        
                            
            
                                    
            
            
                | 13 |  |  | 	public function __construct($logger_name = "xcloner_logger", $hash="") | 
            
                                                                        
                            
            
                                    
            
            
                | 14 |  |  | 	{ | 
            
                                                                        
                            
            
                                    
            
            
                | 15 |  |  | 		$xcloner_settings 	= new Xcloner_Settings($hash); | 
            
                                                                        
                            
            
                                    
            
            
                | 16 |  |  | 		$logger_path 		= $xcloner_settings->get_xcloner_store_path().DS.$xcloner_settings->get_logger_filename(); | 
            
                                                                        
                            
            
                                    
            
            
                | 17 |  |  | 		$logger_path_tmp 	= ""; | 
            
                                                                        
                            
            
                                    
            
            
                | 18 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 19 |  |  | 		if($hash) | 
            
                                                                        
                            
            
                                    
            
            
                | 20 |  |  | 			$logger_path_tmp = $xcloner_settings->get_xcloner_tmp_path().DS.$xcloner_settings->get_logger_filename(1); | 
            
                                                                        
                            
            
                                    
            
            
                | 21 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 22 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 23 |  |  | 		$this->logger_path = $logger_path; | 
            
                                                                        
                            
            
                                    
            
            
                | 24 |  |  | 		//$this->logger_path_tmp = $logger_path_tmp; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 25 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 26 |  |  | 		if(!is_dir($xcloner_settings->get_xcloner_store_path()) or !is_writable($xcloner_settings->get_xcloner_store_path())) | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 27 |  |  | 		{ | 
            
                                                                        
                            
            
                                    
            
            
                | 28 |  |  | 			$logger_path = "php://stderr"; | 
            
                                                                        
                            
            
                                    
            
            
                | 29 |  |  | 			$logger_path_tmp = ""; | 
            
                                                                        
                            
            
                                    
            
            
                | 30 |  |  | 		} | 
            
                                                                        
                            
            
                                    
            
            
                | 31 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 32 |  |  | 		if(!$xcloner_settings->get_xcloner_option('xcloner_enable_log')) | 
            
                                                                        
                            
            
                                    
            
            
                | 33 |  |  | 		{ | 
            
                                                                        
                            
            
                                    
            
            
                | 34 |  |  | 			$logger_path = "php://stderr"; | 
            
                                                                        
                            
            
                                    
            
            
                | 35 |  |  | 			$logger_path_tmp = ""; | 
            
                                                                        
                            
            
                                    
            
            
                | 36 |  |  | 		} | 
            
                                                                        
                            
            
                                    
            
            
                | 37 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 38 |  |  | 		// create a log channel | 
            
                                                                        
                            
            
                                    
            
            
                | 39 |  |  | 		parent::__construct($logger_name); | 
            
                                                                        
                            
            
                                    
            
            
                | 40 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 41 |  |  | 		$debug_level = Logger::INFO; | 
            
                                                                        
                            
            
                                    
            
            
                | 42 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 43 |  |  | 		if(WP_DEBUG) | 
            
                                                                        
                            
            
                                    
            
            
                | 44 |  |  | 			$debug_level = Logger::DEBUG; | 
            
                                                                        
                            
            
                                    
            
            
                | 45 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 46 |  |  | 	 | 
            
                                                                        
                            
            
                                    
            
            
                | 47 |  |  | 		if($logger_path) | 
            
                                                                        
                            
            
                                    
            
            
                | 48 |  |  | 		{ | 
            
                                                                        
                            
            
                                    
            
            
                | 49 |  |  | 			$stream = new RotatingFileHandler($logger_path, $this->max_logger_files, $debug_level); | 
            
                                                                        
                            
            
                                    
            
            
                | 50 |  |  | 			$this->pushHandler($stream); | 
            
                                                                        
                            
            
                                    
            
            
                | 51 |  |  | 			 | 
            
                                                                        
                            
            
                                    
            
            
                | 52 |  |  | 			$this->main_logger_url =  $stream->getUrl(); | 
            
                                                                        
                            
            
                                    
            
            
                | 53 |  |  | 		} | 
            
                                                                        
                            
            
                                    
            
            
                | 54 |  |  | 			 | 
            
                                                                        
                            
            
                                    
            
            
                | 55 |  |  | 		if($hash and $logger_path_tmp) | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 56 |  |  | 			$this->pushHandler(new StreamHandler($logger_path_tmp, $debug_level)); | 
            
                                                                        
                            
            
                                    
            
            
                | 57 |  |  | 		 | 
            
                                                                        
                            
            
                                    
            
            
                | 58 |  |  | 		return $this; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 59 |  |  | 	} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  | 	 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  | 	function get_main_logger_url() | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 |  |  | 	{ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 |  |  | 		return $this->main_logger_url; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 |  |  | 	} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 |  |  | 	 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  | 	function getLastDebugLines($totalLines = 200)  | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  | 	{ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  | 		$lines = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  | 		 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  | 		//if(!file_exists($this->logger_path) or !is_readable($this->logger_path)) | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  | 		if(!file_exists($this->main_logger_url) or !is_readable($this->main_logger_url)) | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  | 			return false; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 |  |  | 		 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 |  |  | 		//$fp = fopen($this->logger_path, 'r'); | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 75 |  |  | 		$fp = fopen($this->main_logger_url, 'r'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 76 |  |  | 		fseek($fp, -1, SEEK_END); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 77 |  |  | 		$pos = ftell($fp); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 78 |  |  | 		$lastLine = ""; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 79 |  |  | 		 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 80 |  |  | 		// Loop backword until we have our lines or we reach the start | 
            
                                                                                                            
                            
            
                                    
            
            
                | 81 |  |  | 		while($pos > 0 && count($lines) < $totalLines) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 82 |  |  | 		 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 83 |  |  | 		$C = fgetc($fp); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 84 |  |  | 		if($C == "\n") { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 85 |  |  | 		  // skip empty lines | 
            
                                                                                                            
                            
            
                                    
            
            
                | 86 |  |  | 		  if(trim($lastLine) != "") { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 87 |  |  | 			$lines[] = $lastLine; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 88 |  |  | 		  } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 89 |  |  | 		  $lastLine = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 90 |  |  | 		} else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 91 |  |  | 		  $lastLine = $C.$lastLine; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 92 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 93 |  |  | 		fseek($fp, $pos--); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 94 |  |  | 		} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 95 |  |  | 		 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 96 |  |  | 		$lines = array_reverse($lines); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 97 |  |  | 		 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 98 |  |  | 		return $lines; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 99 |  |  | 	} | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 100 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 101 |  |  |  | 
            
                        
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.