-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_TcDebug.php
More file actions
executable file
·172 lines (153 loc) · 8.78 KB
/
_TcDebug.php
File metadata and controls
executable file
·172 lines (153 loc) · 8.78 KB
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<?PHP
/*------------------------------------------------------------------------------
Autor : Rodrigo Dittmar
Linguaguem : php 7.x
Dependencia : functions.php
Licença de Uso :
------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------
Classe : TcDebug
Descricao : Cria um arquivo texto contendo o debug das classes
--------------------------------------------------------------------------------
Versao 1.0.0.0 : 20060401
Versao 1.0.0.1 : 20061231 - Inclusao da opcao para salvar o Cache
Versao 1.0.0.2 : 20070331 - Correcao de Erros / Otimizacao do codigo
Versao 1.0.0.3 : 20120315 - Nivel de backup (Definicao DebugLevel)
Niveis de Debug
0 - Construtores / Destrutores
1 - Manutencoes Principais ( - Sem as quais nao funciona a class)
2 - Funcoes Secundarias ( Adicao de campo / alteracao de valores)
5 - ...
9 - Auxiliares / Privadas / Sem muita importancia
Versao 1.0.0.4 : 20120315 - Correcao do Nivel de backup
Versao 1.0.1.0 : 2019 - Adaptação para o projeto CLibras
------------------------------------------------------------------------------*/
Class TcDebug extends stdClass {
private $FOwner = ''; //Proprietário
private $FDebug = array(); //Armazena as chamadas do debug na memoria para posterior gravação
private $FTimeStart = 0; //Tempo de Inicio da Classe
// Configuração da Classe
private $FConfig = ''; //Configuração da Classe
public $FWrite = array(); //Nivel de Gravação do Debug
private $FWrited = false; //Verifica se já houve a gravação do log, impedindo assim de gravar o cabeçalho
/*----------------------------------------------------------------------------
__construct : Cria a classe e atualiza os atributos
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aOwner :string : Proprietario do Objeto
aConfig :array : Array de Configuração
(enviar somente o que houver necessidade de alterar)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----------------------------------------------------------------------------*/
function __construct( $aOwner = '' , $aConfig = false ) {
$this -> FOwner = $aOwner; // Proprietário da Classe
$this -> FTimeStart = microtime(true); //Setando o Tempo Inicial da Classe
$this -> FWrite = array(0,0,0,0,0,0,0,0,0,0);
$this -> FConfig = array( 'ip' => get_IP(), //Endereço IP do Client
'file' => '', //Arquivo para gravacao do debug
'config' => ES_SYCONFIG ); //Imprime a Configuracao do Site
//Setando os parametros da classe - Apenas o que for necessário alterar
if( is_array($aConfig) ) {
foreach ($aConfig as $a=>$b) {
$this -> FConfig[strtolower($a)] = $b;
};
}
//Setando o Nível do Debug
for( $i = 0 ; $i<10 ; $i++ ) { $this -> FWrite[$i] = ( ES_DEBUGLEVEL >= $i ); }
//Gravando o debug
$this -> write( $this -> FOwner , __METHOD__ , 'System Debug Level = ' . ES_DEBUGLEVEL );
// Definindo o nome do Arquivo
$this -> setFile();
}
/*----------------------------------------------------------------------------
__destruct : Finaliza a classe e fecha o arquivo se necessario
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----------------------------------------------------------------------------*/
function __destruct() {
$this -> write( $this -> FOwner , __METHOD__ );
if( count($this->FWrite) > 0 ) {
$this -> save();
}
}
/*----------------------------------------------------------------------------
write : Armazena o Log de Debug
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aClass :string : Classe
aOwner :string : Nome da Classe Propriet�ria
aDes :string : Descricao do Evento
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----------------------------------------------------------------------------*/
function write($aOwner , $aClass , $aDes = '' ) {
$this -> FDebug[] = array( date('Ymd-H:i:s') , microtime(true) , $aOwner , $aClass , $aDes , false);
}
function log($aOwner , $aClass , $aDes = '' ) {
$this -> FDebug[] = array( date('Ymd-H:i:s') , microtime(true) , $aOwner , $aClass , $aDes , false);
}
function security($aOwner , $aClass , $aDes = '' ) {
$this -> FDebug[] = array( date('Ymd-H:i:s') , microtime(true) , $aOwner , $aClass , $aDes , true);
}
/*----------------------------------------------------------------------------
setFile : Altera o Arquivo a Gravar o Log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aFile :string : Novo Arquivo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----------------------------------------------------------------------------*/
function setFile( $aFile = false ) {
$aFile = ( $aFile ? $aFile : $this -> FOwner .'('.date('md-H').').txt');
$this -> FConfig['file'] = str_replace('//','/', ES_LOG . $aFile);
$this -> write( $this -> FOwner , __METHOD__ , $this -> FConfig['file'] );
// define que não houve gravação do log, para possibilitar a gravação em novo arquivo.
$this -> FWrited = false;
}
/*----------------------------------------------------------------------------
save : Salva o arquivo de LOG
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aforce : boolean : força a gravação do log e limpa se concluído
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----------------------------------------------------------------------------*/
function save( $aForce = false ) {
$this -> write( $this -> FOwner , __METHOD__ , "Linhas : " . count($this-> FDebug));
//Gravando o LOG
$aFile = @fopen( $this -> FConfig['file'] , 'a+' );
//Erro ao abrir o arquivo de log
if( !($aFile) or !(is_writable($this -> FConfig['file']) ) ) {
return false;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Grava o cabecalho do log apenas se não houve gravação do cabeçalho antes
if( ! $this -> FWrited ) {
fwrite($aFile, str_pad('',60,'-') . ES_SYTEXTEOF );
fwrite($aFile , "IP : " . $this -> FConfig['ip'] . "(".ES_DEBUGLEVEL.")" . ES_SYTEXTEOF );
if ( $this -> FConfig['config'] ) {
fwrite($aFile, str_pad('',60,'-') . ES_SYTEXTEOF );
fwrite($aFile, 'ES_PATH :' . ES_PATH . ES_SYTEXTEOF );
fwrite($aFile, 'ES_LIB :' . ES_LIB . ES_SYTEXTEOF );
fwrite($aFile, 'ES_HTML :' . ES_HTML . ES_SYTEXTEOF );
fwrite($aFile, 'ES_LOG :' . ES_LOG . ES_SYTEXTEOF );
fwrite($aFile, 'ES_MODULE:' . ES_MODULE . ES_SYTEXTEOF );
fwrite($aFile, 'REQUEST_URI:' . $_SERVER['REQUEST_URI'] . ES_SYTEXTEOF );
fwrite($aFile, str_pad('',60,'-') . ES_SYTEXTEOF );
foreach (getallheaders() as $name => $value) {
fwrite($aFile, $name .':' . $value . ES_SYTEXTEOF );
}
}
fwrite($aFile, str_pad('',60,'-') . ES_SYTEXTEOF );
$this -> FWrited = true;
}
foreach($this -> FDebug as $aRow) {
fwrite($aFile, $aRow[0] ."(". str_pad($aRow[1],15,'0') ." - ". number_format($aRow[1]-$this -> FTimeStart,5).") - ");
fwrite($aFile, str_pad($aRow[2].".".$aRow[3],60) .";" );
fwrite($aFile, $a = str_replace( chr(10) , '' , str_replace( chr(13) , '' , (is_array($aRow[4]) ? implodeKey( '; ' , $aRow[4] ) : $aRow[4] ) ) ) );
fwrite($aFile , ES_SYTEXTEOF );
}
//Gravando o Fim do Log - para efeito de contagem de tempo
fwrite($aFile, date('Ymd-H:i:s') ."(". str_pad(microtime(true),15,'0') ." - ". number_format(microtime(true) - $this->FTimeStart,5).") - ");
fwrite($aFile, str_pad($this->FOwner.".".get_class($this)."::".__METHOD__.".EOF - FILE",60) .";" );
fwrite($aFile , ES_SYTEXTEOF );
fclose( $aFile );
if( $aForce ) {
$this->FDebug = array();
}
}
}
?>