Created TlogDestinationRotatingFile and set it the default destination
This commit is contained in:
@@ -26,31 +26,29 @@ namespace Thelia\Log;
|
|||||||
abstract class AbstractTlogDestination
|
abstract class AbstractTlogDestination
|
||||||
{
|
{
|
||||||
//Tableau de TlogDestinationConfig paramétrant la destination
|
//Tableau de TlogDestinationConfig paramétrant la destination
|
||||||
protected $_configs;
|
protected $_configs = array();
|
||||||
|
|
||||||
//Tableau des lignes de logs stockés avant utilisation par ecrire()
|
//Tableau des lignes de logs stockés avant utilisation par ecrire()
|
||||||
protected $_logs;
|
protected $_logs = array();
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->_configs = array();
|
|
||||||
$this->_logs = array();
|
|
||||||
|
|
||||||
// Initialiser les variables de configuration
|
// Initialiser les variables de configuration
|
||||||
$this->_configs = $this->getConfigs();
|
$this->_configs = $this->getConfigs();
|
||||||
|
|
||||||
// Appliquer la configuration
|
// Appliquer la configuration
|
||||||
$this->configure();
|
$this->configure();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Affecte une valeur à une configuration de la destination
|
//Affecte une valeur à une configuration de la destination
|
||||||
public function setConfig($name, $value)
|
public function setConfig($name, $value, $apply_changes = true)
|
||||||
{
|
{
|
||||||
foreach ($this->_configs as $config) {
|
foreach ($this->_configs as $config) {
|
||||||
if ($config->getName() == $name) {
|
if ($config->getName() == $name) {
|
||||||
$config->setValue($value);
|
$config->setValue($value);
|
||||||
|
|
||||||
// Appliquer les changements
|
// Appliquer les changements
|
||||||
$this->configure();
|
if ($apply_changes) $this->configure();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,9 +37,6 @@ class TlogDestinationFile extends AbstractTlogDestination
|
|||||||
const VAR_MODE = "tlog_destinationfile_mode";
|
const VAR_MODE = "tlog_destinationfile_mode";
|
||||||
const VALEUR_MODE_DEFAULT = "A";
|
const VALEUR_MODE_DEFAULT = "A";
|
||||||
|
|
||||||
const VAR_MAX_FILE_SIZE_KB = "tlog_destinationfile_max_file_size";
|
|
||||||
const MAX_FILE_SIZE_KB_DEFAULT = 1024; // 1 Mb
|
|
||||||
|
|
||||||
protected $path_defaut = false;
|
protected $path_defaut = false;
|
||||||
protected $fh = false;
|
protected $fh = false;
|
||||||
|
|
||||||
@@ -49,10 +46,18 @@ class TlogDestinationFile extends AbstractTlogDestination
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getFilePath() {
|
||||||
|
return $this->getConfig(self::VAR_PATH_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getOpenMode() {
|
||||||
|
return strtolower($this->getConfig(self::VAR_MODE, self::VALEUR_MODE_DEFAULT)) == 'a' ? 'a' : 'w';
|
||||||
|
}
|
||||||
|
|
||||||
public function configure()
|
public function configure()
|
||||||
{
|
{
|
||||||
$file_path = $this->getConfig(self::VAR_PATH_FILE);
|
$file_path = $this->getFilePath();
|
||||||
$mode = strtolower($this->getConfig(self::VAR_MODE, self::VALEUR_MODE_DEFAULT)) == 'a' ? 'a' : 'w';
|
$mode = $this->getOpenMode();
|
||||||
|
|
||||||
if (! empty($file_path)) {
|
if (! empty($file_path)) {
|
||||||
if (! is_file($file_path)) {
|
if (! is_file($file_path)) {
|
||||||
@@ -67,23 +72,6 @@ class TlogDestinationFile extends AbstractTlogDestination
|
|||||||
|
|
||||||
if ($this->fh) @fclose($this->fh);
|
if ($this->fh) @fclose($this->fh);
|
||||||
|
|
||||||
if (filesize($file_path) > 1024 * $this->getConfig(self::VAR_MAX_FILE_SIZE_KB, self::MAX_FILE_SIZE_KB_DEFAULT)) {
|
|
||||||
|
|
||||||
$idx = 1;
|
|
||||||
|
|
||||||
do {
|
|
||||||
$file_path_bk = "$file_path.$idx";
|
|
||||||
|
|
||||||
$idx++;
|
|
||||||
|
|
||||||
} while (file_exists($file_path_bk));
|
|
||||||
|
|
||||||
@rename($file_path, $file_path_bk);
|
|
||||||
|
|
||||||
@touch($file_path);
|
|
||||||
@chmod($file_path, 0666);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->fh = fopen($file_path, $mode);
|
$this->fh = fopen($file_path, $mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,13 +102,6 @@ class TlogDestinationFile extends AbstractTlogDestination
|
|||||||
'Enter E to empty this file for each request, or A to always append logs. Consider resetting the file from time to time',
|
'Enter E to empty this file for each request, or A to always append logs. Consider resetting the file from time to time',
|
||||||
self::VALEUR_MODE_DEFAULT,
|
self::VALEUR_MODE_DEFAULT,
|
||||||
TlogDestinationConfig::TYPE_TEXTFIELD
|
TlogDestinationConfig::TYPE_TEXTFIELD
|
||||||
),
|
|
||||||
new TlogDestinationConfig(
|
|
||||||
self::VAR_MAX_FILE_SIZE_KB,
|
|
||||||
'Maximum log file size, in Kb',
|
|
||||||
'When this size if exeeded, a backup copy of the file is made, and a new log file is opened. As the file size check is performed only at the beginning of a request, the file size may be bigger thant this limit. Note: 1 Mb = 1024 Kb',
|
|
||||||
self::MAX_FILE_SIZE_KB_DEFAULT,
|
|
||||||
TlogDestinationConfig::TYPE_TEXTFIELD
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
101
core/lib/Thelia/Log/Destination/TlogDestinationRotatingFile.php
Normal file
101
core/lib/Thelia/Log/Destination/TlogDestinationRotatingFile.php
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* Thelia */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : info@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* This program is free software; you can redistribute it and/or modify */
|
||||||
|
/* it under the terms of the GNU General Public License as published by */
|
||||||
|
/* the Free Software Foundation; either version 3 of the License */
|
||||||
|
/* */
|
||||||
|
/* This program 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. */
|
||||||
|
/* */
|
||||||
|
/* You should have received a copy of the GNU General Public License */
|
||||||
|
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
namespace Thelia\Log\Destination;
|
||||||
|
|
||||||
|
use Thelia\Log\AbstractTlogDestination;
|
||||||
|
use Thelia\Log\TlogDestinationConfig;
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
|
||||||
|
class TlogDestinationRotatingFile extends TlogDestinationFile
|
||||||
|
{
|
||||||
|
// Nom des variables de configuration
|
||||||
|
// ----------------------------------
|
||||||
|
|
||||||
|
const VAR_MAX_FILE_SIZE_KB = "tlog_destinationfile_max_file_size";
|
||||||
|
const MAX_FILE_SIZE_KB_DEFAULT = 1024; // 1 Mb
|
||||||
|
|
||||||
|
public function __construct($maxFileSize = self::MAX_FILE_SIZE_KB_DEFAULT)
|
||||||
|
{
|
||||||
|
$this->path_defaut = THELIA_ROOT . "log" . DS . self::TLOG_DEFAULT_NAME;
|
||||||
|
|
||||||
|
$this->setConfig(self::VAR_MAX_FILE_SIZE_KB, $maxFileSize, false);
|
||||||
|
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configure()
|
||||||
|
{
|
||||||
|
parent::configure();
|
||||||
|
|
||||||
|
$file_path = $this->getFilePath();
|
||||||
|
$mode = $this->getOpenMode();
|
||||||
|
|
||||||
|
if ($this->fh) @fclose($this->fh);
|
||||||
|
|
||||||
|
if (filesize($file_path) > 1024 * $this->getConfig(self::VAR_MAX_FILE_SIZE_KB, self::MAX_FILE_SIZE_KB_DEFAULT)) {
|
||||||
|
|
||||||
|
$idx = 1;
|
||||||
|
|
||||||
|
do {
|
||||||
|
$file_path_bk = "$file_path.$idx";
|
||||||
|
|
||||||
|
$idx++;
|
||||||
|
|
||||||
|
} while (file_exists($file_path_bk));
|
||||||
|
|
||||||
|
@rename($file_path, $file_path_bk);
|
||||||
|
|
||||||
|
@touch($file_path);
|
||||||
|
@chmod($file_path, 0666);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->fh = fopen($file_path, $mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle()
|
||||||
|
{
|
||||||
|
return Translator::getInstance()->trans('Rotated Text File');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription()
|
||||||
|
{
|
||||||
|
return Translator::getInstance()->trans('Store logs into text file, up to a certian size, then a new file is created');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getConfigs()
|
||||||
|
{
|
||||||
|
$arr = parent::getConfigs();
|
||||||
|
|
||||||
|
$arr[] =
|
||||||
|
new TlogDestinationConfig(
|
||||||
|
self::VAR_MAX_FILE_SIZE_KB,
|
||||||
|
'Maximum log file size, in Kb',
|
||||||
|
'When this size if exeeded, a backup copy of the file is made, and a new log file is opened. As the file size check is performed only at the beginning of a request, the file size may be bigger thant this limit. Note: 1 Mb = 1024 Kb',
|
||||||
|
self::MAX_FILE_SIZE_KB_DEFAULT,
|
||||||
|
TlogDestinationConfig::TYPE_TEXTFIELD
|
||||||
|
);
|
||||||
|
|
||||||
|
return $arr;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -69,7 +69,7 @@ class Tlog Implements LoggerInterface
|
|||||||
|
|
||||||
// default values
|
// default values
|
||||||
const DEFAULT_LEVEL = self::DEBUG;
|
const DEFAULT_LEVEL = self::DEBUG;
|
||||||
const DEFAUT_DESTINATIONS = "Thelia\Log\Destination\TlogDestinationFile";
|
const DEFAUT_DESTINATIONS = "Thelia\Log\Destination\TlogDestinationRotatingFile";
|
||||||
const DEFAUT_PREFIXE = "#INDEX: #LEVEL [#FILE:#FUNCTION()] {#LINE} #DATE #HOUR: ";
|
const DEFAUT_PREFIXE = "#INDEX: #LEVEL [#FILE:#FUNCTION()] {#LINE} #DATE #HOUR: ";
|
||||||
const DEFAUT_FILES = "*";
|
const DEFAUT_FILES = "*";
|
||||||
const DEFAUT_IP = "";
|
const DEFAUT_IP = "";
|
||||||
|
|||||||
Reference in New Issue
Block a user