<?php /** * This file is part of monolog2slackwebhook repository * * (c) Ronny Herrgesell * * For the full copyright and license information, please view the LICENSE * * @Author: ronny * @Date: 05.08.16 */ use Sleipi\Monolog2Slack\Message\SlackMessage; use Sleipi\Monolog2Slack\Message\Field; use Sleipi\Monolog2Slack\SlackMessageFormatter; use Sleipi\Monolog2Slack\SlackWebhookHandler; require_once __DIR__ . '/../vendor/autoload.php'; $slackWebhookUrl = "https://hooks.slack.com/services/<token>"; $initSlackMessage = (new SlackMessage())->setFooter("PubTonic")->setFooterIcon("https://tonic.com/img/social/202x202.png"); $slack = new SlackWebhookHandler($slackWebhookUrl, \Monolog\Logger::DEBUG); $slack->setFormatter(new SlackMessageFormatter($initSlackMessage)); $logger = new \Monolog\Logger('slack', [$slack]); $logger->debug("My Debug <http://www.foo.com|Link>"); $logger->info('My Info Message', [(new Field())->setTitle('Priority')->setValue('Small Info'), (new Field())->setTitle('Info')->setValue('Another small Info')]); $logger->notice('My Notice Message', [(new SlackMessage())->setPretext('Irgendwas ist passiert')]); $logger->warning("My Multiline\nWarning Message"); $logger->error('My Error Message for <!everyone>');
/** * {@inheritdoc} */ public function onClose(ConnectionInterface $conn) { $this->_i--; $this->_in->info('onClose', ['#open' => $this->_i, 'id' => $conn->resourceId]); $decorated = $this->_connections[$conn]; $this->_connections->detach($conn); $this->_component->onClose($decorated); }
/** * CreateJson() * * Takes HTML content as input and extracts product contents as per Sainsbury's product * HTML structure. Outputs content to file name in JSON format as per requirements. * * @param string $htmlContent HTML content to process * * @return none * * */ function CreateJson($htmlContent) { $html = new simple_html_dom(); $htmlDomForDest = new simple_html_dom(); // Open file for writing output json $outFile = fopen("./grocery.json", "w"); if (!$outFile) { $log->addError("Failed to open output file"); exit(0); } $this->log->info("Processing HTML"); $html->load($htmlContent); $productList = array(); $priceTotal = 0.0; $price = 0.0; // Write start of output JSON to file fwrite($outFile, "{" . PHP_EOL . "\t\"results\":[" . PHP_EOL); // Loop through each li that contains a product // // Note: As this has been written on a system using PHP 5.3, // the JSON PRETTY_PRINT isn't available for json_encode // option in't available so JSON is created manually without using json_encode // foreach ($html->find("ul[class=productLister]") as $ul) { $ulElements = $ul->find("li"); $last_key = end(array_keys($ulElements)); // foreach ($ul->find("li") as $product) foreach ($ulElements as $product) { // // Assign required variables by finding the relevant data // // Get price and format so we have just a float number that can be used for // cumalative total price of all products $price = strip_tags(trim($product->find('p[class=pricePerUnit] [!abbr]', 0)->plaintext)); $price = preg_replace("/[^0-9\\.]/", "", $price); $priceTotal += $price; // Get link and title for product $link = $product->find('div[class=productInfo]', 0)->find('h3', 0)->find('a', 0); $title = trim($link->plaintext); // Get the HTML of the destination product link to get size and description $htmlDest = $this->GetWebPage($link->href); $size = strlen($htmlDest); $size = number_format($size / 1024, 2); $htmlDomForDest->load($htmlDest); $description = $htmlDomForDest->find("meta[name='description']", 0)->content; $description = html_entity_decode($description, ENT_QUOTES); // Write the product data to the file retrieved $productOutput = "\t\t{" . PHP_EOL . "\t\t\t\"title:\": \"{$title}\"," . PHP_EOL . "\t\t\t\"size\": \"" . $size . "kb\"," . PHP_EOL . "\t\t\t\"unit_price\": " . number_format((double) $price, 2, '.', '') . "," . PHP_EOL . "\t\t\t\"description\": \"{$description}\"" . PHP_EOL . "\t\t}"; if ($product !== end($ulElements)) { $productOutput .= ","; } fwrite($outFile, $productOutput . PHP_EOL); } } // Write remaining output, including price total to file fwrite($outFile, "\t], " . PHP_EOL . "\t\"total\": " . $priceTotal . PHP_EOL); fwrite($outFile, "}" . PHP_EOL); fclose($outFile); }
public static function push($info) { $logFile = storage_path('logs/techdata-logs-' . date('Y-m-d') . '.log'); if (!file_exists($logFile)) { file_put_contents($logFile, ""); } $monolog = new \Monolog\Logger('log'); $monolog->pushHandler(new StreamHandler($logFile), \Monolog\Logger::INFO); $monolog->info($info); }
/** * Bootstrap any application services. */ public function boot() { /** * Query logging */ if (Config::get('database.log_queries')) { $queryLogger = new \Monolog\Logger('Queries'); $fileHandler = new \Monolog\Handler\RotatingFileHandler(storage_path() . '/logs/query.log'); $lineFormatter = new \Monolog\Formatter\LineFormatter("%message% %context% %extra%\n", null, true, true); $fileHandler->setFormatter($lineFormatter); $queryLogger->pushHandler($fileHandler); if (php_sapi_name() !== 'cli') { $queryLogger->info("\n\n=======\n{$_SERVER['REQUEST_METHOD']}\n{$_SERVER['REQUEST_URI']}\n" . Request::server('HTTP_REFERER') . "\n" . date('Y-m-d H:i:s') . "\n========="); } Event::listen("illuminate.query", function ($query, $bindings, $time) use($queryLogger) { $queryLogger->info($query); $queryLogger->info("\t{$time} seconds", $bindings); }); } }
protected function log($message) { $tz = new \DateTimeZone('UTC'); $log = new \Monolog\Logger(__NAMESPACE__); $log->setTimezone($tz); $error_handler = new \Monolog\Handler\ErrorLogHandler(); $log->pushHandler($error_handler); // adds url,client ip,http_method,server and referrer to each log $web_processor = new \Monolog\Processor\WebProcessor(); $log->pushProcessor($web_processor); // adds a unique identifier to each log // e.g. "uid":"0ce8d6d" $uid_processor = new \Monolog\Processor\UidProcessor(); $log->pushProcessor($uid_processor); $log->info(get_called_class() . ' ' . $message, $this->getContext()); }
$logger = new \Monolog\Logger('console'); $logger->pushHandler(new \Monolog\Handler\StreamHandler(fopen('php://stderr', 'w'))); $launcherEngine = new \PHPVCSControl\Support\Launchers\Exec($logger, new \PHPVCSControl\Support\Filesystem()); $demoRepository = \PHPVCSControl\Git\Repository::build($launcherEngine, $exePath, $source, $branch, $path); ////////////////////////////////////////////////// // Do sample actions ////////////////////////////////////////////////// // Clone repository $logger->addInfo(sprintf('Cloning demo repository [%s]', $source)); $demoRepository->cloneRepository(); // Check if the repository is deployed $isDeployed = $demoRepository->isDeployed(); $logger->addInfo(sprintf('Is the repository deployed? [%s]', $isDeployed ? 'yes' : 'no')); // Get the repository's configuration $logger->addInfo('Get configuration: ' . $demoRepository->getConfiguration()->toJSON()); // Fetch $demoRepository->fetch(); $logger->addInfo('Fetched'); // Get the commits $commitCollection = $demoRepository->commits('2000-01-01', VCS_FLAG_NO_MERGES + VCS_FLAG_NO_WALK + VCS_FLAG_TAGS); $logger->addInfo('Get commit count: ' . $commitCollection->count()); // List commits' details $commitCollection->forAll(function ($i, $item) use($logger) { $logger->info($item->sha . ' [' . $item->date . '] [lines added: ' . $item->linesAdded . '] [lines removed: ' . $item->linesRemoved . ']'); return true; }); // Checkout to a commit ID $index = mt_rand(0, $commitCollection->count() - 1); $commitItem = $commitCollection->get($index); $demoRepository->checkout($commitItem->sha); $logger->addInfo('Checkout repo to commit index [' . $index . '], with commitID [' . $commitItem->sha . '] and subject [' . $commitItem->subject . ']');
<?php include __DIR__ . '/vendor/autoload.php'; include __DIR__ . '/../../bootstrap.php'; $debugbarRenderer->setBaseUrl('../../../src/DebugBar/Resources'); $logger = new Monolog\Logger('demo'); $debugbar->addCollector(new DebugBar\Bridge\MonologCollector($logger)); $logger->info('hello world'); render_demo_page();
/** * @param \Closure|Monolog\Logger $logger * @return void */ public function setLogger($logger) { if ($logger instanceof Monolog\Logger) { $this->logger = function ($message, $level) use($logger) { switch ($level) { case 'info': $logger->info($message); return; case 'warn': default: $logger->warn($message); return; } }; } else { $this->logger = $logger; } }
/** * postpone message on RuntimeException */ $dispatcher->addListener('kemer.error', function (GenericEvent $event, $eventName, $dispatcher) { if ($event["error"] instanceof \RuntimeException) { $dispatcher->dispatch(AmqpAddons\AddonsEvent::POSTPONE, $event->getSubject()); } }, -1); /** * reject message + requeue (if not requeued before) on error */ $dispatcher->addListener('kemer.error', function (GenericEvent $event, $eventName, $dispatcher) { $subject = $event->getSubject(); if (!$subject->isConsumed()) { $subject->reject($subject->isRedelivery() ? false : AMQP_REQUEUE); } }, -2); /** * Catch ConsumerException here to get last consumed event */ try { $consumer->listen($queue, $exchange); } catch (Amqp\Exceptions\ConsumerException $e) { $event = $e->getEvent(); if (!$event->isConsumed()) { $event->reject($event->isRedelivery() ? false : AMQP_REQUEUE); } } catch (Amqp\Exceptions\NotConsumedException $e) { $logger->info(sprintf("%s@%s NOT FOUND \n", $e->getEvent()->getExchangeName(), $e->getEvent()->getRoutingKey())); $e->getEvent()->reject(false); }
} if (!file_exists($config)) { throw new InvalidArgumentException('Missing ' . $config . ' file, please create one in the same folder as the application'); } chdir(dirname($config)); $config = json_decode(file_get_contents($config)); if ($config->debug) { $logLevel = \Monolog\Logger::DEBUG; } else { $logLevel = \Monolog\Logger::WARNING; } // Set up logging to file $log = new \Monolog\Logger('xmr'); $log->pushHandler(new \Monolog\Handler\StreamHandler('log.txt', $logLevel)); $log->pushHandler(new \Monolog\Handler\StreamHandler(STDOUT, $logLevel)); $log->info(sprintf('Starting up - listening for CMS on %s.', $config->listenOn)); try { $loop = React\EventLoop\Factory::create(); $context = new React\ZMQ\Context($loop); // Reply socket for requests from CMS $responder = $context->getSocket(ZMQ::SOCKET_REP); $responder->bind($config->listenOn); // Pub socket for messages to Players (subs) $publisher = $context->getSocket(ZMQ::SOCKET_PUB); foreach ($config->pubOn as $pubOn) { $log->info(sprintf('Bind to %s for Publish.', $pubOn)); $publisher->bind($pubOn); } // REP $responder->on('error', function ($e) use($log) { $log->error($e->getMessage());
require "vendor/autoload.php"; use Slim\Slim; use Slim\Extras\Views\Twig; $log = new Monolog\Logger('log'); $log->pushHandler(new Monolog\Handler\StreamHandler('log/wol.log', Monolog\Logger::INFO)); $app = new \Slim\Slim(['view' => new Twig(), 'templates.path' => 'template']); // // request // $app->get("/", function () use($app, $log) { require_once 'app/models/WakeUpLanManager.php'; $wol = new WakeUpLanManager($log); echo $app->render('index.html', ['wol_list' => $wol->getWolJson()]); }); $app->get("/wakeup/:id", function ($id) use($app, $log) { $log->info('START'); require_once 'app/models/WakeUpLanManager.php'; $wol = new WakeUpLanManager($log); // WOL実行 $result = $wol->postWol($id, $wol->getWolJson()); $app->response->headers->set('Content-Type', 'application/json'); $app->response->setBody(json_encode(['result' => 'ok'])); }); $app->get("/ping/:id", function ($id = null) use($app, $log) { $log->info('START'); require_once 'app/models/WakeUpLanManager.php'; $wol = new WakeUpLanManager($log); /// ping チェック if (empty($id)) { $result = $wol->pingCmds($wol->getWolJson()); } else {
public function __construct() { $queryLogger = new \Monolog\Logger('Queries'); $fileHandler = new \Monolog\Handler\RotatingFileHandler(storage_path() . '/logs/query.log'); $lineFormatter = new \Monolog\Formatter\LineFormatter("%message% %context% %extra%\n", null, true, true); $fileHandler->setFormatter($lineFormatter); $queryLogger->pushHandler($fileHandler); if (php_sapi_name() !== 'cli') { $queryLogger->info("\n\n=======\n{$_SERVER['REQUEST_METHOD']}\n{$_SERVER['REQUEST_URI']}" . " \n" . Request::server('HTTP_REFERER') . "\n" . date('Y-m-d H:i:s') . "\n========="); } Event::listen('cache.missed', function ($key) use($queryLogger) { $queryLogger->info('cache.missed'); $queryLogger->info("\t" . $key); }); Event::listen('cache.hit', function ($key) use($queryLogger) { $queryLogger->info('cache.hit'); $queryLogger->info("\t" . $key); }); Event::listen('cache.write', function ($key) use($queryLogger) { $queryLogger->info('cache.write'); $queryLogger->info("\t" . $key); }); Event::listen('cache.delete', function ($key) use($queryLogger) { $queryLogger->info('cache.delete'); $queryLogger->info("\t" . $key); }); Event::listen("illuminate.query", function ($query, $bindings, $time) use($queryLogger) { $queryLogger->info("illuminate.query"); $queryLogger->info("\t" . $query, $bindings); $queryLogger->info("\t\t{$time} ms", $bindings); }); }
<?php require_once __DIR__ . '/../vendor/autoload.php'; $opts = parseArgs($argv); if (isset($opts['help']) || !isset($opts['pid'])) { echo "Usage: {$argv['0']} [help] [log:<path-to-log-file>] [stop] pid:<path-to-pid-file>\n"; exit(0); } $logHandler = isset($opts['log']) ? new \Monolog\Handler\StreamHandler('file://' . $opts['log']) : new \Monolog\Handler\NullHandler(); $logger = new \Monolog\Logger("DetachedExample", array($logHandler)); $logger->info("Building"); $builder = new Beelzebub\Daemon\Builder(); $daemon = $builder->setLogger($logger)->addWorker('hello-world', array('interval' => 1, 'loop' => function (Beelzebub\Worker $w) { $w->getDaemon()->getLogger()->info("Hello world"); }))->build(); $pidfile = new \Beelzebub\Wrapper\File($opts['pid']); // stop if (isset($opts['stop'])) { echo "Stopping running daemon: "; echo ($daemon->halt($pidfile) ? "OK" : "FAIL") . "\n"; } else { echo "Starting detached daemon: "; try { $pid = $daemon->runDetached($pidfile); echo " [pid: {$pid}, file: {$opts['pid']}]\n"; } catch (\Exception $e) { echo " FAIL: " . $e->getMessage() . "\n"; } } function parseArgs(array $argv) {