Skip to content

Commit

Permalink
[+TASK] restored commit from backups.
Browse files Browse the repository at this point in the history
  • Loading branch information
Karl Spies authored and Karl Spies committed May 21, 2014
1 parent 01ab8c8 commit 0ca8185
Show file tree
Hide file tree
Showing 34 changed files with 2,525 additions and 182 deletions.
698 changes: 674 additions & 24 deletions LICENSE.txt

Large diffs are not rendered by default.

12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Magento Module Advanced Logger
# Magento Module for advanced logging

The purpose of this project is to have a simple framework for different logging adapters.

Expand Down Expand Up @@ -59,7 +59,7 @@ Configure the different loggers in `System > Configuration > Advanced > Firegent

## Further Information

### Core Contributors
### Contributors

* Karl Spies
* Christoph
Expand All @@ -70,6 +70,7 @@ Configure the different loggers in `System > Configuration > Advanced > Firegent
* Marco Becker
* Nicolai Essig
* Daniel Kröger
* Michael Ryvlin

### Current Status of Project

Expand All @@ -83,6 +84,7 @@ Complete, working logger interfaces:
- RSyslog (UDP)
- Loggly (UDP/HTTPS)
- Chromelogger
- Logstash

It is possible to use **Multiple-Targets**!

Expand All @@ -95,11 +97,17 @@ It is possible to use **Multiple-Targets**!
### External libraries

For XMPP we use https://github.com/cweiske/xmpphp.
For ChromeLogger we use https://github.com/ccampbell/chromephp

### How to contribute

Make a fork, commit to develop branch and make a pull request

### Some Hints
* There are combinations there doesn't work together
** You can't use Chromelogger with the embeded queueing model, because the queueing takes place after the response
is send to the client

Licence
-------
[GNU General Public License, version 3 (GPLv3)](http://opensource.org/licenses/gpl-3.0)
2 changes: 2 additions & 0 deletions modman
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ src/app/design/adminhtml/default/default/template/firegento_logger/ app/desi
src/lib/XMPPHP/ lib/XMPPHP/
src/lib/Graylog2-gelf-php/ lib/Graylog2-gelf-php/
src/lib/rsyslog/ lib/rsyslog
src/lib/chromelogger/ lib/chromelogger
src/shell/logger.php shell/logger.php
src/skin/adminhtml/default/default/firegento_logger.css skin/adminhtml/default/default/firegento_logger.css
src/app/locale/en_US/template/email/firegento_logger app/locale/en_US/template/email/firegento_logger
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,19 @@ protected function _prepareColumns()
'index' => 'timestamp',
));

$this->addColumn('advanced_info', array(
'header' => Mage::helper('firegento_logger')->__('Advanced Info'),
'align' => 'left',
'index' => 'advanced_info',
'frame_callback'=> array($this, 'decorateAdvancedInfo')
));

$this->addColumn('severity', array(
'header' => Mage::helper('firegento_logger')->__('Log Level'),
'align' => 'left',
'index' => 'severity',
'type' => 'options',
'width' => '120px',
'options' => $this->getSeverityOptions(),
'frame_callback' => array($this, 'decorateSeverity')
));
Expand Down Expand Up @@ -133,6 +141,17 @@ public function decorateSeverity($value, $row)
return '<span class="' . $class . '"><span>' . $value . '</span></span>';
}

/**
* Formats advanced info
*
* @param string $value
* @return string
*/
public function decorateAdvancedInfo($value)
{
return nl2br($value);
}

