mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-11-04 13:14:41 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
 | 
						|
 | 
						|
use Icinga\Application\Config;
 | 
						|
use Icinga\Application\Logger;
 | 
						|
use Icinga\Data\ConfigObject;
 | 
						|
use Icinga\Protocol\File\FileReader;
 | 
						|
use Icinga\Web\Controller;
 | 
						|
use Icinga\Web\Url;
 | 
						|
use Icinga\Web\Widget\Tabextension\DashboardAction;
 | 
						|
use Icinga\Web\Widget\Tabextension\OutputFormat;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class ListController
 | 
						|
 *
 | 
						|
 * Application wide controller for various listing actions
 | 
						|
 */
 | 
						|
class ListController extends Controller
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Add title tab
 | 
						|
     *
 | 
						|
     * @param string $action
 | 
						|
     */
 | 
						|
    protected function addTitleTab($action)
 | 
						|
    {
 | 
						|
        $this->getTabs()->add($action, array(
 | 
						|
            'label' => ucfirst($action),
 | 
						|
            'url' => Url::fromPath(
 | 
						|
                    'list/'
 | 
						|
                    . str_replace(' ', '', $action)
 | 
						|
                )
 | 
						|
        ))->extend(new OutputFormat())->extend(new DashboardAction())->activate($action);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Display the application log
 | 
						|
     */
 | 
						|
    public function applicationlogAction()
 | 
						|
    {
 | 
						|
        if (! Logger::writesToFile()) {
 | 
						|
            $this->httpNotFound('Page not found');
 | 
						|
        }
 | 
						|
 | 
						|
        $this->addTitleTab('application log');
 | 
						|
 | 
						|
        $resource = new FileReader(new ConfigObject(array(
 | 
						|
            'filename'  => Config::app()->get('logging', 'file'),
 | 
						|
            'fields'    => '/(?<!.)(?<datetime>[0-9]{4}(?:-[0-9]{2}){2}'    // date
 | 
						|
                . 'T[0-9]{2}(?::[0-9]{2}){2}(?:[\+\-][0-9]{2}:[0-9]{2})?)'  // time
 | 
						|
                . ' - (?<loglevel>[A-Za-z]+) - (?<message>.*)(?!.)/msS'     // loglevel, message
 | 
						|
        )));
 | 
						|
        $this->view->logData = $resource->select()->order('DESC');
 | 
						|
 | 
						|
        $this->setupLimitControl();
 | 
						|
        $this->setupPaginationControl($this->view->logData);
 | 
						|
    }
 | 
						|
}
 |