Compare commits

..

7 commits
dev ... master

Author SHA1 Message Date
netkas
dc9b831534 Fixed FileLogging issue by setting the write permission to 0666 for the log file if it doesn't exist. 2025-01-13 13:24:38 -05:00
netkas
49bb26a063 Bumped version 2025-01-10 04:24:50 -05:00
netkas
9958bdd205 Prevent file logging in web environments. 2025-01-10 04:24:45 -05:00
netkas
0507fbb9d1 Refactor file locking to return status and handle failure. 2025-01-09 15:42:44 -05:00
netkas
808baec53c Bumped version to 2.0.5 2025-01-09 15:39:52 -05:00
netkas
284cd4f52a Minor bug fix 2024-12-04 00:29:23 -05:00
netkas
359afdcbe0 Bug fix, bumped to version 2.0.4 2024-12-04 00:26:03 -05:00
5 changed files with 56 additions and 12 deletions

View file

@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.0.7] - 2025-01-13
This update introduces a minor fix
### Fixed
- Fixed FileLogging issue by setting the write permission to 0666 for the log file if it doesn't exist.
## [2.0.6] - 2025-01-10
This update introduces a minor change
### Changed
- File logging is disabled for web environments due to instability in file locking, until a better solution is found.
## [2.0.5] - 2025-01-09
This update introduces a minor bug fix
### Fixed
- Refactor file locking to return status and handle failure.
## [2.0.4] - 2024-12-04
This update introduces a minor bug fix
## [2.0.3] - 2024-11-05 ## [2.0.3] - 2024-11-05
This update introduces a minor bug fix This update introduces a minor bug fix

View file

@ -20,7 +20,7 @@
"package": "net.nosial.loglib", "package": "net.nosial.loglib",
"company": "Nosial", "company": "Nosial",
"copyright": "Copyright (c) 2022-2023 Nosial", "copyright": "Copyright (c) 2022-2023 Nosial",
"version": "2.0.3", "version": "2.0.7",
"uuid": "de1deca6-7b65-11ed-a8b0-a172264634d8" "uuid": "de1deca6-7b65-11ed-a8b0-a172264634d8"
}, },
"build": { "build": {

View file

@ -32,8 +32,11 @@
// Create the file if it doesn't exist // Create the file if it doesn't exist
if (!file_exists($filePath)) if (!file_exists($filePath))
{ {
$this->fileHandle = fopen($filePath, 'w'); // Create the file
fclose($this->fileHandle); touch($filePath);
// Set the file permissions to 0666
chmod($filePath, 0666);
} }
} }
@ -42,12 +45,12 @@
* *
* @throws RuntimeException if unable to open or lock the file. * @throws RuntimeException if unable to open or lock the file.
*/ */
private function lock(): void private function lock(): bool
{ {
$this->fileHandle = fopen($this->filePath, 'a'); $this->fileHandle = @fopen($this->filePath, 'a');
if ($this->fileHandle === false) if ($this->fileHandle === false)
{ {
throw new RuntimeException("Unable to open the file: " . $this->filePath); return false;
} }
// Keep trying to acquire the lock until it succeeds // Keep trying to acquire the lock until it succeeds
@ -64,6 +67,8 @@
flock($this->fileHandle, LOCK_UN); flock($this->fileHandle, LOCK_UN);
$this->lock(); $this->lock();
} }
return true;
} }
/** /**
@ -87,7 +92,11 @@
*/ */
public function append(string $data): void public function append(string $data): void
{ {
$this->lock(); if(!$this->lock())
{
// Do not proceed if the file cannot be locked
return;
}
if ($this->fileHandle !== false) if ($this->fileHandle !== false)
{ {

View file

@ -24,7 +24,6 @@ class ConsoleLogging implements LogHandlerInterface
*/ */
public static function handle(Application $application, Event $event): void public static function handle(Application $application, Event $event): void
{ {
// Check if the application is running in a CLI environment, if not, return
if(!Utilities::runningInCli()) if(!Utilities::runningInCli())
{ {
return; return;
@ -207,10 +206,13 @@ class ConsoleLogging implements LogHandlerInterface
{ {
print('Stack Trace:' . PHP_EOL); print('Stack Trace:' . PHP_EOL);
foreach($trace as $item) foreach($trace as $item)
{
if(isset($item['file']) && isset($item['line']))
{ {
print( ' - ' . self::color($item['file'], ConsoleColors::RED) . ':' . $item['line'] . PHP_EOL); print( ' - ' . self::color($item['file'], ConsoleColors::RED) . ':' . $item['line'] . PHP_EOL);
} }
} }
}
if($exception->getPrevious() !== null) if($exception->getPrevious() !== null)
{ {

View file

@ -88,9 +88,9 @@ class FileLogging implements LogHandlerInterface
$logging_file = $logging_directory . DIRECTORY_SEPARATOR . Utilities::sanitizeFileName($application->getApplicationName()) . '-' . date('Y-m-d') . '.log'; $logging_file = $logging_directory . DIRECTORY_SEPARATOR . Utilities::sanitizeFileName($application->getApplicationName()) . '-' . date('Y-m-d') . '.log';
if(!file_exists($logging_file)) if(!file_exists($logging_file) && !@touch($logging_file))
{ {
touch($logging_file); throw new RuntimeException(sprintf("Cannot write to %s due to insufficient permissions", $logging_file));
} }
return $logging_file; return $logging_file;
@ -132,10 +132,13 @@ class FileLogging implements LogHandlerInterface
{ {
$output .= 'Stack Trace:' . PHP_EOL; $output .= 'Stack Trace:' . PHP_EOL;
foreach($trace as $item) foreach($trace as $item)
{
if(isset($item['file']) && isset($item['line']))
{ {
$output .= ' - ' . $item['file'] . ':' . $item['line'] . PHP_EOL; $output .= ' - ' . $item['file'] . ':' . $item['line'] . PHP_EOL;
} }
} }
}
if($exception->getPrevious() !== null) if($exception->getPrevious() !== null)
{ {