969101586613706dbf764a71dab31969eefd4d2a
[velocampus/web/www.git] / www / ecrire / inc / log.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 function inc_log_dist($message, $logname=NULL, $logdir=NULL, $logsuf=NULL) {
16
17 static $compteur = array();
18 global $nombre_de_logs, $taille_des_logs;
19
20 if (is_null($logname) OR !is_string($logname))
21 $logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
22 if (!isset($compteur[$logname])) $compteur[$logname] = 0;
23 if ($logname != 'maj'
24 AND defined('_MAX_LOG')
25 AND (
26 $compteur[$logname]++ > _MAX_LOG
27 OR !$nombre_de_logs
28 OR !$taille_des_logs
29 ))
30 return;
31
32 $logfile = ($logdir===NULL ? _DIR_LOG : $logdir)
33 . (test_espace_prive()?'prive_':'') //distinguer les logs prives et publics
34 . ($logname)
35 . ($logsuf===NULL ? _FILE_LOG_SUFFIX : $logsuf);
36
37 // si spip_log() dans mes_options, poser dans spip.log
38 if (!defined('_DIR_LOG'))
39 $logfile = _DIR_RACINE._NOM_TEMPORAIRES_INACCESSIBLES.$logname.'.log';
40
41 $rotate = 0;
42 $pid = '(pid '.@getmypid().')';
43
44 // accepter spip_log( Array )
45 if (!is_string($message)) $message = var_export($message, true);
46
47 $m = date("M d H:i:s").' '.$GLOBALS['ip'].' '.$pid.' '
48 .preg_replace("/\n*$/", "\n", $message);
49
50
51 if (@is_readable($logfile)
52 AND (!$s = @filesize($logfile) OR $s > $taille_des_logs * 1024)) {
53 $rotate = $nombre_de_logs;
54 $m .= "[-- rotate --]\n";
55 }
56
57 $f = @fopen($logfile, "ab");
58 if ($f) {
59 fputs($f, ($logname!==NULL) ? $m : str_replace('<','&lt;',$m));
60 fclose($f);
61 }
62
63 if ($rotate-- > 0
64 AND function_exists('spip_unlink')) {
65 spip_unlink($logfile . '.' . $rotate);
66 while ($rotate--) {
67 @rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
68 }
69 }
70
71 // Dupliquer les erreurs specifiques dans le log general
72 if ($logname !== _FILE_LOG
73 AND defined('_FILE_LOG'))
74 inc_log_dist($logname=='maj' ? 'cf maj.log' : $message);
75 }
76
77 ?>