/** * Initialize the class */ public static function _init() { // load the file config \Config::load('file', true); // determine the name and location of the logfile $filepath = \Config::get('log_path') . date('Y/m') . '/'; if (!is_dir($filepath)) { @mkdir($filepath, \Config::get('file.chmod.folders', 0777), true); } $filename = $filepath . date('d') . '.php'; if (!($handle = @fopen($filename, 'a'))) { die('Fatal error: could not create or access the log file (' . $filename . ')<br />check your file system permissions!'); } if (!filesize($filename)) { fwrite($handle, "<?php defined('COREPATH') or exit('No direct script access allowed'); ?>" . PHP_EOL . PHP_EOL); chmod($filename, \Config::get('file.chmod.files', 0666)); } fclose($handle); // create the monolog instance static::$monolog = new \Monolog\Logger('fuelphp'); // create the streamhandler, and activate the handler $stream = new \Monolog\Handler\StreamHandler($filename, \Monolog\Logger::DEBUG); $formatter = new \Monolog\Formatter\LineFormatter("%level_name% - %datetime% --> %message%" . PHP_EOL, "Y-m-d H:i:s"); $stream->setFormatter($formatter); static::$monolog->pushHandler($stream); }
/** * */ public function buildLogger($channel, $handlers = null) { // Create a new logger $logger = new \Monolog\Logger($channel); // Setup processors $logger->pushProcessor(new \Monolog\Processor\IntrospectionProcessor()); $logger->pushProcessor(new \Monolog\Processor\ProcessIdProcessor()); $logger->pushProcessor(new \Monolog\Processor\WebProcessor()); // Are we in CLI/verbose mode? if (\z\app()->isCli() === true) { // Define the level if (\z\app()->isVerbose() === true) { $level = \Monolog\Logger::DEBUG; } else { $level = \Monolog\Logger::INFO; } // Redirect to standard output $handler = new \Monolog\Handler\StreamHandler('php://stdout', $level); // Format for CLI $handler->setFormatter(new \fbenard\Zero\Services\Formatters\CliLogFormatter()); } else { // Redirect to /dev/null $handler = new \Monolog\Handler\NullHandler(); } // Push the handler $logger->pushHandler($handler); // Parse each handler if (is_array($handlers) === true) { foreach ($handlers as $handler) { // Push the handler $logger->pushHandler($handler); } } return $logger; }
/** * @param string $name * @param array $handlers * @param array $processors */ function __construct($name = 'main', array $handlers = array(), array $processors = array()) { /* Create new logger */ parent::__construct($name, $handlers, $processors); /* Add default, console handler */ $handler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::DEBUG); $handler->setFormatter(new \Monolog\Formatter\LineFormatter("[%datetime%] [%channel%.%level_name%] -- %message%\n")); $this->pushHandler($handler); }
/** * * @return \Monolog\Logger */ public static function default_logger() { $name = 'chamilo'; $result = new Logger($name); $handler = new Monolog\Handler\StreamHandler('php://stderr'); $handler->setFormatter(new Monolog\Formatter\LineFormatter('[%datetime%] [%level_name%] [%channel%] %message%' . PHP_EOL, 'Y-m-d H:i:s')); //%context% %extra% $result->pushHandler($handler); return $result; }
/** * Gets the logger * @return Monolog\Logger */ function getMonolog() { $dateFormat = "Y-m-d H:m:i"; // This is the original format of monolog documentation // https://github.com/Seldaek/monolog/blob/master/doc/usage.md#customizing-log-format // $output = "%datetime% > %level_name% > %message% %context% %extra%\n"; $output = "[%datetime%] LADYBUG: %message% %context% %extra%\n"; $formatter = new \Monolog\Formatter\LineFormatter($output, $dateFormat, true); $stream = new \Monolog\Handler\StreamHandler($GLOBALS['PATHLADYBUGPLUGINMONOLOG'], \Monolog\Logger::DEBUG); $stream->setFormatter($formatter); $ladyLogger = new \Monolog\Logger('ladybug'); $ladyLogger->pushHandler($stream); return $ladyLogger; }
/** * Initialize the class */ public static function _init() { // load the file config \Config::load('file', true); // make sure the log directories exist try { // determine the name and location of the logfile $path = \Config::get('log_path', APPPATH . 'logs' . DS); $filename = \Config::get('log_file', null); if (empty($filename)) { $rootpath = $path . date('Y') . DS; $filepath = $path . date('Y/m') . DS; $filename = $filepath . date('d') . '.php'; } else { $rootpath = $path; $filepath = $path; $filename = $path . $filename; } // get the required folder permissions $permission = \Config::get('file.chmod.folders', 0777); if (!is_dir($rootpath)) { mkdir($rootpath, 0777, true); chmod($rootpath, $permission); } if (!is_dir($filepath)) { mkdir($filepath, 0777, true); chmod($filepath, $permission); } $handle = fopen($filename, 'a'); } catch (\Exception $e) { \Config::set('log_threshold', \Fuel::L_NONE); throw new \FuelException('Unable to create or write to the log file. Please check the permissions on ' . \Config::get('log_path') . '. (' . $e->getMessage() . ')'); } if (!filesize($filename)) { fwrite($handle, "<?php defined('COREPATH') or exit('No direct script access allowed'); ?>" . PHP_EOL . PHP_EOL); chmod($filename, \Config::get('file.chmod.files', 0666)); } fclose($handle); // create the monolog instance static::$monolog = new \Monolog\Logger('fuelphp'); // create the streamhandler, and activate the handler $stream = new \Monolog\Handler\StreamHandler($filename, \Monolog\Logger::DEBUG); $formatter = new \Monolog\Formatter\LineFormatter("%level_name% - %datetime% --> %message%" . PHP_EOL, "Y-m-d H:i:s"); $stream->setFormatter($formatter); static::$monolog->pushHandler($stream); }
/** * Set the client Logger * * @throws PhpOrientException */ public function setLogger() { if (ClientConstants::$LOGGING) { if ($this->_logger === null) { if (!class_exists('\\Monolog\\Logger', true)) { throw new PhpOrientException("No development environment installed from composer. Try 'composer update' or remove logging from client constants ( \\PhpOrient\\Configuration\\Constants::\$LOGGING )"); } $this->_logger = new \Monolog\Logger(get_class($this)); $file_path = "php://stdout"; if (ClientConstants::$LOG_FILE_PATH) { $file_path = ClientConstants::$LOG_FILE_PATH; } $handler = new \Monolog\Handler\StreamHandler($file_path, \Monolog\Logger::DEBUG); $handler->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, false, true)); $this->_logger->pushHandler($handler); } } else { $this->_logger = new NullLogger(); } }
function makeLogger($channel, $level) { $logger = new Monolog\Logger($channel); $file = defined('LOGGING_LOG_FILE') ? LOGGING_LOG_FILE : LOGGING_GLOBAL_LOG_FILE; if (!file_exists($file)) { if (!file_exists(dirname($file))) { mkdir(dirname($file), 755, true); } touch($file); } $format = defined('LOGGING_FORMAT') ? LOGGING_FORMAT : LOGGING_GLOBAL_FORMAT; $formatter = new Monolog\Formatter\LineFormatter($format); if (defined('LOGGING_FORK_TO_STDOUT') && LOGGING_FORK_TO_STDOUT) { $handler = new Monolog\Handler\StreamHandler(fopen('php://stdout', 'w'), $level); $handler->setFormatter($formatter); $logger->pushHandler($handler); } $handler = new Monolog\Handler\StreamHandler($file, $level); $handler->setFormatter($formatter); $logger->pushHandler($handler); return $logger; }
/** * Initialize the class */ public static function _init() { // load the file config \Config::load('file', true); // determine the name and location of the logfile $filepath = \Config::get('log_path') . date('Y/m') . '/'; if (!is_dir($filepath)) { $old = umask(0); mkdir($filepath, \Config::get('file.chmod.folders', 0777), true); umask($old); } $filename = $filepath . date('d') . '.php'; if (!file_exists($filename)) { file_put_contents($filename, "<" . "?php defined('COREPATH') or exit('No direct script access allowed'); ?" . ">" . PHP_EOL . PHP_EOL); } // create the monolog instance static::$monolog = new \Monolog\Logger('fuelphp'); // create the streamhandler, and activate the handler $stream = new \Monolog\Handler\StreamHandler($filename, \Monolog\Logger::DEBUG); $formatter = new \Monolog\Formatter\LineFormatter("%level_name% - %datetime% --> %message%" . PHP_EOL, "Y-m-d H:i:s"); $stream->setFormatter($formatter); static::$monolog->pushHandler($stream); }
<?php // DIC configuration $container = $app->getContainer(); // Logger $container['logger'] = function ($c) { $config = $c->settings['Monolog']; $logger = new Monolog\Logger($config['loggerName']); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $formatter = new Monolog\Formatter\LineFormatter(); $formatter->includeStacktraces(); if (true === $config['StreamHandler']['enable']) { $handler = new Monolog\Handler\StreamHandler(VAR_PATH . '/log/app-' . date('Y-m') . '.log', $config['StreamHandler']['logLevel']); $handler->setFormatter($formatter); $logger->pushHandler($handler); } if (true === $config['NativeMailerHandler']['enable'] && '' != $config['NativeMailerHandler']['to']) { $handler = new Monolog\Handler\NativeMailerHandler($config['NativeMailerHandler']['to'], $config['NativeMailerHandler']['subject'], $config['NativeMailerHandler']['from'], $config['NativeMailerHandler']['logLevel']); $handler->setFormatter($formatter); $logger->pushHandler($handler); } return $logger; }; // View renderer $container['renderer'] = function ($c) { $config = $c->settings['Twig']; $path = $config['templatesPath']; unset($config['templatesPath']); $twig = new Slim\Views\Twig($path, $config); $twig->addExtension(new Slim\Views\TwigExtension($c->router, $c->request->getUri())); $twig['config'] = $c->settings['App'];
// https://github.com/franzliedke/studio/issues/29 if (file_exists(__DIR__ . '/core')) { require __DIR__ . '/core/src/helpers.php'; require __DIR__ . '/core/vendor/swiftmailer/swiftmailer/lib/swift_required.php'; } $app = new Application(realpath(__DIR__)); $app->instance('path.public', __DIR__ . '/..'); Illuminate\Container\Container::setInstance($app); if (file_exists($configFile = __DIR__ . '/../config.php')) { $app->instance('flarum.config', include $configFile); } date_default_timezone_set('UTC'); $app->instance('config', $config = new ConfigRepository(['view' => ['paths' => [realpath(base_path('resources/views'))], 'compiled' => realpath(storage_path() . '/framework/views')], 'mail' => ['driver' => 'mail'], 'cache' => ['default' => 'file', 'stores' => ['file' => ['driver' => 'file', 'path' => storage_path() . '/framework/cache']], 'prefix' => 'flarum'], 'filesystems' => ['default' => 'local', 'cloud' => 's3', 'disks' => ['flarum-avatars' => ['driver' => 'local', 'root' => public_path('assets/avatars')]]]])); $logger = new Monolog\Logger($app->environment()); $logPath = $app->storagePath() . '/logs/flarum.log'; $handler = new \Monolog\Handler\StreamHandler($logPath, Monolog\Logger::DEBUG); $handler->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, true, true)); $logger->pushHandler($handler); $app->instance('log', $logger); $app->alias('log', 'Psr\\Log\\LoggerInterface'); $app->singleton('cache', function ($app) { $store = new FileStore(new Filesystem(), storage_path('framework/cache')); $repository = new Repository($store); $repository->setEventDispatcher($app->make('events')); return $repository; }); $app->alias('cache', 'Illuminate\\Contracts\\Cache\\Repository'); $serviceProviders = ['Flarum\\Core\\DatabaseServiceProvider', 'Flarum\\Core\\Settings\\SettingsServiceProvider', 'Flarum\\Locale\\LocaleServiceProvider', 'Illuminate\\Bus\\BusServiceProvider', 'Illuminate\\Filesystem\\FilesystemServiceProvider', 'Illuminate\\Hashing\\HashServiceProvider', 'Illuminate\\Mail\\MailServiceProvider', 'Illuminate\\View\\ViewServiceProvider', 'Illuminate\\Events\\EventServiceProvider', 'Illuminate\\Validation\\ValidationServiceProvider']; foreach ($serviceProviders as $provider) { $app->register(new $provider($app)); }
<?php $loader = (require __DIR__ . '/../vendor/autoload.php'); $loader->addPsr4('Pheat\\', __DIR__); $build = __DIR__ . '/../build'; $logger = new Monolog\Logger('test'); $handler = new Monolog\Handler\StreamHandler($build . '/test.log'); $handler->pushProcessor(new \Monolog\Processor\PsrLogMessageProcessor()); $logger->pushHandler($handler); $settings = new Pheat\Test\Settings(); $settings->setLogger($logger); $settings->fromEnvironment(); $settings->setBuildDir($build); $settings->checkBuildDir(); $settings->dumpConfig(); Pheat\Test\Test::setSettings($settings);
<?php /** * Created by PhpStorm. * User: janhuang * Date: 15/8/8 * Time: 下午12:27 * Github: https://www.github.com/janhuang * Coding: https://www.coding.net/janhuang * SegmentFault: http://segmentfault.com/u/janhuang * Blog: http://segmentfault.com/blog/janhuang * Gmail: bboyjanhuang@gmail.com * WebSite: http://www.janhuang.me */ include __DIR__ . '/../vendor/autoload.php'; $logger = new \Monolog\Logger('test'); $stream = new \Monolog\Handler\StreamHandler(__DIR__ . '/test.log'); $stream->setFormatter(new Monolog\Formatter\LineFormatter("[%datetime%] >> %level_name%: >> %message% >> %context% >> %extra%\n")); $logger->pushHandler($stream); $debug = \FastD\Debug\Debug::enable(false, $logger); throw new ErrorException('test');
$diImpl->setServiceNamespace('Application\\DiService'); $diImpl->set('class_loader', $classLoader); /** * Configs */ $diImpl->set('configs', function () use($environment) { return new \Zend\Config\Config(include realpath(__DIR__) . '/env/' . $environment . '.php', true); }, true); /** * Logger */ $diImpl->set('logger', function () use($diImpl) { $configs = $diImpl->get('configs'); $logFile = $configs->logger->path . '/' . $configs->logger->name . '-' . date('Y-m-d') . '.log'; $monolog = new \Monolog\Logger($configs->logger->name); $fileStream = new \Monolog\Handler\StreamHandler($logFile, $configs->logger->level, true, 0666); $lineFormatter = new \MiniFrame\Logger\MonologLineFormatter($configs->logger->line_format, $configs->logger->datetime_format); $lineFormatter->setReqId($configs->req_id); $fileStream->setFormatter($lineFormatter); $monolog->pushHandler($fileStream); return $monolog; }, true); /** * ErrorCatcher */ $diImpl->set('error_catcher', function () use($diImpl) { $errorCatcher = new \MiniFrame\ErrorCatcher(); $exceptionHandler = new \MiniFrame\ExceptionCallbackHandler($diImpl->get('logger')); $fatalErrorHandler = new \MiniFrame\FatalErrorCallbackHandler($diImpl->get('logger')); $errorCatcher->setExceptionCallback([$exceptionHandler, 'handle']); $errorCatcher->setFatalCallback([$fatalErrorHandler, 'handle']);
protected function getMonolog_Handler_NestedService() { $this->services['monolog.handler.nested'] = $instance = new \Monolog\Handler\StreamHandler($this->targetDirs[2] . '/logs/prod.log', 100, true, NULL); $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); return $instance; }
<?php $logger = new Monolog\Logger('lucid'); $handler = new Monolog\Handler\StreamHandler(__DIR__ . '/../debug.log'); $format = '[%datetime%] '; $format .= '[' . str_pad(session_id(), 32, ' ', STR_PAD_RIGHT) . '] '; $ip = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1'; $format .= '[' . str_pad($ip, 15, ' ', STR_PAD_RIGHT) . '] '; $format .= "%level_name%: %message%\n"; $handler->setFormatter(new Monolog\Formatter\LineFormatter($format)); $logger->pushHandler($handler); \Lucid\lucid::$app->set('logger', $logger);
<?php date_default_timezone_set('Europe/Rome'); require '../vendor/autoload.php'; $config = (require '../config.php'); require '../app/function.fatal.php'; $streamToFile = new \Monolog\Handler\StreamHandler($config['log']['filename']); //@See https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md // DEFAULT: "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; $output = "[%datetime%] [%level_name%] [%extra%] : %message% %context%\n"; $formatter = new Monolog\Formatter\LineFormatter($output); $streamToFile->setFormatter($formatter); if ($config['enviroment'] == 'development') { $connection_name = 'testing'; } else { $connection_name = 'default'; } $streamToFile->pushProcessor(function ($record) use($connection_name, $argv) { $record['extra']['connection'] = $connection_name; $record['extra']['scriptname'] = $argv[0]; return $record; }); $log = new \Monolog\Logger('script'); $log->pushHandler($streamToFile);
<?php use Illuminate\Database\Capsule\Manager as Capsule; // DIC $container = $app->getContainer(); // Monolog $container['logger'] = function (\Slim\Container $c) { $settings = $c->get('settings')['logger']; $logger = new Monolog\Logger($settings['name']); $handler = new Monolog\Handler\StreamHandler($settings['path'], Monolog\Logger::DEBUG); $handler->setFormatter(new Monolog\Formatter\LineFormatter("[%datetime%] %level_name% > %message% - %context% - %extra%\n")); $logger->pushHandler($handler); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $logger->pushProcessor(new Monolog\Processor\WebProcessor()); return $logger; }; // Eloquent orm $capsule = new Capsule(); $capsule->addConnection($container->get('settings')['database']); $capsule->setAsGlobal(); $capsule->bootEloquent(); // Injeta o container no Base controller $container['Base'] = function ($c) { return new Base($c); };
<?php /** * Created by PhpStorm. * User: Stefano "Yoghi" Tamagnini * Date: 21/09/15 - 22:41 * */ require '../vendor/autoload.php'; date_default_timezone_set('Europe/Rome'); $config = (require '../config.php'); require '../app/function.fatal.php'; $streamToFile = new \Monolog\Handler\StreamHandler($config['log']['filename']); //@See https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md // DEFAULT: "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; $output = "[%datetime%] [%level_name%] [%extra%] : %message% %context%\n"; $formatter = new Monolog\Formatter\LineFormatter($output); $streamToFile->setFormatter($formatter); $streamToFile->pushProcessor(function ($record) use($config) { if ($config['enviroment'] == 'development') { $record['extra']['connection'] = 'testing'; } else { $record['extra']['connection'] = 'default'; } return $record; }); $handlers[] = $streamToFile; $logger_writer = new \Flynsarmy\SlimMonolog\Log\MonologWriter(array('handlers' => $handlers, 'processors' => array(new Monolog\Processor\UidProcessor(), new Monolog\Processor\WebProcessor($_SERVER)))); $app = new \Slim\Slim(array('mode' => $config['enviroment'], 'log.level' => \Slim\Log::DEBUG, 'log.enabled' => true, 'log.writer' => $logger_writer, 'templates.path' => '../templates')); $app->config('databases', $config['databases']); $app->add(new \BitPrepared\Slim\Middleware\EloquentMiddleware());
// DIC configuration $container = $app->getContainer(); // ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // php-view $container['view'] = function ($c) { return new Slim\Views\PhpRenderer($c['settings']['view']['template_path']); }; // monolog $container['logger'] = function ($c) { $logger = new Monolog\Logger($c['settings']['logger']['name']); $logger->pushProcessor(new Monolog\Processor\MemoryPeakUsageProcessor()); $logger->pushProcessor(new Monolog\Processor\WebProcessor()); $handler = new Monolog\Handler\StreamHandler($c['settings']['logger']['path'], \Monolog\Logger::DEBUG); $handler->setFormatter(new Monolog\Formatter\JsonFormatter()); $logger->pushHandler($handler); $logger->pushHandler(new Monolog\Handler\ErrorLogHandler()); return $logger; }; // error handler $container['errorHandler'] = function ($c) { return new Lib\ApiError($c['logger']); }; // not found handler $container['notFoundHandler'] = function ($c) { return new Lib\ApiNotFound($c['logger']); }; // not allowed handler $container['notAllowedHandler'] = function ($c) {
}); $app['security.access_manager'] = $app->share(function ($app) { return new AccessDecisionManager($app['security.voters'], AccessDecisionManager::STRATEGY_AFFIRMATIVE); }); $app['security.access_rules'] = array(array(MultiPathRequestMatcher::fromPaths([new Path('^/labels/.*', ['POST', 'DELETE', 'PATCH'])]), Permission::LABELS_BEHEREN), array('^/(roles|permissions|users)/.*', Permission::GEBRUIKERS_BEHEREN)); require __DIR__ . '/../debug.php'; $app['logger.search'] = $app->share(function ($app) { $logger = new \Monolog\Logger('search'); $handlers = $app['config']['log.search']; foreach ($handlers as $handler_config) { switch ($handler_config['type']) { case 'hipchat': $handler = new \Monolog\Handler\HipChatHandler($handler_config['token'], $handler_config['room']); break; case 'file': $handler = new \Monolog\Handler\StreamHandler(__DIR__ . '/' . $handler_config['path']); break; default: continue 2; } $handler->setLevel($handler_config['level']); $logger->pushHandler($handler); } return $logger; }); // Enable CORS. $app->after($app["cors"]); if (isset($app['config']['cdbxml_proxy']) && $app['config']['cdbxml_proxy']['enabled']) { $app->before(function (Request $request, Application $app) { /** @var \CultuurNet\UDB3\Symfony\Proxy\CdbXmlProxy $cdbXmlProxy */ $cdbXmlProxy = $app['cdbxml_proxy'];
/** * Gets the 'monolog.handler.main' service. * * This service is shared. * This method always returns the same instance of the service. * * @return \Monolog\Handler\StreamHandler A Monolog\Handler\StreamHandler instance */ protected function getMonolog_Handler_MainService() { $this->services['monolog.handler.main'] = $instance = new \Monolog\Handler\StreamHandler($this->targetDirs[2] . '/logs/test.log', 100, true, NULL); $instance->pushProcessor($this->get('monolog.processor.psr_log_message')); return $instance; }
<?php // DIC configuration $container = $app->getContainer(); require __DIR__ . '/database/bootstrap.php'; // ----------------------------------------------------------------------------- // Service factories // ----------------------------------------------------------------------------- // monolog $container['logger'] = function ($c) { $settings = $c->get('settings'); // https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#customizing-the-log-format // allow breaking lines $formatter = new \Monolog\Formatter\LineFormatter(null, null, true); $stream = new \Monolog\Handler\StreamHandler($settings['logger']['path'], \Monolog\Logger::DEBUG); $stream->setFormatter($formatter); $logger = new \Monolog\Logger($settings['logger']['name']); $logger->pushHandler($stream); return $logger; }; // ----------------------------------------------------------------------------- // Error Handlers // ----------------------------------------------------------------------------- unset($container['errorHandler']); unset($container['notFoundHandler']); $container['errorHandler'] = function ($c) { $displayErrorDetails = $c->get('settings')['displayErrorDetails']; return new App\Handlers\Error($displayErrorDetails, $c->get('logger')); }; $container['notFoundHandler'] = function ($c) { return function ($request, $response) use($c) {
<?php // Logger $handlers = []; $formatter = new Monolog\Formatter\LineFormatter(); $formatter->includeStacktraces(); $handler = new Monolog\Handler\StreamHandler(VAR_PATH . '/log/app-' . date('Y-m') . '.log'); $handler->setFormatter($formatter); $handlers[] = $handler; if (true === $config['App']['errors']['send_email'] && '' != $config['App']['errors']['email_to']) { $handler = new Monolog\Handler\NativeMailerHandler($config['App']['errors']['email_to'], $config['App']['errors']['email_subject'] ?: 'Error', $config['App']['errors']['email_from']); $handler->setFormatter($formatter); $handlers[] = $handler; } $app->getLog()->setWriter(new Flynsarmy\SlimMonolog\Log\MonologWriter(['handlers' => $handlers])); // View renderer $view = new Slim\Views\Twig(); $view->parserOptions = $config['Twig']; $view->parserExtensions = [new Slim\Views\TwigExtension()]; $app->view($view);
/** * initialize the created the monolog instance */ public static function initialize() { // load the file config \Config::load('log', true); // make sure the log directories exist try { // determine the name and location of the logfile $path = \Config::get('log.log_path', APPPATH . 'logs' . DS); $filename = \Config::get('log.log_file', null); if (empty($filename)) { $filename = $path . LOG_FILENAME; } else { $filename = $path . $filename; } } catch (\Exception $e) { \Config::set('log.log_threshold', \Fuel::L_NONE); throw new \FuelException('Unable to create or write to the log file. Please check the permissions on ' . \Config::get('log_path') . '. (' . $e->getMessage() . ')'); } if (\Config::get("log.loggerconfig") !== null) { $handler = \Config::get("log.loggerconfig.handler"); foreach ($handler as $key => $value) { $level = \Monolog\Logger::DEBUG; switch ($value['level']) { case "DEBUG": $level = \Monolog\Logger::DEBUG; break; case "INFO": $level = \Monolog\Logger::INFO; break; case "NOTICE": $level = \Monolog\Logger::NOTICE; break; case "WARNING": $level = \Monolog\Logger::WARNING; break; case "ERROR": $level = \Monolog\Logger::ERROR; break; case "CRITICAL": $level = \Monolog\Logger::CRITICAL; break; case "ALERT": $level = \Monolog\Logger::ALERT; break; case "EMERGENCY": $level = \Monolog\Logger::EMERGENCY; break; } switch ($key) { case "Stream": $output = "%datetime% | %level_name% | %message%\n"; $formatter = new \Monolog\Formatter\LineFormatter($output . PHP_EOL, "Y-m-d H:i:s"); $stream = new \Monolog\Handler\StreamHandler($filename, $level); $stream->setFormatter($formatter); static::$monolog->pushHandler($stream); break; case "File": $output = "%datetime% | %level_name% | %message%\n"; $formatter = new \Monolog\Formatter\LineFormatter($output . PHP_EOL, "Y-m-d H:i:s"); $stream = new \Monolog\Handler\RotatingFileHandler($filename, $value['rotate'], $level); $stream->setFormatter($formatter); static::$monolog->pushHandler($stream); break; case "ChromePHP": static::$monolog->pushHandler(new \Monolog\Handler\FingersCrossedHandler(new \Monolog\Handler\ChromePHPHandler(), new \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy($level))); break; } } } }
public static function get_logger() { if (!self::$logger) { self::$logger = new Monolog\Logger('dbsteward'); self::$logger->pushHandler($sh = new Monolog\Handler\StreamHandler('php://stderr', static::$LOG_LEVEL)); $sh->setFormatter(new DBStewardConsoleLogFormatter()); } return self::$logger; }
| The first thing we will do is create a new Laravel application instance | which serves as the "glue" for all the components of Laravel, and is | the IoC container for the system binding all of the various parts. | */ $app = new Illuminate\Foundation\Application(realpath(__DIR__ . '/../')); $app->configureMonologUsing(function (\Monolog\Logger $monolog) use($app) { if (env('APP_USE_LOG_SERVER', false) === true) { $logServer = env('APP_LOG_SERVER', 'logs'); $publisher = new \Gelf\Publisher(new \Gelf\Transport\UdpTransport($logServer)); $handler = new \Monolog\Handler\GelfHandler($publisher); $handler->pushProcessor(new \Monolog\Processor\WebProcessor()); $handler->pushProcessor(new \Monolog\Processor\UidProcessor()); $monolog->pushHandler($handler); } else { $monolog->pushHandler($handler = new \Monolog\Handler\StreamHandler($app->storagePath() . '/logs/laravel.log')); $handler->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, true, true)); } }); /* |-------------------------------------------------------------------------- | Bind Important Interfaces |-------------------------------------------------------------------------- | | Next, we need to bind some important interfaces into the container so | we will be able to resolve them when needed. The kernels serve the | incoming requests to this application from both the web and CLI. | */ $app->singleton(Illuminate\Contracts\Http\Kernel::class, App\Http\Kernel::class); $app->singleton(Illuminate\Contracts\Console\Kernel::class, App\Console\Kernel::class);
/** * Saving Application instance for later use * * @param Container $container * @return void */ public function provideServices(Container $container) { $this->container = $container; /* * Creating and registering our error handler */ $whoops = new Run(); $whoops->register(); /** @var \Venta\Contracts\Kernel\Kernel $kernel */ $kernel = $container->get(Kernel::class); if ($kernel->isCli()) { // We don't need pretty pages in cli mode $whoops->allowQuit(true); $whoops->sendHttpCode(false); $whoops->writeToOutput(true); $whoops->pushHandler(new PlainTextHandler()); } else { // Push pretty page handler only for local environment $whoops->pushHandler($kernel->getEnvironment() === 'local' ? new PrettyPageHandler() : new PlainTextHandler()); } /** * Bind error handler */ $container->bindClass(RunInterface::class, $whoops, ['error_handler']); /* * Bind PSR-3 logger */ $container->share(\Monolog\Logger::class, function (Container $c) { $logger = new \Monolog\Logger('venta'); $handler = new \Monolog\Handler\StreamHandler(__DIR__ . '/../storage/logs/app.log'); $handler->pushProcessor(function ($record) use($c) { /** @var \Venta\Contracts\Kernel\Kernel $kernel */ $kernel = $c->get(Kernel::class); if ($kernel->isCli()) { // Add cli command related extra info /** @var \Symfony\Component\Console\Input\InputInterface $input */ $input = $c->get(InputInterface::class); $record['extra']['command'] = $input->getFirstArgument(); $record['extra']['arguments'] = $input->getArguments(); $record['extra']['options'] = $input->getOptions(); } else { // Add HTTP request related extra info /** @var \Psr\Http\Message\ServerRequestInterface $request */ $request = $c->get(ServerRequestInterface::class); $server = $request->getServerParams(); $record['extra']['url'] = $request->getUri()->getPath(); $record['extra']['http_method'] = $request->getMethod(); $record['extra']['host'] = $request->getUri()->getHost(); $record['extra']['referer'] = $request->getHeader('referer'); $record['extra']['user_agent'] = $request->getHeader('user-agent'); $record['extra']['ip'] = $server['REMOTE_ADDR'] ?? null; } return $record; }); $handler->setFormatter(new \Monolog\Formatter\LineFormatter()); $logger->pushHandler($handler); return $logger; }, ['logger', LoggerInterface::class]); }
/** * @return Monolog */ private function getLogger() { $logger = new \Monolog\Logger('Commands'); $fileHandler = new \Monolog\Handler\RotatingFileHandler(storage_path() . '/logs/commands.log'); $streamHandler = new \Monolog\Handler\StreamHandler("php://output"); $lineFormatter = new \Monolog\Formatter\LineFormatter("[%datetime%] %message% %context% %extra%\n", null, true, true); $fileHandler->setFormatter($lineFormatter); $streamHandler->setFormatter($lineFormatter); $logger->pushHandler($fileHandler); $logger->pushHandler($streamHandler); return $logger; }
<?php /* Monolog logger */ // https://github.com/Seldaek/monolog $this['logger'] = $this->share(function () { $monolog = new \Monolog\Logger($this->setting('name')); $settings = $this->setting('factory')['logger']; foreach ($settings['handlers'] as $handel) { switch ($handel['type']) { case 'streamHandler': if (isset($handel['level'])) { $streamHandlerLevel = $handel['level']; } else { $streamHandlerLevel = \Monolog\Logger::WARNING; } $streamHandler = new \Monolog\Handler\StreamHandler(APP_ROOT . '/' . $handel['location'] . date("ymd") . '.log', $streamHandlerLevel); if (isset($handel['formatter'])) { switch ($handel['formatter']) { case 'JsonFormatter': $formatter = new \Monolog\Formatter\JsonFormatter(); $streamHandler->setFormatter($formatter); break; case 'LineFormatter': $formatter = new \Monolog\Formatter\LineFormatter(); $streamHandler->setFormatter($formatter); break; } } if (isset($handel['handler'])) { switch ($handel['handler']) { case 'FingersCrossedHandler':