00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 include_once( "lib/ezutils/classes/ezsys.php" );
00040 define( "EZ_MAX_LOGROTATE_FILES", 3 );
00041 define( "EZ_MAX_LOGFILE_SIZE", 200*1024 );
00042 class eZLog
00043 {
00044
00045
00046
00047 function eZLog( )
00048 {
00049 }
00050
00051
00052
00053
00054
00055 function write( $message, $logName = 'common.log', $dir = 'var/log' )
00056 {
00057 $ini =& eZINI::instance();
00058 $fileName = $dir . '/' . $logName;
00059 if ( !file_exists( $dir ) )
00060 {
00061 include_once( 'lib/ezfile/classes/ezdir.php' );
00062 eZDir::mkdir( $dir, 0775, true );
00063 }
00064 $oldumask = @umask( 0 );
00065
00066 $fileExisted = @file_exists( $fileName );
00067 if ( $fileExisted and
00068 filesize( $fileName ) > eZLog::maxLogSize() )
00069 {
00070 if ( eZLog::rotateLog( $fileName ) )
00071 $fileExisted = false;
00072 }
00073
00074 $logFile = @fopen( $fileName, "a" );
00075 if ( $logFile )
00076 {
00077 $time = strftime( "%b %d %Y %H:%M:%S", strtotime( "now" ) );
00078 $logMessage = "[ " . $time . " ] $message\n";
00079 @fwrite( $logFile, $logMessage );
00080 @fclose( $logFile );
00081 if ( !$fileExisted )
00082 @chmod( $fileName, 0666 );
00083 @umask( $oldumask );
00084 }
00085 }
00086
00087
00088
00089
00090
00091 function writeStorageLog( $name, $dir = false )
00092 {
00093 $ini =& eZINI::instance();
00094 $varDir = $ini->variable( 'FileSettings', 'VarDir' );
00095 $logDir = $ini->variable( 'FileSettings', 'LogDir' );
00096 $logName = 'storage.log';
00097 $fileName = $varDir . '/' . $logDir . '/' . $logName;
00098 if ( !file_exists( $varDir . '/' . $logDir ) )
00099 {
00100 include_once( 'lib/ezfile/classes/ezdir.php' );
00101 eZDir::mkdir( $varDir . '/' . $logDir, 0775, true );
00102 }
00103 $oldumask = @umask( 0 );
00104
00105 $fileExisted = @file_exists( $fileName );
00106 if ( $fileExisted and
00107 filesize( $fileName ) > eZLog::maxLogSize() )
00108 {
00109 if ( eZLog::rotateLog( $fileName ) )
00110 $fileExisted = false;
00111 }
00112
00113 if ( $dir !== false )
00114 {
00115 $dir = preg_replace( "#/$#", "", $dir );
00116 $dir .= "/";
00117 }
00118 else
00119 {
00120 $dir = "";
00121 }
00122
00123 $logFile = @fopen( $fileName, "a" );
00124 if ( $logFile )
00125 {
00126 $time = strftime( "%b %d %Y %H:%M:%S", strtotime( "now" ) );
00127 $logMessage = "[ " . $time . " ] [" . $dir . $name . "]\n";
00128 @fwrite( $logFile, $logMessage );
00129 @fclose( $logFile );
00130 if ( !$fileExisted )
00131 @chmod( $fileName, 0666 );
00132 @umask( $oldumask );
00133 }
00134 }
00135
00136
00137
00138
00139
00140 function maxLogSize()
00141 {
00142 $maxLogSize =& $GLOBALS['eZMaxLogSize'];
00143 if ( isset( $maxLogSize ) )
00144 return $maxLogSize;
00145 return EZ_MAX_LOGFILE_SIZE;
00146 }
00147
00148
00149
00150
00151
00152 function setMaxLogSize( $size )
00153 {
00154 $GLOBALS['eZMaxLogSize'] = $size;
00155 }
00156
00157
00158
00159
00160
00161 function maxLogrotateFiles()
00162 {
00163 $maxLogrotateFiles =& $GLOBALS['eZMaxLogrotateFiles'];
00164 if ( isset( $maxLogrotateFiles ) )
00165 return $maxLogrotateFiles;
00166 return EZ_MAX_LOGROTATE_FILES;
00167 }
00168
00169
00170
00171
00172
00173
00174
00175
00176 function rotateLog( $fileName )
00177 {
00178 include_once( 'lib/ezfile/classes/ezfile.php' );
00179 $maxLogrotateFiles = eZLog::maxLogrotateFiles();
00180 for ( $i = $maxLogrotateFiles; $i > 0; --$i )
00181 {
00182 $logRotateName = $fileName . '.' . $i;
00183 if ( @file_exists( $logRotateName ) )
00184 {
00185 if ( $i == $maxLogrotateFiles )
00186 {
00187 @unlink( $logRotateName );
00188 }
00189 else
00190 {
00191 $newLogRotateName = $fileName . '.' . ($i + 1);
00192 eZFile::rename( $logRotateName, $newLogRotateName );
00193 }
00194 }
00195 }
00196 if ( @file_exists( $fileName ) )
00197 {
00198 $newLogRotateName = $fileName . '.' . 1;
00199 eZFile::rename( $fileName, $newLogRotateName );
00200 return true;
00201 }
00202 return false;
00203 }
00204
00205
00206
00207
00208
00209 function setLogrotateFiles( $files )
00210 {
00211 $GLOBALS['eZMaxLogrotateFiles'] = $files;
00212 }
00213
00214 }
00215
00216 ?>