Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBenaka Moorthi <benaka.moorthi@gmail.com>2013-09-27 16:00:47 +0400
committerBenaka Moorthi <benaka.moorthi@gmail.com>2013-09-27 16:00:47 +0400
commit5657acb8d378471fbfe4606313e760b495f6aecb (patch)
treeb0669c8e19da1592fee1b7e9f9ee268b2578b422 /core
parent77f606bb847c4bd4e4dff7dade09d6d60476a59b (diff)
Use tag concept instead of plugin when logging and default to calling class name when plugin can't be determined.
Diffstat (limited to 'core')
-rw-r--r--core/Db/Schema/Myisam.php2
-rw-r--r--core/Error.php6
-rw-r--r--core/ExceptionHandler.php6
-rw-r--r--core/Log.php71
-rw-r--r--core/Updates/2.0-a7.php4
5 files changed, 53 insertions, 36 deletions
diff --git a/core/Db/Schema/Myisam.php b/core/Db/Schema/Myisam.php
index 990b1289b5..f9dc5faa1a 100644
--- a/core/Db/Schema/Myisam.php
+++ b/core/Db/Schema/Myisam.php
@@ -127,7 +127,7 @@ class Myisam implements SchemaInterface
'logger_message' => "CREATE TABLE {$prefixTables}logger_message (
idlogger_message INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- plugin VARCHAR(50) NULL,
+ tag VARCHAR(50) NULL,
timestamp TIMESTAMP NULL,
level TINYINT NULL,
message TEXT NULL,
diff --git a/core/Error.php b/core/Error.php
index 02e8d1fcdc..b186cdd731 100644
--- a/core/Error.php
+++ b/core/Error.php
@@ -117,17 +117,17 @@ class Error
}
}
- public static function formatFileAndDBLogMessage(&$message, $level, $pluginName, $datetime, $log)
+ public static function formatFileAndDBLogMessage(&$message, $level, $tag, $datetime, $log)
{
if ($message instanceof Error) {
$message = $message->errfile . '(' . $message->errline . '): ' . $message->getErrNoString()
. ' - ' . $message->errstr . "\n" . $message->backtrace;
- $message = $log->formatMessage($level, $pluginName, $datetime, $message);
+ $message = $log->formatMessage($level, $tag, $datetime, $message);
}
}
- public static function formatScreenMessage(&$message, $level, $pluginName, $datetime, $log)
+ public static function formatScreenMessage(&$message, $level, $tag, $datetime, $log)
{
if ($message instanceof Error) {
$errno = $message->errno & error_reporting();
diff --git a/core/ExceptionHandler.php b/core/ExceptionHandler.php
index b070766db8..5fccfe82e2 100644
--- a/core/ExceptionHandler.php
+++ b/core/ExceptionHandler.php
@@ -39,17 +39,17 @@ class ExceptionHandler
set_exception_handler(array('\\Piwik\\ExceptionHandler', 'exceptionHandler'));
}
- public static function formatFileAndDBLogMessage(&$message, $level, $pluginName, $datetime, $log)
+ public static function formatFileAndDBLogMessage(&$message, $level, $tag, $datetime, $log)
{
if ($message instanceof \Exception) {
$message = sprintf("%s(%d): %s\n%s", $message->getFile(), $message->getLine(), $message->getMessage(),
self::$debugBacktraceForTests ?: $message->getTraceAsString());
- $message = $log->formatMessage($level, $pluginName, $datetime, $message);
+ $message = $log->formatMessage($level, $tag, $datetime, $message);
}
}
- public static function formatScreenMessage(&$message, $level, $pluginName, $datetime, $log)
+ public static function formatScreenMessage(&$message, $level, $tag, $datetime, $log)
{
if ($message instanceof \Exception) {
if (!Common::isPhpCliMode()) {
diff --git a/core/Log.php b/core/Log.php
index 287b5c7f8e..8aa989e450 100644
--- a/core/Log.php
+++ b/core/Log.php
@@ -47,7 +47,7 @@ class Log
* This event is called when trying to log an object to a file. Plugins can use
* this event to convert objects to strings before they are logged.
*
- * Callback signature: function (&$message, $level, $pluginName, $datetime, $logger)
+ * Callback signature: function (&$message, $level, $tag, $datetime, $logger)
*
* The $message parameter is the object that is being logged. Event handlers should
* check if the object is of a certain type and if it is, set $message to the
@@ -59,7 +59,7 @@ class Log
* This event is called when trying to log an object to the screen. Plugins can use
* this event to convert objects to strings before they are logged.
*
- * Callback signature: function (&$message, $level, $pluginName, $datetiem, $logger)
+ * Callback signature: function (&$message, $level, $tag, $datetiem, $logger)
*
* The $message parameter is the object that is being logged. Event handlers should
* check if the object is of a certain type and if it is, set $message to the
@@ -71,7 +71,7 @@ class Log
* This event is called when trying to log an object to a database table. Plugins can use
* this event to convert objects to strings before they are logged.
*
- * Callback signature: function (&$message, $level, $pluginName, $datetiem, $logger)
+ * Callback signature: function (&$message, $level, $tag, $datetiem, $logger)
*
* The $message parameter is the object that is being logged. Event handlers should
* check if the object is of a certain type and if it is, set $message to the
@@ -125,12 +125,12 @@ class Log
private $writers = array();
/**
- * The log message format string that turns a plugin name, date-time and message into
+ * The log message format string that turns a tag name, date-time and message into
* one string to log.
*
* @var string
*/
- private $logMessageFormat = "[%pluginName%:%datetime%] %message%";
+ private $logMessageFormat = "[%tag%:%datetime%] %message%";
/**
* If we're logging to a file, this is the path to the file to log to.
@@ -218,24 +218,24 @@ class Log
}
/**
- * Creates log message combining logging info including a log level, plugin name,
+ * Creates log message combining logging info including a log level, tag name,
* date time, and caller provided log message. The log message can be set through
* the string_message_format ini option in the [log] section. By default it will
* create log messages like:
*
- * [plugin:datetime] log message
+ * [tag:datetime] log message
*
* @param int $level
- * @param string $pluginName
+ * @param string $tag
* @param string $datetime
* @param string $message
* @return string
*/
- public function formatMessage($level, $pluginName, $datetime, $message)
+ public function formatMessage($level, $tag, $datetime, $message)
{
return str_replace(
- array("%pluginName%", "%message%", "%datetime%", "%level%"),
- array($pluginName, $message, $datetime, $this->getStringLevel($level)),
+ array("%tag%", "%message%", "%datetime%", "%level%"),
+ array($tag, $message, $datetime, $this->getStringLevel($level)),
$this->logMessageFormat
);
}
@@ -303,12 +303,12 @@ class Log
return $writer;
}
- private function logToFile($level, $pluginName, $datetime, $message)
+ private function logToFile($level, $tag, $datetime, $message)
{
if (is_string($message)) {
- $message = $this->formatMessage($level, $pluginName, $datetime, $message);
+ $message = $this->formatMessage($level, $tag, $datetime, $message);
} else {
- Piwik_PostEvent(self::FORMAT_FILE_MESSAGE_EVENT, array(&$message, $level, $pluginName, $datetime, $this));
+ Piwik_PostEvent(self::FORMAT_FILE_MESSAGE_EVENT, array(&$message, $level, $tag, $datetime, $this));
}
if (empty($message)) {
@@ -318,12 +318,12 @@ class Log
file_put_contents($this->logToFilePath, $message . "\n", FILE_APPEND);
}
- private function logToScreen($level, $pluginName, $datetime, $message)
+ private function logToScreen($level, $tag, $datetime, $message)
{
if (is_string($message)) {
- $message = '<pre>' . $this->formatMessage($level, $pluginName, $datetime, $message) . '</pre>';
+ $message = '<pre>' . $this->formatMessage($level, $tag, $datetime, $message) . '</pre>';
} else {
- Piwik_PostEvent(self::FORMAT_SCREEN_MESSAGE_EVENT, array(&$message, $level, $pluginName, $datetime, $this));
+ Piwik_PostEvent(self::FORMAT_SCREEN_MESSAGE_EVENT, array(&$message, $level, $tag, $datetime, $this));
}
if (empty($message)) {
@@ -333,12 +333,12 @@ class Log
echo $message . "\n";
}
- private function logToDatabase($level, $pluginName, $datetime, $message)
+ private function logToDatabase($level, $tag, $datetime, $message)
{
if (is_string($message)) {
- $message = $this->formatMessage($level, $pluginName, $datetime, $message);
+ $message = $this->formatMessage($level, $tag, $datetime, $message);
} else {
- Piwik_PostEvent(self::FORMAT_DATABASE_MESSAGE_EVENT, array(&$message, $level, $pluginName, $datetime, $this));
+ Piwik_PostEvent(self::FORMAT_DATABASE_MESSAGE_EVENT, array(&$message, $level, $tag, $datetime, $this));
}
if (empty($message)) {
@@ -346,9 +346,9 @@ class Log
}
$sql = "INSERT INTO " . Common::prefixTable('logger_message')
- . " (plugin, timestamp, level, message)"
+ . " (tag, timestamp, level, message)"
. " VALUES (?, ?, ?, ?)";
- Db::query($sql, array($pluginName, $datetime, $level, (string)$message));
+ Db::query($sql, array($tag, $datetime, $level, (string)$message));
}
private function doLog($level, $message, $sprintfParams = array())
@@ -362,23 +362,28 @@ class Log
}
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
- $pluginName = Plugin::getPluginNameFromBacktrace($backtrace);
+ $tag = Plugin::getPluginNameFromBacktrace($backtrace);
- $this->writeMessage($level, $pluginName, $datetime, $message);
+ // if we can't determine the plugin, use the name of the calling class
+ if ($tag == false) {
+ $tag = $this->getClassNameThatIsLogging($backtrace);
+ }
+
+ $this->writeMessage($level, $tag, $datetime, $message);
}
}
- private function writeMessage($level, $pluginName, $datetime, $message)
+ private function writeMessage($level, $tag, $datetime, $message)
{
foreach ($this->writers as $writer) {
- call_user_func($writer, $level, $pluginName, $datetime, $message);
+ call_user_func($writer, $level, $tag, $datetime, $message);
}
// errors are always printed to screen
if ($level == self::ERROR
&& !$this->loggingToScreen
) {
- $this->logToScreen($level, $pluginName, $datetime, $message);
+ $this->logToScreen($level, $tag, $datetime, $message);
}
}
@@ -445,4 +450,16 @@ class Log
);
return $levelToName[$level];
}
+
+ private function getClassNameThatIsLogging($backtrace)
+ {
+ foreach ($backtrace as $tracepoint) {
+ if (isset($tracepoint['class'])
+ && $tracepoint['class'] != "Piwik\\Log"
+ ) {
+ return $tracepoint['class'];
+ }
+ }
+ return false;
+ }
} \ No newline at end of file
diff --git a/core/Updates/2.0-a7.php b/core/Updates/2.0-a7.php
index 9674f85eaa..2391476d1b 100644
--- a/core/Updates/2.0-a7.php
+++ b/core/Updates/2.0-a7.php
@@ -22,7 +22,7 @@ class Piwik_Updates_2_0_a7 extends Updates
return array(
// ignore existing column name error (1060)
'ALTER TABLE ' . Common::prefixTable('logger_message')
- . " ADD COLUMN plugin VARCHAR(50) NULL AFTER idlogger_message" => 1060,
+ . " ADD COLUMN tag VARCHAR(50) NULL AFTER idlogger_message" => 1060,
'ALTER TABLE ' . Common::prefixTable('logger_message')
. " ADD COLUMN level TINYINT AFTER timestamp" => 1060,
@@ -31,7 +31,7 @@ class Piwik_Updates_2_0_a7 extends Updates
static function update()
{
- // add plugin & level columns to logger_message table
+ // add tag & level columns to logger_message table
Updater::updateDatabase(__FILE__, self::getSql());
}
}