⬆️ Ajoute Monolog

This commit is contained in:
Clement Desmidt 2017-11-15 22:59:41 +01:00
parent 1da668485f
commit 5b3500e193
3 changed files with 156 additions and 21 deletions

View File

@ -3,7 +3,8 @@
"description": "Manage deals in LBC",
"type": "project",
"require": {
"shikiryu/lbcreposter-api": "0.*"
"shikiryu/lbcreposter-api": "0.*",
"monolog/monolog": "^1.23"
},
"require-dev": {
"phpunit/phpunit": "^5.7"
@ -17,4 +18,4 @@
"autoload": {
"psr-4": {}
}
}
}

139
composer.lock generated
View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "1f27833b156f7e100122870f2bf123e3",
"content-hash": "818e49fe8e9ffc7b1f4a8e88edc1f278",
"hash": "da5cf0fa9c9ce6bd3e2984db7c5f28b8",
"content-hash": "95d6dcaa6784485a4831674141dabf0d",
"packages": [
{
"name": "fabpot/goutte",
@ -237,6 +237,84 @@
],
"time": "2017-03-20 17:10:46"
},
{
"name": "monolog/monolog",
"version": "1.23.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
"reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
"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.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"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",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.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": "2017-06-19 01:22:40"
},
{
"name": "psr/http-message",
"version": "1.0.1",
@ -287,13 +365,60 @@
],
"time": "2016-08-06 14:39:51"
},
{
"name": "psr/log",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "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",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2016-10-10 12:19:37"
},
{
"name": "shikiryu/lbcreposter-api",
"version": "dev-master",
"version": "0.1.1",
"source": {
"type": "git",
"url": "https://git.shikiryu.com/Shikiryu/LBCReposter-api.git",
"reference": "768af6e636c33af05e7a9a28aa5625bee13514de"
"reference": "ac21f74c11878955e86e74115f70408e590936f5"
},
"require": {
"fabpot/goutte": "^3.1"
@ -315,7 +440,7 @@
}
],
"description": "Manage deals in LBC",
"time": "2017-09-30 13:42:28"
"time": "2017-11-07 20:24:59"
},
{
"name": "symfony/browser-kit",
@ -1860,9 +1985,7 @@
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"shikiryu/lbcreposter-api": 20
},
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],

View File

@ -1,12 +1,22 @@
<?php
include __DIR__ . '/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
define('APP_DIR', __DIR__);
define('DEALS_DIR', sprintf('%s/deals', APP_DIR));
define('LOGS_DIR', sprintf('%s/logs', APP_DIR));
define('NEW_DEALS_DIR', sprintf('%s/deals/new', APP_DIR));
define('EXISTING_DEALS_DIR', sprintf('%s/deals/list', APP_DIR));
define('BACKUP_DEALS_DIR', sprintf('%s/deals/backup', APP_DIR));
define('LOG_MAIL_TO', '');
define('LOG_MAIL_SUBJECT', '[LBCReposter] erreur cron');
define('LOG_MAIL_FROM', '');
$log = new Logger('lbcreposter');
$log->pushHandler(new StreamHandler(LOGS_DIR.'/cron.log', Logger::WARNING));
$log->pushHandler(new \Monolog\Handler\NativeMailerHandler(LOG_MAIL_TO, LOG_MAIL_SUBJECT, LOG_MAIL_FROM));
$existing_deals = [];
foreach (new DirectoryIterator(EXISTING_DEALS_DIR) as $existing_deal) {
@ -36,7 +46,7 @@ function delete_folder($folder) {
return rmdir($folder);
}
echo sprintf('%u annonces locales, normalement en ligne.%s', count($existing_deals), "\n");
$log->info(sprintf('%u annonces locales, normalement en ligne.', count($existing_deals)));
$script_params = parse_ini_file(sprintf('%s/lbcreposter.ini', DEALS_DIR), true);
$config = new \Shikiryu\LBCReposter\Config($script_params);
$account = new \Shikiryu\LBCReposter\Account($config);
@ -53,12 +63,12 @@ if ($actions->connect()) {
foreach ($deals as $i => $deal) {
// l'annonce existe déjà
if (in_array($deal->getId(), array_keys($existing_deals))) {
echo sprintf('L\'annonce %s existe déjà, ', $deal->getId());
$log->info(sprintf('L\'annonce %s existe déjà, ', $deal->getId()));
// si elle est vieille, on supprime et on recréé
if ($existing_deals[$deal->getId()]->getDateCreation()->add(new DateInterval('P1W')) <= (new DateTime())) {
// Suppression
echo sprintf('elle est vieille (%s), on la supprime. %s', $existing_deals[$deal->getId()]->getDateCreation()->format('d/m/Y H:i'), "\n");
$actions->delete($deal);
$log->error(sprintf('elle est vieille (%s), on la supprime.', $existing_deals[$deal->getId()]->getDateCreation()->format('d/m/Y H:i')));
// $actions->delete($deal);
// Backup
if (!file_exists(BACKUP_DEALS_DIR.'/'.$deal->getId())) {
mkdir(BACKUP_DEALS_DIR . '/' . $deal->getId());
@ -68,11 +78,11 @@ if ($actions->connect()) {
rename(EXISTING_DEALS_DIR.'/'.$deal->getId(), NEW_DEALS_DIR.'/'.$deal->getId());
} else {
// sinon on la laisse
echo sprintf('et tout va bien. %s', "\n");
$log->info('et tout va bien.');
}
unset($deals_to_backup[$deal->getId()]);
} else {
echo sprintf('L\'annonce %s n\'existait pas et est sauvegardée. %s', $deal->getSubject(), "\n");
$log->error(sprintf('L\'annonce %s n\'existait pas et est sauvegardée.', $deal->getSubject()));
// Une annonce non sauvegardée ? on la sauve
$deal->save(EXISTING_DEALS_DIR);
}
@ -91,17 +101,18 @@ if ($actions->connect()) {
foreach (new DirectoryIterator(NEW_DEALS_DIR) as $new_deal) {
if ($new_deal->isDir() && !$new_deal->isDot()) {
$deal_to_create = \Shikiryu\LBCReposter\Deal::fromJSON($new_deal->getRealPath() . '/data.json');
if ($actions->create($deal_to_create)) {
/*if ($actions->create($deal_to_create)) {
delete_folder($new_deal->getRealPath());
echo sprintf('L\'annonce %s a bien été créée. %s', $deal_to_create->getSubject(), "\n");
$log->info(sprintf('L\'annonce %s a bien été créée.', $deal_to_create->getSubject()));
break;
} else {
echo sprintf('L\'annonce %s n\'a pas bien été créée. %s', $deal_to_create->getSubject(), "\n");
}
$log->error(sprintf('L\'annonce %s n\'a pas bien été créée. %s', $deal_to_create->getSubject()));
}*/
sleep(30);
}
}
} else {
echo 'not connected';
$log->error('not connected');
}
$log->info('CRON terminé !');