parent
6b704a780d
commit
3a4521a012
@ -1,78 +1,39 @@ |
||||
<?php |
||||
/** |
||||
* ownCloud |
||||
* |
||||
* @author Robin Appelman |
||||
* @copyright 2012 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/>. |
||||
* |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
/** |
||||
*logging utilities |
||||
* logging utilities |
||||
* |
||||
* Log is saved at data/owncloud.log (on default) |
||||
* Log is saved by default at data/owncloud.log using OC_Log_Owncloud. |
||||
* Selecting other backend is done with a config option 'log_type'. |
||||
*/ |
||||
|
||||
class OC_Log{ |
||||
class OC_Log { |
||||
const DEBUG=0; |
||||
const INFO=1; |
||||
const WARN=2; |
||||
const ERROR=3; |
||||
const FATAL=4; |
||||
|
||||
static protected $class = null; |
||||
|
||||
/** |
||||
* 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); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* get entries from the log in reverse chronological order |
||||
* @param int limit |
||||
* @param int offset |
||||
* @return array |
||||
*/ |
||||
public static function getEntries($limit=50,$offset=0){ |
||||
$datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT.'/data' ); |
||||
$logFile=OC_Config::getValue( "logfile", $datadir.'/owncloud.log' ); |
||||
$entries=array(); |
||||
if(!file_exists($logFile)){ |
||||
return array(); |
||||
} |
||||
$contents=file($logFile); |
||||
if(!$contents){//error while reading log |
||||
return array(); |
||||
} |
||||
$end=max(count($contents)-$offset-1,0); |
||||
$start=max($end-$limit,0); |
||||
for($i=$end;$i>$start;$i--){ |
||||
$entries[]=json_decode($contents[$i]); |
||||
public static function write($app, $message, $level) { |
||||
if (!self::$class) { |
||||
self::$class = 'OC_Log_'.ucfirst(OC_Config::getValue('log_type', 'owncloud')); |
||||
call_user_func(array(self::$class, 'init')); |
||||
} |
||||
return $entries; |
||||
$log_class=self::$class; |
||||
$log_class::write($app, $message, $level); |
||||
} |
||||
} |
||||
|
@ -0,0 +1,78 @@ |
||||
<?php |
||||
/** |
||||
* ownCloud |
||||
* |
||||
* @author Robin Appelman |
||||
* @copyright 2012 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_Owncloud { |
||||
/** |
||||
* Init class data |
||||
*/ |
||||
public static function init() { |
||||
} |
||||
|
||||
/** |
||||
* 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); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* get entries from the log in reverse chronological order |
||||
* @param int limit |
||||
* @param int offset |
||||
* @return array |
||||
*/ |
||||
public static function getEntries($limit=50, $offset=0){ |
||||
$datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT.'/data' ); |
||||
$logFile=OC_Config::getValue( "logfile", $datadir.'/owncloud.log' ); |
||||
$entries=array(); |
||||
if(!file_exists($logFile)) { |
||||
return array(); |
||||
} |
||||
$contents=file($logFile); |
||||
if(!$contents) {//error while reading log |
||||
return array(); |
||||
} |
||||
$end=max(count($contents)-$offset-1, 0); |
||||
$start=max($end-$limit,0); |
||||
for($i=$end;$i>$start;$i--) { |
||||
$entries[]=json_decode($contents[$i]); |
||||
} |
||||
return $entries; |
||||
} |
||||
} |
@ -0,0 +1,37 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
class OC_Log_Syslog { |
||||
static protected $levels = array( |
||||
OC_Log::DEBUG => LOG_DEBUG, |
||||
OC_Log::INFO => LOG_INFO, |
||||
OC_Log::WARN => LOG_WARNING, |
||||
OC_Log::ERROR => LOG_ERR, |
||||
OC_Log::FATAL => LOG_CRIT, |
||||
); |
||||
|
||||
/** |
||||
* Init class data |
||||
*/ |
||||
public static function init() { |
||||
openlog('ownCloud', LOG_PID | LOG_CONS, LOG_USER); |
||||
// Close at shutdown |
||||
register_shutdown_function('closelog'); |
||||
} |
||||
|
||||
/** |
||||
* write a message in the log |
||||
* @param string $app |
||||
* @param string $message |
||||
* @param int level |
||||
*/ |
||||
public static function write($app, $message, $level) { |
||||
$syslog_level = self::$levels[$level]; |
||||
syslog($syslog_level, '{'.$app.'} '.$message); |
||||
} |
||||
} |
Loading…
Reference in new issue