Implemented a proper error_logger.
This commit is contained in:
parent
d79c382843
commit
3a52828ae4
@ -36,8 +36,8 @@
|
|||||||
|
|
||||||
return array(
|
return array(
|
||||||
'fuzeworks_error_reporting' => true,
|
'fuzeworks_error_reporting' => true,
|
||||||
'tracy_error_reporting' => true,
|
|
||||||
'php_error_reporting' => false,
|
'php_error_reporting' => false,
|
||||||
'log_to_file' => false,
|
'log_errors_to_file' => true,
|
||||||
|
'log_last_request_to_file' => false,
|
||||||
'logger_template' => 'logger_default',
|
'logger_template' => 'logger_default',
|
||||||
);
|
);
|
@ -36,7 +36,6 @@
|
|||||||
|
|
||||||
namespace FuzeWorks;
|
namespace FuzeWorks;
|
||||||
|
|
||||||
use FuzeWorks\Exception\ConfiguratorException;
|
|
||||||
use FuzeWorks\Exception\Exception;
|
use FuzeWorks\Exception\Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -66,11 +65,18 @@ class Logger {
|
|||||||
private static $print_to_screen = false;
|
private static $print_to_screen = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* whether to output the log to a file after FuzeWorks has run.
|
* whether to output the log of the last entire request to a file after FuzeWorks has run.
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
private static $log_to_file = false;
|
private static $log_last_request = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to output the log of all errors to a file after FuzeWorks has run
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
private static $log_errors_to_file = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The template to use when parsing the debug log
|
* The template to use when parsing the debug log
|
||||||
@ -117,10 +123,6 @@ class Logger {
|
|||||||
set_error_handler(array('\FuzeWorks\Logger', 'errorHandler'), E_ALL);
|
set_error_handler(array('\FuzeWorks\Logger', 'errorHandler'), E_ALL);
|
||||||
set_Exception_handler(array('\FuzeWorks\Logger', 'exceptionHandler'));
|
set_Exception_handler(array('\FuzeWorks\Logger', 'exceptionHandler'));
|
||||||
}
|
}
|
||||||
elseif ($cfg_error->tracy_error_reporting == true && self::$useTracy === true)
|
|
||||||
{
|
|
||||||
// Register with tracy
|
|
||||||
}
|
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
|
|
||||||
// Set PHP error reporting
|
// Set PHP error reporting
|
||||||
@ -131,7 +133,8 @@ class Logger {
|
|||||||
|
|
||||||
// Set the environment variables
|
// Set the environment variables
|
||||||
self::$debug = (ENVIRONMENT === 'DEVELOPMENT');
|
self::$debug = (ENVIRONMENT === 'DEVELOPMENT');
|
||||||
self::$log_to_file = $cfg_error->log_to_file;
|
self::$log_last_request = $cfg_error->log_last_request_to_file;
|
||||||
|
self::$log_errors_to_file = $cfg_error->log_errors_to_file;
|
||||||
self::$logger_template = $cfg_error->logger_template;
|
self::$logger_template = $cfg_error->logger_template;
|
||||||
self::newLevel('Logger Initiated');
|
self::newLevel('Logger Initiated');
|
||||||
|
|
||||||
@ -159,10 +162,13 @@ class Logger {
|
|||||||
self::logToScreen();
|
self::logToScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self::$log_to_file == true)
|
if (self::$log_last_request == true)
|
||||||
{
|
{
|
||||||
self::logToFile();
|
self::logLastRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self::$log_errors_to_file == true)
|
||||||
|
self::logErrorsToFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -273,18 +279,38 @@ class Logger {
|
|||||||
* Output the entire log to a file. Used for debugging problems with your code.
|
* Output the entire log to a file. Used for debugging problems with your code.
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*/
|
*/
|
||||||
public static function logToFile()
|
public static function logLastRequest()
|
||||||
{
|
{
|
||||||
ob_start(function () {});
|
ob_start(function () {});
|
||||||
$logs = self::$Logs;
|
$logs = self::$Logs;
|
||||||
require(dirname(__DIR__) . DS . 'Layout' . DS . 'layout.logger_cli.php');
|
require(dirname(__DIR__) . DS . 'Layout' . DS . 'layout.logger_file.php');
|
||||||
$contents = ob_get_clean();
|
$contents = ob_get_clean();
|
||||||
$file = Core::$logDir . DS . 'log_latest.php';
|
$file = Core::$logDir . DS . 'fwlog_request.log';
|
||||||
if (is_writable(dirname($file))) {
|
if (is_writable(dirname($file))) {
|
||||||
file_put_contents($file, '<?php ' . $contents);
|
file_put_contents($file, $contents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Output all erros to a file. Used for tracking all errors in FuzeWorks and associated code
|
||||||
|
* @codeCoverageIgnore
|
||||||
|
*/
|
||||||
|
public static function logErrorsToFile()
|
||||||
|
{
|
||||||
|
ob_start(function() {});
|
||||||
|
$logs = [];
|
||||||
|
foreach (self::$Logs as $log)
|
||||||
|
{
|
||||||
|
if ($log['type'] === 'ERROR')
|
||||||
|
$logs[] = $log;
|
||||||
|
}
|
||||||
|
require(dirname(__DIR__) . DS . 'Layout' . DS . 'layout.logger_file.php');
|
||||||
|
$contents = ob_get_clean();
|
||||||
|
$file = Core::$logDir . DS . 'fwlog_errors.log';
|
||||||
|
if (is_writable(dirname($file)))
|
||||||
|
file_put_contents($file, $contents, FILE_APPEND | LOCK_EX);
|
||||||
|
}
|
||||||
|
|
||||||
/* =========================================LOGGING METHODS============================================================== */
|
/* =========================================LOGGING METHODS============================================================== */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
52
src/Layout/layout.logger_file.php
Normal file
52
src/Layout/layout.logger_file.php
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* FuzeWorks Framework Core.
|
||||||
|
*
|
||||||
|
* The FuzeWorks PHP FrameWork
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013-2018 TechFuze
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*
|
||||||
|
* @author TechFuze
|
||||||
|
* @copyright Copyright (c) 2013 - 2018, Techfuze. (http://techfuze.net)
|
||||||
|
* @license https://opensource.org/licenses/MIT MIT License
|
||||||
|
*
|
||||||
|
* @link http://techfuze.net/fuzeworks
|
||||||
|
* @since Version 1.2.0
|
||||||
|
*
|
||||||
|
* @version Version 1.2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
$mask = "|%5s |%-95s |\n";
|
||||||
|
$id = 1;
|
||||||
|
|
||||||
|
if (!empty($logs))
|
||||||
|
printf($mask, $id, ' REQUEST ' . date('Y-m-d H:i') . '-'.substr(sha1(uniqid()), 0, 8).'');
|
||||||
|
|
||||||
|
foreach ($logs as $log) {
|
||||||
|
$id++;
|
||||||
|
|
||||||
|
$string = '';
|
||||||
|
$string .= '[ERROR]' . ' - ';
|
||||||
|
$string .= $log['message'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($logs))
|
||||||
|
printf($mask. $id);
|
@ -129,10 +129,10 @@ class configuratorTest extends CoreTestAbstract
|
|||||||
|
|
||||||
// Create a log and write off to file
|
// Create a log and write off to file
|
||||||
Logger::log('Test log for the file');
|
Logger::log('Test log for the file');
|
||||||
Logger::logToFile();
|
Logger::logLastRequest();
|
||||||
|
|
||||||
// Assert if exist
|
// Assert if exist
|
||||||
$this->assertTrue($fs->hasChild('log_latest.php'));
|
$this->assertTrue($fs->hasChild('fwlog_request.log'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user