-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_log.php
More file actions
87 lines (69 loc) · 2.1 KB
/
Copy path_log.php
File metadata and controls
87 lines (69 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
declare(strict_types=1);
/*
* This file is part of the QuidPHP package <https://quidphp.com>
* Author: Pierre-Philippe Emond <emondpph@gmail.com>
* License: https://github.com/quidphp/main/blob/master/LICENSE
*/
namespace Quid\Main;
use Quid\Base;
// _log
// trait that provides a required method to allow logging with the object
trait _log
{
// queue
protected static int $queue = 0; // nombre de logs queues pour la classe
protected static bool $logHad = false; // conserve s'il y a déjà eu un log pour la classe
// logHad
// indique que la classe a loggé quelque chose
final protected static function logHad():void
{
static::$logHad = true;
}
// logShouldAfter
// retourne vrai s'il faut trim le log
final protected static function logShouldAfter():bool
{
return static::$queue === 0 && static::$logHad === true;
}
// logCloseDownCliNow
// permet de logger maintenant si on est en cli, sinon envoie en closedown
final public static function logCloseDownCliNow(...$values):void
{
if(Base\Server::isCli())
static::log(...$values);
else
static::logCloseDown(...$values);
}
// logCloseDown
// fait un log au close down
final public static function logCloseDown(...$values):void
{
static::logClosureCloseDown(function() use($values) {
static::log(...$values);
});
}
// logClosureCloseDown
// queue l'insertion d'une nouvelle entrée du log au closeDown
// lance logTrim si c'est le dernier élément de la queue
protected static function logClosureCloseDown(\Closure $closure):void
{
Base\Response::onCloseDown(function() use($closure) {
$closure();
if(static::$queue > 0)
{
static::$queue--;
static::logAfter();
}
});
static::$queue++;
}
// logAfter
// code à lancer après la création du log
public static function logAfter():void
{
if(static::logShouldAfter())
static::logTrim();
}
}
?>