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
|
||||
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
|
|
@ -80,6 +80,7 @@ class StdOutput {
|
|||
|
||||
function resetParams(?array $params=null): void {
|
||||
$output = cl::get($params, "output");
|
||||
$maskErrors = null;
|
||||
$color = cl::get($params, "color");
|
||||
$filterTags = cl::get($params, "filter_tags");
|
||||
$indent = cl::get($params, "indent");
|
||||
|
@ -92,7 +93,10 @@ class StdOutput {
|
|||
$outf = STDERR;
|
||||
} elseif (!is_resource($output)) {
|
||||
# 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");
|
||||
if ($outf === false) {
|
||||
$error = error_get_last();
|
||||
|
@ -105,6 +109,7 @@ class StdOutput {
|
|||
$outf = $output;
|
||||
}
|
||||
$this->outf = $outf;
|
||||
$this->maskErrors = $maskErrors;
|
||||
if ($color === null) $color = stream_isatty($outf);
|
||||
if ($flush === null) $flush = false;
|
||||
}
|
||||
|
@ -117,6 +122,9 @@ class StdOutput {
|
|||
/** @var resource */
|
||||
protected $outf;
|
||||
|
||||
/** @var bool faut-il masquer les erreurs d'écriture? */
|
||||
protected $maskErrors;
|
||||
|
||||
/** @var bool faut-il autoriser la sortie en couleur? */
|
||||
protected $color;
|
||||
|
||||
|
@ -220,14 +228,26 @@ class StdOutput {
|
|||
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 {
|
||||
$outf = $this->outf;
|
||||
foreach ($lines as $line) {
|
||||
if ($indent !== null) fwrite($outf, $indent);
|
||||
fwrite($outf, $line);
|
||||
if ($addNl) fwrite($outf, "\n");
|
||||
if ($indent !== null) $this->_fwrite($outf, $indent);
|
||||
$this->_fwrite($outf, $line);
|
||||
if ($addNl) $this->_fwrite($outf, "\n");
|
||||
}
|
||||
if ($this->flush) fflush($outf);
|
||||
if ($this->flush) @fflush($outf);
|
||||
}
|
||||
|
||||
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