Skip to content
Extraits de code Groupes Projets
Valider e7474e66 rédigé par Matthieu Napoli's avatar Matthieu Napoli
Parcourir les fichiers

#6622 Logger refactoring: implement Monolog's FormatterInterface

parent 0794be0d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -45,7 +45,10 @@ ...@@ -45,7 +45,10 @@
"piwik/device-detector": "~2.0", "piwik/device-detector": "~2.0",
"piwik/decompress": "~0.1.1", "piwik/decompress": "~0.1.1",
"piwik/network": "~0.1.0", "piwik/network": "~0.1.0",
"mnapoli/php-di": "5.0.x-dev" "mnapoli/php-di": "5.0.x-dev",
"psr/log": "~1.0",
"monolog/monolog": "~1.11",
"symfony/monolog-bridge": "~2.5"
}, },
"require-dev": { "require-dev": {
"aws/aws-sdk-php": "2.7.1", "aws/aws-sdk-php": "2.7.1",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "92499fc432a629fefcd5c1b912e44d9c", "hash": "ed64c8df41ea550e2c0b78424573310e",
"packages": [ "packages": [
{ {
"name": "container-interop/container-interop", "name": "container-interop/container-interop",
...@@ -354,6 +354,78 @@ ...@@ -354,6 +354,78 @@
], ],
"time": "2014-08-21 08:20:45" "time": "2014-08-21 08:20:45"
}, },
{
"name": "monolog/monolog",
"version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
"reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "~2.4, >2.4.8",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"phpunit/phpunit": "~3.7.0",
"raven/raven": "~0.5",
"ruflin/elastica": "0.90.*",
"videlalvaro/php-amqplib": "~2.4"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"raven/raven": "Allow sending log messages to a Sentry server",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2014-09-30 13:30:58"
},
{ {
"name": "mustangostang/spyc", "name": "mustangostang/spyc",
"version": "0.5.1", "version": "0.5.1",
...@@ -469,16 +541,16 @@ ...@@ -469,16 +541,16 @@
}, },
{ {
"name": "piwik/device-detector", "name": "piwik/device-detector",
"version": "2.6", "version": "2.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/piwik/device-detector.git", "url": "https://github.com/piwik/device-detector.git",
"reference": "60831e80b45d296e19b07cde198fe8dff7311bec" "reference": "a76f214f01054d102352b9e4045491460c19d78a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/piwik/device-detector/zipball/60831e80b45d296e19b07cde198fe8dff7311bec", "url": "https://api.github.com/repos/piwik/device-detector/zipball/a76f214f01054d102352b9e4045491460c19d78a",
"reference": "60831e80b45d296e19b07cde198fe8dff7311bec", "reference": "a76f214f01054d102352b9e4045491460c19d78a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -512,7 +584,7 @@ ...@@ -512,7 +584,7 @@
"parser", "parser",
"useragent" "useragent"
], ],
"time": "2014-10-30 13:45:01" "time": "2014-11-25 21:41:24"
}, },
{ {
"name": "piwik/network", "name": "piwik/network",
...@@ -546,19 +618,57 @@ ...@@ -546,19 +618,57 @@
], ],
"time": "2014-10-23 03:30:23" "time": "2014-10-23 03:30:23"
}, },
{
"name": "psr/log",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
"shasum": ""
},
"type": "library",
"autoload": {
"psr-0": {
"Psr\\Log\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2012-12-21 11:40:51"
},
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v2.5.6", "version": "v2.6.0",
"target-dir": "Symfony/Component/Console", "target-dir": "Symfony/Component/Console",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/Console.git", "url": "https://github.com/symfony/Console.git",
"reference": "6f177fca24200a5b97aef5ce7a5c98124a0f0db0" "reference": "d3bac228fd7a2aac9193e241b239880b3ba39a10"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/Console/zipball/6f177fca24200a5b97aef5ce7a5c98124a0f0db0", "url": "https://api.github.com/repos/symfony/Console/zipball/d3bac228fd7a2aac9193e241b239880b3ba39a10",
"reference": "6f177fca24200a5b97aef5ce7a5c98124a0f0db0", "reference": "d3bac228fd7a2aac9193e241b239880b3ba39a10",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -566,16 +676,18 @@ ...@@ -566,16 +676,18 @@
}, },
"require-dev": { "require-dev": {
"psr/log": "~1.0", "psr/log": "~1.0",
"symfony/event-dispatcher": "~2.1" "symfony/event-dispatcher": "~2.1",
"symfony/process": "~2.1"
}, },
"suggest": { "suggest": {
"psr/log": "For using the console logger", "psr/log": "For using the console logger",
"symfony/event-dispatcher": "" "symfony/event-dispatcher": "",
"symfony/process": ""
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.5-dev" "dev-master": "2.6-dev"
} }
}, },
"autoload": { "autoload": {
...@@ -599,7 +711,65 @@ ...@@ -599,7 +711,65 @@
], ],
"description": "Symfony Console Component", "description": "Symfony Console Component",
"homepage": "http://symfony.com", "homepage": "http://symfony.com",
"time": "2014-10-05 13:57:04" "time": "2014-11-20 13:24:23"
},
{
"name": "symfony/monolog-bridge",
"version": "v2.6.0",
"target-dir": "Symfony/Bridge/Monolog",
"source": {
"type": "git",
"url": "https://github.com/symfony/MonologBridge.git",
"reference": "2ac99fc4a9846faf12152a61c3355f1041db881c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/MonologBridge/zipball/2ac99fc4a9846faf12152a61c3355f1041db881c",
"reference": "2ac99fc4a9846faf12152a61c3355f1041db881c",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.11",
"php": ">=5.3.3"
},
"require-dev": {
"symfony/console": "~2.3",
"symfony/event-dispatcher": "~2.2",
"symfony/http-kernel": "~2.2"
},
"suggest": {
"symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings. You need version ~2.3 of the console for it.",
"symfony/event-dispatcher": "Needed when using log messages in console commands",
"symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel."
},
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Bridge\\Monolog\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Monolog Bridge",
"homepage": "http://symfony.com",
"time": "2014-11-28 10:00:40"
}, },
{ {
"name": "tedivm/jshrink", "name": "tedivm/jshrink",
...@@ -945,16 +1115,16 @@ ...@@ -945,16 +1115,16 @@
}, },
{ {
"name": "phpseclib/phpseclib", "name": "phpseclib/phpseclib",
"version": "0.3.8", "version": "0.3.9",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpseclib/phpseclib.git", "url": "https://github.com/phpseclib/phpseclib.git",
"reference": "5085202f1f37769aae59f9711c423f28159c9b29" "reference": "c6e88ca6e81bc5a2d7161658e16a95b7ef8d6ad1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/5085202f1f37769aae59f9711c423f28159c9b29", "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c6e88ca6e81bc5a2d7161658e16a95b7ef8d6ad1",
"reference": "5085202f1f37769aae59f9711c423f28159c9b29", "reference": "c6e88ca6e81bc5a2d7161658e16a95b7ef8d6ad1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -1039,7 +1209,7 @@ ...@@ -1039,7 +1209,7 @@
"x.509", "x.509",
"x509" "x509"
], ],
"time": "2014-09-13 02:42:45" "time": "2014-11-10 03:08:59"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
...@@ -1290,16 +1460,16 @@ ...@@ -1290,16 +1460,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "4.3.4", "version": "4.3.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "23e4e0310f037aae873cc81b8658dbbb82878f71" "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/23e4e0310f037aae873cc81b8658dbbb82878f71", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2dab9d593997db4abcf58d0daf798eb4e9cecfe1",
"reference": "23e4e0310f037aae873cc81b8658dbbb82878f71", "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -1360,7 +1530,7 @@ ...@@ -1360,7 +1530,7 @@
"testing", "testing",
"xunit" "xunit"
], ],
"time": "2014-10-22 11:43:12" "time": "2014-11-11 10:11:09"
}, },
{ {
"name": "phpunit/phpunit-mock-objects", "name": "phpunit/phpunit-mock-objects",
...@@ -1685,17 +1855,17 @@ ...@@ -1685,17 +1855,17 @@
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
"version": "v2.5.6", "version": "v2.6.0",
"target-dir": "Symfony/Component/EventDispatcher", "target-dir": "Symfony/Component/EventDispatcher",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/EventDispatcher.git", "url": "https://github.com/symfony/EventDispatcher.git",
"reference": "804eb28dbbfba9ffdab21fe2066744906cea2212" "reference": "697331d4ac78668cf6d21a2bb009b3faae92814f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/804eb28dbbfba9ffdab21fe2066744906cea2212", "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/697331d4ac78668cf6d21a2bb009b3faae92814f",
"reference": "804eb28dbbfba9ffdab21fe2066744906cea2212", "reference": "697331d4ac78668cf6d21a2bb009b3faae92814f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -1704,7 +1874,8 @@ ...@@ -1704,7 +1874,8 @@
"require-dev": { "require-dev": {
"psr/log": "~1.0", "psr/log": "~1.0",
"symfony/config": "~2.0", "symfony/config": "~2.0",
"symfony/dependency-injection": "~2.0,<2.6.0", "symfony/dependency-injection": "~2.6",
"symfony/expression-language": "~2.6",
"symfony/stopwatch": "~2.2" "symfony/stopwatch": "~2.2"
}, },
"suggest": { "suggest": {
...@@ -1714,7 +1885,7 @@ ...@@ -1714,7 +1885,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.5-dev" "dev-master": "2.6-dev"
} }
}, },
"autoload": { "autoload": {
...@@ -1738,21 +1909,21 @@ ...@@ -1738,21 +1909,21 @@
], ],
"description": "Symfony EventDispatcher Component", "description": "Symfony EventDispatcher Component",
"homepage": "http://symfony.com", "homepage": "http://symfony.com",
"time": "2014-10-01 15:43:05" "time": "2014-11-28 10:00:40"
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v2.5.6", "version": "v2.6.0",
"target-dir": "Symfony/Component/Yaml", "target-dir": "Symfony/Component/Yaml",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/Yaml.git", "url": "https://github.com/symfony/Yaml.git",
"reference": "2d9f527449cabfa8543dd7fa3a466d6ae83d6726" "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/Yaml/zipball/2d9f527449cabfa8543dd7fa3a466d6ae83d6726", "url": "https://api.github.com/repos/symfony/Yaml/zipball/51c845cf3e4bfc182d1d5c05ed1c7338361d86f8",
"reference": "2d9f527449cabfa8543dd7fa3a466d6ae83d6726", "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -1761,7 +1932,7 @@ ...@@ -1761,7 +1932,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.5-dev" "dev-master": "2.6-dev"
} }
}, },
"autoload": { "autoload": {
...@@ -1785,7 +1956,7 @@ ...@@ -1785,7 +1956,7 @@
], ],
"description": "Symfony Yaml Component", "description": "Symfony Yaml Component",
"homepage": "http://symfony.com", "homepage": "http://symfony.com",
"time": "2014-10-01 05:50:18" "time": "2014-11-20 13:24:23"
} }
], ],
"aliases": [], "aliases": [],
......
...@@ -16,7 +16,7 @@ use Piwik\Log; ...@@ -16,7 +16,7 @@ use Piwik\Log;
*/ */
class AddRequestIdFormatter extends Formatter class AddRequestIdFormatter extends Formatter
{ {
public function format(array $record, Log $logger) public function format(array $record)
{ {
static $currentRequestKey; static $currentRequestKey;
...@@ -24,7 +24,7 @@ class AddRequestIdFormatter extends Formatter ...@@ -24,7 +24,7 @@ class AddRequestIdFormatter extends Formatter
$currentRequestKey = substr(Common::generateUniqId(), 0, 5); $currentRequestKey = substr(Common::generateUniqId(), 0, 5);
} }
$record = $this->next($record, $logger); $record = $this->next($record);
if (! is_string($record['message'])) { if (! is_string($record['message'])) {
return $record; return $record;
......
...@@ -18,12 +18,12 @@ use Piwik\Version; ...@@ -18,12 +18,12 @@ use Piwik\Version;
*/ */
class ErrorHtmlFormatter extends Formatter class ErrorHtmlFormatter extends Formatter
{ {
public function format(array $record, Log $logger) public function format(array $record)
{ {
$message = $record['message']; $message = $record['message'];
if (! $message instanceof Error) { if (! $message instanceof Error) {
return $this->next($record, $logger); return $this->next($record);
} }
$errno = $message->errno & error_reporting(); $errno = $message->errno & error_reporting();
......
...@@ -16,7 +16,7 @@ use Piwik\Log; ...@@ -16,7 +16,7 @@ use Piwik\Log;
*/ */
class ErrorTextFormatter extends Formatter class ErrorTextFormatter extends Formatter
{ {
public function format(array $record, Log $logger) public function format(array $record)
{ {
$message = $record['message']; $message = $record['message'];
...@@ -25,6 +25,6 @@ class ErrorTextFormatter extends Formatter ...@@ -25,6 +25,6 @@ class ErrorTextFormatter extends Formatter
. ' - ' . $message->errstr . "\n" . $message->backtrace; . ' - ' . $message->errstr . "\n" . $message->backtrace;
} }
return $this->next($record, $logger); return $this->next($record);
} }
} }
...@@ -17,10 +17,10 @@ use Piwik\Log; ...@@ -17,10 +17,10 @@ use Piwik\Log;
*/ */
class ExceptionHtmlFormatter extends Formatter class ExceptionHtmlFormatter extends Formatter
{ {
public function format(array $record, Log $logger) public function format(array $record)
{ {
if (! $record['message'] instanceof \Exception) { if (! $record['message'] instanceof \Exception) {
return $this->next($record, $logger); return $this->next($record);
} }
Common::sendHeader('Content-Type: text/html; charset=utf-8'); Common::sendHeader('Content-Type: text/html; charset=utf-8');
......
...@@ -16,7 +16,7 @@ use Piwik\Log; ...@@ -16,7 +16,7 @@ use Piwik\Log;
*/ */
class ExceptionTextFormatter extends Formatter class ExceptionTextFormatter extends Formatter
{ {
public function format(array $record, Log $logger) public function format(array $record)
{ {
$message = $record['message']; $message = $record['message'];
...@@ -25,6 +25,6 @@ class ExceptionTextFormatter extends Formatter ...@@ -25,6 +25,6 @@ class ExceptionTextFormatter extends Formatter
ExceptionHandler::$debugBacktraceForTests ?: $message->getTraceAsString()); ExceptionHandler::$debugBacktraceForTests ?: $message->getTraceAsString());
} }
return $this->next($record, $logger); return $this->next($record);
} }
} }
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
namespace Piwik\Log\Formatter; namespace Piwik\Log\Formatter;
use Monolog\Formatter\FormatterInterface;
use Piwik\Log; use Piwik\Log;
/** /**
...@@ -16,7 +17,7 @@ use Piwik\Log; ...@@ -16,7 +17,7 @@ use Piwik\Log;
* Follows the Chain of responsibility design pattern, so don't forget to call `$this->next(...)` * Follows the Chain of responsibility design pattern, so don't forget to call `$this->next(...)`
* at the end of the `format()` method. * at the end of the `format()` method.
*/ */
abstract class Formatter abstract class Formatter implements FormatterInterface
{ {
/** /**
* @var Formatter|null * @var Formatter|null
...@@ -24,12 +25,21 @@ abstract class Formatter ...@@ -24,12 +25,21 @@ abstract class Formatter
protected $next; protected $next;
/** /**
* @param array $record * {@inheritdoc}
* @param Log $logger */
* public abstract function format(array $record);
* @return array Updated record.
/**
* {@inheritdoc}
*/ */
public abstract function format(array $record, Log $logger); public function formatBatch(array $records)
{
foreach ($records as $key => $record) {
$records[$key] = $this->format($record);
}
return $records;
}
/** /**
* Chain of responsibility pattern. * Chain of responsibility pattern.
...@@ -41,12 +51,12 @@ abstract class Formatter ...@@ -41,12 +51,12 @@ abstract class Formatter
$this->next = $formatter; $this->next = $formatter;
} }
protected function next(array $record, Log $logger) protected function next(array $record)
{ {
if (! $this->next) { if (! $this->next) {
return $record; return $record;
} }
return $this->next->format($record, $logger); return $this->next->format($record);
} }
} }
...@@ -16,9 +16,9 @@ use Piwik\Log; ...@@ -16,9 +16,9 @@ use Piwik\Log;
*/ */
class HtmlPreFormatter extends Formatter class HtmlPreFormatter extends Formatter
{ {
public function format(array $record, Log $logger) public function format(array $record)
{ {
$record = $this->next($record, $logger); $record = $this->next($record);
if (! is_string($record['message'])) { if (! is_string($record['message'])) {
return $record; return $record;
......
...@@ -28,7 +28,7 @@ class LineMessageFormatter extends Formatter ...@@ -28,7 +28,7 @@ class LineMessageFormatter extends Formatter
$this->logMessageFormat = $logMessageFormat; $this->logMessageFormat = $logMessageFormat;
} }
public function format(array $record, Log $logger) public function format(array $record)
{ {
if (! is_string($record['message'])) { if (! is_string($record['message'])) {
throw new \InvalidArgumentException('Trying to log a message that is not a string'); throw new \InvalidArgumentException('Trying to log a message that is not a string');
...@@ -40,6 +40,6 @@ class LineMessageFormatter extends Formatter ...@@ -40,6 +40,6 @@ class LineMessageFormatter extends Formatter
$this->logMessageFormat $this->logMessageFormat
); );
return $this->next($record, $logger); return $this->next($record);
} }
} }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter