• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/classes/general/smtp.php
  • Класс: CSMTPServer
  • Вызов: CSMTPServer::WriteToLog
function WriteToLog($txt, $level)
{
	$this->logLevel = intval(COption::GetOptionString("mail", "smtp_log_level", "4"));

	if ($this->logLevel < $level)
		return;

	if (MicroTime(true) - $this->startPeriodTimeTruncate > 600)
	{
		if ($this->logFile)
			FClose($this->logFile);

		$this->logFile = null;

		if (File_Exists($_SERVER["DOCUMENT_ROOT"].$this->logFileName))
		{
			$logSize = @FileSize($_SERVER["DOCUMENT_ROOT"].$this->logFileName);
			$logSize = intval($logSize);

			if ($logSize > $this->logMaxSize)
			{
				if (($fp = @FOpen($_SERVER["DOCUMENT_ROOT"].$this->logFileName, "rb"))
					&& ($fp1 = @FOpen($_SERVER["DOCUMENT_ROOT"].$this->logFileName."_", "wb")))
				{
					$iSeekLen = intval($logSize - $this->logMaxSize / 2.0);
					FSeek($fp, $iSeekLen);

					@FWrite($fp1, "Truncated ".Date("Y-m-d H:i:s")."n---------------------------------n");
					do
					{
						$data = FRead($fp, 8192);
						if ($data == '')
							break;

						@FWrite($fp1, $data);
					}
					while (true);

					@FClose($fp);
					@FClose($fp1);

					@Copy($_SERVER["DOCUMENT_ROOT"].$this->logFileName."_", $_SERVER["DOCUMENT_ROOT"].$this->logFileName);
					@UnLink($_SERVER["DOCUMENT_ROOT"].$this->logFileName."_");
				}
			}
			ClearStatCache();
		}

		$this->startPeriodTimeTruncate = MicroTime(true);
	}

	if (!$this->logFile || $this->logFile == null)
		$this->logFile = FOpen($_SERVER["DOCUMENT_ROOT"].$this->logFileName, "a");

	if (!$this->logFile)
	{
		echo "Can't write to logn---------------------------------n";
		return;
	}

	FWrite($this->logFile, Date("Y-m-d H:i:s")."t".trim($txt)."n");
	FFlush($this->logFile);

	//if ($level > 4)
		echo trim($txt)."n---------------------------------n";
}