/**
* Retrieve the severity options
*
Expand All @@ -151,4 +170,12 @@ public function getSeverityOptions()
Zend_Log::DEBUG => $this->_helper->__('Debug'),
);
}

/**
* @param $item FireGento_Logger_Model_Db_Entry
*/
public function getRowUrl($item)
{
return $this->getUrl('*/*/view', array('loggerentry_id' => $item->getId()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

class FireGento_Logger_Block_Adminhtml_Logger_View extends Mage_Core_Block_Template
{
/**
* @return FireGento_Logger_Model_Db_Entry
*/
public function getLoggerEntry()
{
return Mage::registry('current_loggerentry');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

class FireGento_Logger_Block_Adminhtml_System_Config_EmailNotificationRule
extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
{
/**
* Prepare fields to render
*/
protected function _prepareToRender()
{
$this->addColumn('pattern', array(
'label' => Mage::helper('firegento_logger')->__('Pattern'),
'style' => 'width:150px',
));

$severityRenderer = new FireGento_Logger_Block_Adminhtml_System_Config_Renderer_Select;
$severityRenderer->setValues(
Mage::getSingleton('firegento_logger/system_config_source_prioritydefault')->toOptionArray()
);
$this->addColumn('severity', array(
'label' => Mage::helper('firegento_logger')->__('Severity'),
'style' => 'width:100px',
'renderer' => $severityRenderer,
));

$this->addColumn('email_list_csv', array(
'label' => Mage::helper('firegento_logger')->__('Email(s)'),
'style' => 'width:150px',
));

$this->_addButtonLabel = Mage::helper('firegento_logger')->__('Add Notification Rule');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,14 @@ public function __construct($format = null)
/**
* Formats data into a single line to be written by the writer.
*
* @param array $event Event Data
* @param FireGento_Logger_Model_Event $event Event Data
* @param bool $enableBacktrace Backtrace Flag
* @return string formatted line to write to the log
*/
public function format($event, $enableBacktrace = false)
{
Mage::helper('firegento_logger')->addEventMetadata($event, '-', $enableBacktrace);

return parent::format($event);
return parent::format($event->getEventDataArray());
}
}
40 changes: 40 additions & 0 deletions src/app/code/community/FireGento/Logger/Formatter/Simple.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php
/**
* This file is part of a FireGento e.V. module.
*
* This FireGento e.V. module is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This script 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 General Public License for more details.
*
* PHP version 5
*
* @category FireGento
* @package FireGento_Logger
* @author FireGento Team <team@firegento.com>
* @copyright 2013 FireGento Team (http://www.firegento.com)
* @license http://opensource.org/licenses/gpl-3.0 GNU General Public License, version 3 (GPLv3)
*/
/**
* Simple Formatted Logger
*
* @category FireGento
* @package FireGento_Logger
* @author FireGento Team <team@firegento.com>
*/
class FireGento_Logger_Formatter_Simple extends Zend_Log_Formatter_Simple
{
/**
* Formats data into a single line to be written by the writer.
*
* @param FireGento_Logger_Model_Event $event Event Data
* @return string formatted line to write to the log
*/
public function format($event)
{
return parent::format($event->getEventDataArray());
}
}
98 changes: 71 additions & 27 deletions src/app/code/community/FireGento/Logger/Helper/Data.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ class FireGento_Logger_Helper_Data extends Mage_Core_Helper_Abstract
*/
protected $_targetMap = null;

/**
* @var null
*/
protected $_notificationRules = null;

/**
* Get logger config value
*
Expand Down Expand Up @@ -114,22 +119,23 @@ public function addPriorityFilter(Zend_Log_Writer_Abstract $writer, $configPath
/**
* Add useful metadata to the event
*
* @param array &$event Event Data
* @param FireGento_Logger_Model_Event &$event Event Data
* @param null|string $notAvailable Not available
* @param bool $enableBacktrace Flag for Backtrace
*/
public function addEventMetadata(&$event, $notAvailable = null, $enableBacktrace = false)
{
$event['file'] = $notAvailable;
$event['line'] = $notAvailable;
$event['backtrace'] = $notAvailable;
$event['store_code'] = Mage::app()->getStore()->getCode();
$event
->setFile($notAvailable)
->setLine($notAvailable)
->setBacktrace($notAvailable)
->setStoreCode(Mage::app()->getStore()->getCode());

// Add request time
if (isset($_SERVER['REQUEST_TIME_FLOAT'])) {
$event['time_elapsed'] = sprintf('%f', microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
$event->setTimeElapsed(sprintf('%f', microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']));
} else {
$event['time_elapsed'] = sprintf('%d', time() - $_SERVER['REQUEST_TIME']);
$event->setTimeElapsed(sprintf('%d', time() - $_SERVER['REQUEST_TIME']));
}

// Find file and line where message originated from and optionally get backtrace lines
Expand Down Expand Up @@ -161,8 +167,9 @@ public function addEventMetadata(&$event, $notAvailable = null, $enableBacktrace
)
) {
if (isset($frame['file']) && isset($frame['line'])) {
$event['file'] = str_replace($basePath, '', $frame['file']);
$event['line'] = $frame['line'];
$event
->setFile(str_replace($basePath, '', $frame['file']))
->setLine($frame['line']);
if ($maxBacktraceLines) {
$backtraceFrames = array();
} elseif ($nextIsFirst) {
Expand Down Expand Up @@ -227,22 +234,23 @@ public function addEventMetadata(&$event, $notAvailable = null, $enableBacktrace
$backtrace[] = "#{$index} {$frame['file']}:{$frame['line']} $function($args)";
}

$event['backtrace'] = implode("\n", $backtrace);
$event->setBacktrace(implode("\n", $backtrace));
}

foreach (array('REQUEST_METHOD', 'REQUEST_URI', 'HTTP_USER_AGENT') as $key) {
if (!empty($_SERVER[$key])) {
$event[$key] = $_SERVER[$key];
} else {
$event[$key] = $notAvailable;
}
if (!empty($_SERVER['REQUEST_METHOD'])) {
$event->setRequestMethod($_SERVER['REQUEST_METHOD']);
} else {
$event->setRequestMethod(php_sapi_name());
}

if ($event['REQUEST_METHOD'] == $notAvailable) {
$event['REQUEST_METHOD'] = php_sapi_name();
if (!empty($_SERVER['REQUEST_URI'])) {
$event->setRequestMethod($_SERVER['REQUEST_URI']);
} else {
$event->setRequestMethod($_SERVER['PHP_SELF']);
}
if ($event['REQUEST_URI'] == $notAvailable && isset($_SERVER['PHP_SELF'])) {
$event['REQUEST_URI'] = $_SERVER['PHP_SELF'];

if (!empty($_SERVER['HTTP_USER_AGENT'])) {
$event->setHttpUserAgent($_SERVER['HTTP_USER_AGENT']);
}

// Fetch request data
Expand All @@ -259,22 +267,58 @@ public function addEventMetadata(&$event, $notAvailable = null, $enableBacktrace
if (Mage::registry('raw_post_data')) {
$requestData[] = ' RAWPOST|'.substr(Mage::registry('raw_post_data'), 0, 1000);
}
$event['REQUEST_DATA'] = $requestData ? implode("\n", $requestData) : $notAvailable;

$event->setRequestData($requestData ? implode("\n", $requestData) : $notAvailable);

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$event['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
$event->setRemoteAddress($_SERVER['HTTP_X_FORWARDED_FOR']);
} elseif (!empty($_SERVER['REMOTE_ADDR'])) {
$event['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
$event->setRemoteAddress($_SERVER['REMOTE_ADDR']);
} else {
$event['REMOTE_ADDR'] = $notAvailable;
$event->setRemoteAddress($notAvailable);
}

// Add hostname to log message ...
if (gethostname() !== false) {
$event['HOSTNAME'] = gethostname();
$event->setHostname(gethostname());
} else {
$event['HOSTNAME'] = 'Could not determine hostname !';
$event->setHostname('Could not determine hostname !');
}
}

public function getEmailNotificationRules()
{
if ($this->_notificationRules != null) {
return $this->_notificationRules;
}

$notificationRulesSerialized = $this->getLoggerConfig('db/email_notification_rule');
if (! $notificationRulesSerialized) {
return array();
}
$notificationRules = unserialize($notificationRulesSerialized);

$this->_notificationRules = $notificationRules;
return $notificationRules;
}

/**
* Convert Array to Event Object
*
* @param array $event Event
*
* @return FireGento_Logger_Model_Event
*/
public function getEventObjectFromArray($event)
{
// if more than one logger is active the first logger convert the array
if(is_object($event) && get_class($event) == get_class(Mage::getModel('firegento_logger/event'))) {
return $event;
}
return Mage::getModel('firegento_logger/event')
->setTimestamp($event['timestamp'])
->setMessage($event['message'])
->setPriority($event['priority'])
->setPriorityName($event['priorityName']);
}

}
Loading

0 comments on commit 0ca8185

Please sign in to comment.