GlisWeb framework
_log.utils.php
Vai alla documentazione di questo file.
1 <?php
2 
48  function logWrite( $m, $f = 'site', $l = LOG_NOTICE, $d = DIRECTORY_LOG, $t = CURRENT_LOG_LEVEL, $s = SITE_STATUS ) {
49 
50  // globalizzazione di $cf
51  global $cf;
52 
53  // verifico se esiste un log level specifico per la factory
54  if( isset( $cf['debug'][ $s ][ $f ]['log']['lvl'] ) ) {
55  $t = $cf['debug'][ $s ][ $f ]['log']['lvl'];
56  }
57 
58  // se il livello dell'evento e' inferiore o uguale al livello di log impostato correntemente, loggo l'evento
59  if( $l <= $t ) {
60 
61  // interrogo il backtrace
62  $r['btr'] = debug_backtrace();
63 
64  // tipo di rotazione
65  $r['lrs'] = ( isset( $cf['debug'][ $s ][ $f ]['log']['rotation'] ) ) ? $cf['debug'][ $s ][ $f ]['log']['rotation'] : $cf['debug'][ $s ]['*']['log']['rotation'];
66 
67  // compongo il nome del file di log
68  $r['log'] = $d . $f . '.' . date( $r['lrs'] ) . '.' . strtolower( str_replace( 'LOG_', NULL, logLvl2string( $l ) ) ) . '.log';
69 
70  // dati del contesto
71  $r['cdt'] = date( 'Y-m-d H:i:s' ) . ' ';
72  $r['lvl'] = logLvl2string( $l );
73  $r['btr'] = shortPath( $r['btr'][0]['file'] ) . ':'. $r['btr'][0]['line'];
74  $r['pid'] = trim( getmypid() );
75  $r['rad'] = trim( getenv( 'REMOTE_ADDR' ) );
76  $r['ref'] = trim( getenv( 'HTTP_REFERER' ) );
77  $r['rwu'] = trim( getenv( 'REDIRECT_URL' ) );
78  $r['sfn'] = trim( getenv( 'SCRIPT_FILENAME' ) . '?' . getenv( 'QUERY_STRING' ) );
79  $r['ses'] = session_id();
80 
81  // distanziatore
82  $spacer = PHP_EOL . str_pad( '', strlen( $r['cdt'] ) );
83 
84  // distanziatore forzato
85  // $r['msg'] = str_replace( '§', $spacer, $m );
86 
87  // compongo il messaggio in formato testo
88  $msg = $r['cdt']
89  . ( ( ! empty( $r['pid'] ) ) ? 'pid: ' .$r['pid'] : '' )
90  . ( ( ! empty( $r['lvl'] ) ) ? ' level: ' .$r['lvl'] : '' )
91  . ( ( ! empty( $r['rad'] ) ) ? ' remote address: ' .$r['rad'] : '' )
92  . ( ( ! empty( $r['ses'] ) ) ? ' session: ' .$r['ses'] : '' )
93  . ( ( ! empty( $r['ref'] ) ) ? $spacer . 'referer: ' .$r['ref'] : '' )
94  . ( ( ! empty( $r['rwu'] ) ) ? $spacer . 'address: ' .$r['rwu'] : '' )
95  . ( ( ! empty( $r['sfn'] ) ) ? $spacer . 'script: ' .$r['sfn'] : '' )
96  . ( ( ! empty( $r['btr'] ) ) ? $spacer . 'file: ' .$r['btr'] : '' )
97  . $spacer . str_replace( '§', $spacer, $m ) . PHP_EOL;
98 
99  // compongo il messaggio in formato Json
100  $jsn = json_encode( $r );
101 
102  // verifico su quali target scrivere
103  if( isset( $cf['debug'][ $s ][ $f ]['target'][ $l ] ) ) {
104  $target = $cf['debug'][ $s ][ $f ]['target'][ $l ];
105  } elseif( isset( $cf['debug'][ $s ][ $f ]['target']['*'] ) ) {
106  $target = $cf['debug'][ $s ][ $f ]['target']['*'];
107  } elseif( isset( $cf['debug'][ $s ]['*']['target'][ $l ] ) ) {
108  $target = $cf['debug'][ $s ]['*']['target'][ $l ];
109  } else {
110  $target = $cf['debug'][ $s ]['*']['target']['*'];
111  }
112 
113  // per ogni target
114  foreach( $target as $trg => $spc ) {
115 
116  // tipo di target
117  switch( $trg ) {
118 
119  case LOG_TO_FILE:
120  $x = appendToFile( $msg, $r['log'] );
121  break;
122 
123  case LOG_TO_GOOGLE:
124  $x = log2google( $l, $cf['site']['fqdn'].'.'.strtolower($cf['site']['status']).'.'.$f, $cf['debug'][ $s ]['gce']['pid'], str_replace( '§', "\n", $m ), $r );
125  break;
126 
127  }
128 
129  }
130 
131 # // se qualcosa va storto...
132 # if( $r === false ) {
133 # error_log( $msg );
134 # }
135 
136  }
137 
138  }
139 
140 ?>
logLvl2string( $l)
converte in stringa il livello di errore
Definition: _log.tools.php:71
const SITE_STATUS
Definition: _015.site.php:181
appendToFile( $t, $f, &$e=NULL)
aggiunge una stringa a un file
const LOG_TO_FILE
Definition: _000.debug.php:64
logWrite( $m, $f='site', $l=LOG_NOTICE, $d=DIRECTORY_LOG, $t=CURRENT_LOG_LEVEL, $s=SITE_STATUS)
scrive un messaggio nei log del sito
Definition: _log.utils.php:48
$f
Definition: _filesystem.php:21
if(!empty($_REQUEST['id'])) $d
$cf['ricerca']['template']
Definition: _030.common.php:7
const LOG_TO_GOOGLE
Definition: _000.debug.php:66
log2google( $l, $f, $p, $m, $r)
https://cloud.google.com/logging/docs/setup/php
Definition: _log.tools.php:23
$r
Definition: _osm.php:25
const DIRECTORY_LOG
Definition: _config.php:267
const CURRENT_LOG_LEVEL
Definition: _020.debug.php:40
if(! isset( $_REQUEST['__view__'][ $ct['view']['id']]['__extra__']['assegnato'])|| $_REQUEST['__view__'][ $ct['view']['id']]['__extra__']['assegnato']=='__me__') elseif($_REQUEST[ '__view__'][$ct[ 'view'][ 'id']][ '__extra__'][ 'assegnato']=='__nessuno__')
shortPath(&$f)