1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
<?php
/**
* Logger.
*
* @todo $this->caller, $this->section
*/
class sfIsisImporterLog
{
/**
* @var object $instance The singleton instance.
*/
private static $instance = null;
/**
* @var object $instance Default loglevel.
*/
public static $loglevel;
/**
* @var int $processed Number of processed entries.
*/
var $processed = 0;
/**
* Get the singleton instance.
*
* @param string $loglevel Log level to use
*/
public static function getInstance($loglevel = 'info')
{
if(self::$instance == null) {
self::$instance = new self($loglevel);
}
return self::$instance;
}
/**
* Constructor.
*/
private function __construct($loglevel = 'info')
{
$this->level($loglevel);
}
/**
* Set the log level.
*
* @param string $loglevel Log level to use
*/
public function level($loglevel)
{
$this->loglevel = $loglevel;
}
/**
* Get the available log levels ordered by verbosity.
*
* @return array Log levels
*/
public function levels()
{
return array_flip(array('notice', 'fatal', 'info', 'warn', 'error', 'debug'));
}
/**
* Log dispatcher.
*
* @param string $message Log message
* @param string $level Log level
*/
public function log($message, $level = 'info')
{
// Get the available log levels.
$levels = $this->levels();
// Log level checking.
if (array_search($level, $levels) === FALSE)
{
$this->log("Invalid log level $level.", 'error');
return;
}
elseif ($levels[$level] > $levels[$this->loglevel])
{
return;
}
// Dispatch.
if ($this->section == 'action')
{
$this->caller->logMessage($message, $level);
}
else
{
$this->caller->logSection('isisImporter', "[$level] $message");
}
}
/**
* Progress notifier.
*
* @param int $entry Entry number
* @param int $entries Total number of entries
*/
public function progress($entry, $entries)
{
$this->processed = $entry;
$levels = $this->levels();
if ($this->section == 'action')
{
$this->caller->output .= "Saved item $entry\n";
}
else
{
// Progress bar is just shown if loglevel is 'fatal' or lower.
if ($levels['fatal'] >= $levels[$this->loglevel])
{
$this->caller->progressBar($entry, $entries);
}
}
return $this->processed;
}
}
|