Skip to content

Commit 10a0dd4

Browse files
authored
Merge pull request #52 from saulens22/main
Laravel 10 support
2 parents 516c165 + 537eb88 commit 10a0dd4

File tree

9 files changed

+70
-74
lines changed

9 files changed

+70
-74
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ composer.lock
1414
coverage.xml
1515
.phpstorm.meta.php
1616
_ide_helper.php
17-
_ide_helper_models.php.php
17+
_ide_helper_models.php.php
18+
.phpunit.result.cache

composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
}
1212
],
1313
"require": {
14-
"php": ">=7.1",
15-
"illuminate/support": ">=5.6 <10",
16-
"monolog/monolog": "^2"
14+
"php": "^8.1",
15+
"illuminate/support": "^10.0"
1716
},
1817
"require-dev": {
19-
"orchestra/testbench": ">=5.0 <8",
20-
"mockery/mockery": ">=1.0",
21-
"nunomaduro/collision": ">=5.10 <7",
22-
"jenssegers/mongodb": "^3.8"
18+
"ext-mongodb": "*",
19+
"orchestra/testbench": "^8.0",
20+
"mockery/mockery": "^1.5",
21+
"nunomaduro/collision": "^7.0",
22+
"jenssegers/mongodb": "dev-master"
2323
},
2424
"suggest": {
2525
"jenssegers/mongodb": "Adds support for MongoDB in Laravel/Eloquent"

src/Jobs/SaveNewLogEvent.php

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,21 @@
66
use Illuminate\Bus\Queueable;
77
use Illuminate\Queue\InteractsWithQueue;
88
use Illuminate\Contracts\Queue\ShouldQueue;
9+
use Monolog\LogRecord;
910

1011
class SaveNewLogEvent implements ShouldQueue
1112
{
1213
use InteractsWithQueue, Queueable;
1314

14-
/**
15-
* @var object
16-
*/
17-
protected $logToDb;
18-
19-
/**
20-
* @var array
21-
*/
22-
protected $record;
23-
2415
/**
2516
* Create a new job instance.
2617
*
2718
* @param object $logToDb
28-
* @param array $record
19+
* @param \Monolog\LogRecord $record
2920
* @return void
3021
*/
31-
public function __construct($logToDb, $record)
22+
public function __construct(protected $logToDb, protected LogRecord $record)
3223
{
33-
$this->logToDb = $logToDb;
34-
$this->record = $record;
3524
}
3625

3726
/**

src/LogToDB.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use danielme85\LaravelLogToDB\Jobs\SaveNewLogEvent;
66
use danielme85\LaravelLogToDB\Models\DBLog;
77
use danielme85\LaravelLogToDB\Models\DBLogMongoDB;
8+
use Monolog\LogRecord;
89

910
/**
1011
* Class LogToDb
@@ -137,18 +138,32 @@ public function getModel()
137138
/**
138139
* Create a Eloquent Model
139140
*
140-
* @param $record
141+
* @param \Monolog\LogRecord $record
141142
* @return bool success
142143
*/
143-
public function newFromMonolog(array $record)
144+
public function newFromMonolog(LogRecord $record)
144145
{
145146
$detailed = $this->getConfig('detailed');
146147

147148
if (!empty($this->connection)) {
148149
if ($detailed && !empty($record['context']) && !empty($record['context']['exception'])) {
149-
$record['context'] = self::parseIfException($record['context'], true);
150+
$record = new LogRecord(
151+
$record->datetime,
152+
$record->channel,
153+
$record->level,
154+
$record->message,
155+
self::parseIfException($record->context, true),
156+
$record->extra
157+
);
150158
} else if (!$detailed) {
151-
$record['context'] = null;
159+
$record = new LogRecord(
160+
$record->datetime,
161+
$record->channel,
162+
$record->level,
163+
$record->message,
164+
[],
165+
$record->extra
166+
);
152167
}
153168
if (!empty($this->config['queue'])) {
154169
if (empty($this->config['queue_name']) && empty($this->config['queue_connection'])) {

src/LogToDbCustomLoggingHandler.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use Monolog\Formatter\LineFormatter;
77
use Monolog\Handler\AbstractProcessingHandler;
88
use Monolog\Handler\ErrorLogHandler;
9-
use Monolog\Logger;
9+
use Monolog\LogRecord;
1010

1111
/**
1212
* Class LogToDbHandler
@@ -52,27 +52,30 @@ function __construct(array $config,
5252
/**
5353
* Write the Log
5454
*
55-
* @param array $record
55+
* @param \Monolog\LogRecord $record
5656
* @throws DBLogException
5757
*/
58-
protected function write(array $record): void
58+
protected function write(LogRecord $record): void
5959
{
6060
try {
6161
$log = new LogToDB($this->config);
6262
$log->newFromMonolog($record);
6363
} catch (\Exception $e) {
64-
$this->emergencyLog([
65-
'message' => 'There was an error while trying to write the log to a DB, log record pushed to error_log()',
66-
'level' => Logger::CRITICAL,
67-
'level_name' => 'critical',
68-
'context' => LogToDB::parseIfException(['exception' => $e]),
69-
'extra' => []
70-
]);
64+
65+
$this->emergencyLog(new LogRecord(
66+
datetime: new \Monolog\DateTimeImmutable(true),
67+
channel: '',
68+
level: \Monolog\Level::Critical,
69+
message: 'There was an error while trying to write the log to a DB, log record pushed to error_log()',
70+
context: LogToDB::parseIfException(['exception' => $e]),
71+
extra: []
72+
));
73+
7174
$this->emergencyLog($record);
7275
}
7376
}
7477

75-
protected function emergencyLog(array $record)
78+
protected function emergencyLog(LogRecord $record)
7679
{
7780
$errorHandler = new ErrorLogHandler();
7881
$errorHandler->setFormatter(new LineFormatter('%level_name%: %message% %context%'));

src/Models/LogToDbCreateObject.php

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace danielme85\LaravelLogToDB\Models;
44

5+
use Monolog\LogRecord;
6+
57
/**
68
* Trait LogToDbCreateObject
79
*
@@ -12,33 +14,19 @@ trait LogToDbCreateObject
1214
/**
1315
* Create a new log object
1416
*
15-
* @param array $record
17+
* @param \Monolog\LogRecord $record
1618
*
1719
* @return mixed
1820
*/
19-
public function generate(array $record)
21+
public function generate(LogRecord $record)
2022
{
21-
if (isset($record['message'])) {
22-
$this->message = $record['message'];
23-
}
24-
if (!empty($record['context'])) {
25-
$this->context = $record['context'];
26-
}
27-
if (isset($record['level'])) {
28-
$this->level = $record['level'];
29-
}
30-
if (isset($record['level_name'])) {
31-
$this->level_name = $record['level_name'];
32-
}
33-
if (isset($record['channel'])) {
34-
$this->channel = $record['channel'];
35-
}
36-
if (isset($record['datetime'])) {
37-
$this->datetime = $record['datetime'];
38-
}
39-
if (!empty($record['extra'])) {
40-
$this->extra = $record['extra'];
41-
}
23+
$this->message = $record->message;
24+
$this->context = $record->context;
25+
$this->level = $record->level->value;
26+
$this->level_name = $record->level->getName();
27+
$this->channel = $record->channel;
28+
$this->datetime = $record->datetime;
29+
$this->extra = $record->extra;
4230
$this->unix_time = time();
4331

4432
return $this;
@@ -185,5 +173,4 @@ public function removeOlderThan(string $datetime)
185173

186174
return false;
187175
}
188-
189176
}

src/Processors/PhpVersionProcessor.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace danielme85\LaravelLogToDB\Processors;
44

5+
use Monolog\LogRecord;
56
use Monolog\Processor\ProcessorInterface;
67

78
/**
@@ -11,9 +12,9 @@
1112
class PhpVersionProcessor implements ProcessorInterface
1213
{
1314
/**
14-
* @return array The processed record
15+
* @return \Monolog\LogRecord The processed record
1516
*/
16-
public function __invoke(array $record) {
17+
public function __invoke(LogRecord $record) {
1718
$record['extra']['php_version'] = phpversion();
1819

1920
return $record;

tests/FailureTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function testEmergencyFailure()
5050
ini_set('error_log', $backup);
5151

5252
$this->assertStringContainsString(
53-
'critical: There was an error while trying to write the log to a DB',
53+
'CRITICAL: There was an error while trying to write the log to a DB',
5454
$result
5555
);
5656
$this->assertStringContainsString(

tests/LogToDbTest.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Support\Facades\Log;
66
use Illuminate\Support\Facades\Queue;
77
use danielme85\LaravelLogToDB\Jobs\SaveNewLogEvent;
8+
use Monolog\LogRecord;
89

910
class LogToDbTest extends Orchestra\Testbench\TestCase
1011
{
@@ -311,16 +312,15 @@ public function testQueue()
311312
public function testSaveNewLogEventJob()
312313
{
313314
$logToDb = new LogToDB();
314-
$record = [
315-
'message' => 'job-test',
316-
'context' => [],
317-
'level' => 200,
318-
'level_name' => 'INFO',
319-
'channel' => 'local',
320-
'datetime' => new Monolog\DateTimeImmutable(true),
321-
'extra' => [],
322-
'formatted' => "[2019-10-04T17:26:38.446827+00:00] local.INFO: test [] []\n"
323-
];
315+
$record = new LogRecord(
316+
datetime: new \Monolog\DateTimeImmutable(true),
317+
message: 'job-test',
318+
context: [],
319+
level: \Monolog\Level::Info,
320+
channel: 'local',
321+
extra: [],
322+
formatted: "[2019-10-04T17:26:38.446827+00:00] local.INFO: test [] []\n"
323+
);
324324

325325
$job = new SaveNewLogEvent($logToDb, $record);
326326
$job->handle();

0 commit comments

Comments
 (0)