зеркало из https://github.com/nextcloud/server.git
provide a logging mechanism
This commit is contained in:
Родитель
d11a8f4103
Коммит
820cd0fb75
|
@ -222,6 +222,8 @@ class OC_App{
|
|||
$settings[] = array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "settings", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" ));
|
||||
// admin apps menu
|
||||
$settings[] = array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "settings", "apps.php?installed" ), "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" ));
|
||||
// admin log menu
|
||||
$settings[] = array( "id" => "core_log", "order" => 4, "href" => OC_Helper::linkTo( "settings", "log.php" ), "name" => $l->t("Log"), "icon" => OC_Helper::imagePath( "log", "apps.svg" ));
|
||||
|
||||
// if there're some admin forms
|
||||
if(!empty(self::$adminForms))
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Robin Appelman
|
||||
* @copyright 2011 Robin Appelman icewind1991@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
*logging utilities
|
||||
*
|
||||
* Log is saved at data/owncloud.log (on default)
|
||||
*/
|
||||
|
||||
class OC_Log{
|
||||
const DEBUG=0;
|
||||
const INFO=1;
|
||||
const WARN=2;
|
||||
const ERROR=3;
|
||||
const FATAL=4;
|
||||
|
||||
/**
|
||||
* write a message in the log
|
||||
* @param string $app
|
||||
* @param string $message
|
||||
* @param int level
|
||||
*/
|
||||
public static function write($app,$message,$level){
|
||||
$minLevel=OC_Config::getValue( "loglevel", 2 );
|
||||
if($level>$minLevel){
|
||||
$datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT.'/data' );
|
||||
$logFile=OC_Config::getValue( "logfile", $datadir.'/owncloud.log' );
|
||||
$entry=array('app'=>$app,'message'=>$message,'level'=>$level,'time'=>time());
|
||||
$fh=fopen($logFile,'a');
|
||||
fwrite($fh,json_encode($entry)."\n");
|
||||
fclose($fh);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getEntries(){
|
||||
$datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT.'/data' );
|
||||
$logFile=OC_Config::getValue( "logfile", $datadir.'/owncloud.log' );
|
||||
$entries=array();
|
||||
if(!file_exists($logFile)){
|
||||
return array();
|
||||
}
|
||||
$fh=fopen($logFile,'r');
|
||||
while(!feof($fh)){
|
||||
$line=fgets($fh);
|
||||
if($line){
|
||||
$entries[]=json_decode($line);
|
||||
}
|
||||
}
|
||||
fclose($fh);
|
||||
return $entries;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Robin Appelman
|
||||
* @copyright 2011 Robin Appelman icewind1991@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
require_once('../lib/base.php');
|
||||
OC_Util::checkAdminUser();
|
||||
|
||||
// Load the files we need
|
||||
OC_Util::addStyle( "settings", "settings" );
|
||||
OC_Util::addScript( "settings", "apps" );
|
||||
OC_App::setActiveNavigationEntry( "core_log" );
|
||||
|
||||
$entries=OC_Log::getEntries();
|
||||
|
||||
function compareEntries($a,$b){
|
||||
return $b->time-$a>time;
|
||||
}
|
||||
usort($entries, 'compareEntries');
|
||||
|
||||
$tmpl = new OC_Template( "settings", "log", "user" );
|
||||
$tmpl->assign('entries',$entries);
|
||||
|
||||
$tmpl->printPage();
|
|
@ -0,0 +1,29 @@
|
|||
<?php /**
|
||||
* Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
$levels=array('DEBUG','INFO','WARN','ERROR','FATAL');
|
||||
?>
|
||||
|
||||
<div id="controls">
|
||||
|
||||
</div>
|
||||
<table>
|
||||
<?php foreach($_['entries'] as $entry):?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $levels[$entry->level];?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $entry->app;?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $entry->message;?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $l->l('datetime',$entry->time);?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
Загрузка…
Ссылка в новой задаче