modifs.mineures sans commentaires
This commit is contained in:
parent
9a1f0ae25e
commit
1c5674558b
|
@ -2,5 +2,7 @@
|
||||||
|
|
||||||
* [ ] possibilité de paramétrer le nom du fichier destination pour faire une
|
* [ ] possibilité de paramétrer le nom du fichier destination pour faire une
|
||||||
rotation des logs
|
rotation des logs
|
||||||
|
* [ ] lors de la rotation, si l'ouverture du nouveau fichier échoue, continuer
|
||||||
|
à écrire dans l'ancien fichier
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -80,6 +80,7 @@ class StdOutput {
|
||||||
|
|
||||||
function resetParams(?array $params=null): void {
|
function resetParams(?array $params=null): void {
|
||||||
$output = cl::get($params, "output");
|
$output = cl::get($params, "output");
|
||||||
|
$maskErrors = null;
|
||||||
$color = cl::get($params, "color");
|
$color = cl::get($params, "color");
|
||||||
$filterTags = cl::get($params, "filter_tags");
|
$filterTags = cl::get($params, "filter_tags");
|
||||||
$indent = cl::get($params, "indent");
|
$indent = cl::get($params, "indent");
|
||||||
|
@ -92,7 +93,10 @@ class StdOutput {
|
||||||
$outf = STDERR;
|
$outf = STDERR;
|
||||||
} elseif (!is_resource($output)) {
|
} elseif (!is_resource($output)) {
|
||||||
# si $outf est un nom de fichier, vérifier que l'ouverture se fait sans
|
# si $outf est un nom de fichier, vérifier que l'ouverture se fait sans
|
||||||
# erreur. à partir de là, plus aucune gestion d'erreur n'est faite
|
# erreur. à partir de là, plus aucune gestion d'erreur n'est faite, à
|
||||||
|
# part afficher les erreurs d'écriture la première fois qu'elles se
|
||||||
|
# produisent
|
||||||
|
$maskErrors = false;
|
||||||
$outf = @fopen($output, "ab");
|
$outf = @fopen($output, "ab");
|
||||||
if ($outf === false) {
|
if ($outf === false) {
|
||||||
$error = error_get_last();
|
$error = error_get_last();
|
||||||
|
@ -105,6 +109,7 @@ class StdOutput {
|
||||||
$outf = $output;
|
$outf = $output;
|
||||||
}
|
}
|
||||||
$this->outf = $outf;
|
$this->outf = $outf;
|
||||||
|
$this->maskErrors = $maskErrors;
|
||||||
if ($color === null) $color = stream_isatty($outf);
|
if ($color === null) $color = stream_isatty($outf);
|
||||||
if ($flush === null) $flush = false;
|
if ($flush === null) $flush = false;
|
||||||
}
|
}
|
||||||
|
@ -117,6 +122,9 @@ class StdOutput {
|
||||||
/** @var resource */
|
/** @var resource */
|
||||||
protected $outf;
|
protected $outf;
|
||||||
|
|
||||||
|
/** @var bool faut-il masquer les erreurs d'écriture? */
|
||||||
|
protected $maskErrors;
|
||||||
|
|
||||||
/** @var bool faut-il autoriser la sortie en couleur? */
|
/** @var bool faut-il autoriser la sortie en couleur? */
|
||||||
protected $color;
|
protected $color;
|
||||||
|
|
||||||
|
@ -220,14 +228,26 @@ class StdOutput {
|
||||||
return $lines;
|
return $lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function _fwrite($outf, string $data): void {
|
||||||
|
if ($this->maskErrors === null) {
|
||||||
|
# masquer les erreurs d'écriture en permanence
|
||||||
|
@fwrite($outf, $data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
# masquer uniquement la première erreur, jusqu'à ce que l'erreur disparaisse
|
||||||
|
if ($this->maskErrors) $r = @fwrite($outf, $data);
|
||||||
|
else $r = fwrite($outf, $data);
|
||||||
|
$this->maskErrors = $r === false;
|
||||||
|
}
|
||||||
|
|
||||||
function writeLines($indent, array $lines, bool $addNl=false): void {
|
function writeLines($indent, array $lines, bool $addNl=false): void {
|
||||||
$outf = $this->outf;
|
$outf = $this->outf;
|
||||||
foreach ($lines as $line) {
|
foreach ($lines as $line) {
|
||||||
if ($indent !== null) fwrite($outf, $indent);
|
if ($indent !== null) $this->_fwrite($outf, $indent);
|
||||||
fwrite($outf, $line);
|
$this->_fwrite($outf, $line);
|
||||||
if ($addNl) fwrite($outf, "\n");
|
if ($addNl) $this->_fwrite($outf, "\n");
|
||||||
}
|
}
|
||||||
if ($this->flush) fflush($outf);
|
if ($this->flush) @fflush($outf);
|
||||||
}
|
}
|
||||||
|
|
||||||
function write(...$values): void {
|
function write(...$values): void {
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
/output-forever.log
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/php
|
||||||
|
<?php
|
||||||
|
require(__DIR__.'/../vendor/autoload.php');
|
||||||
|
|
||||||
|
use nulib\UserException;
|
||||||
|
use nur\sery\output\std\StdMessenger;
|
||||||
|
use nur\sery\output\msg;
|
||||||
|
|
||||||
|
msg::set_messenger(new StdMessenger(), new StdMessenger([
|
||||||
|
"output" => "output-forever.log",
|
||||||
|
]));
|
||||||
|
|
||||||
|
$index = 1;
|
||||||
|
while (true) {
|
||||||
|
msg::info("info $index");
|
||||||
|
$index++;
|
||||||
|
sleep(1);
|
||||||
|
}
|
Loading…
Reference in New Issue