На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Класс для логирования в файл БД, stdout , Жду ваших замечаний по классу для логирования
      Добрый день! Сразу прошу не кидаться помидорами- я стажер и только учусь, мне было дано задание

      Написать класс для логирования сообщений.
      Указанные классы будут использоваться другими разработчиками в крупной высоконагруженной системе.


      Требования:
      - Возможность писать логи в stdout, mysql, файл по выбору. (Выбор осуществляется для всей системы логирования)
      - Предусмотреть настройки mysql, пути до файла логирования
      - Логи должны содержать:
      * Дату и время события (в формате YYYY-MM-DD HH:MM:SS)
      * Сообщение логирования (строка, массив, объект, исключение)

      Класс написан, очень прошу прислать ваши замечания, рекомендации и прочее-прочее-прочее


      ExpandedWrap disabled
        <?php
         
        include ("db.php");
         
        class Log_Printer
         
        {
        public static $path;
         
        protected $filename;
        protected $bdname;
        protected $tbname;
        protected $result;
        public function_construct($file_name = 'log.txt', $name_database = my_db, $name_table = my_tb)
         
        {
        $this->filename = $file_name;
        $this->bdname = $name_database;
        $this->tbname = $name_table;
        }
         
        public
         
        function get_message($var)
        {
        if ($var)
        {
        $date = '====== ' . date('Y-m-d H:i:s') . " =====\n";
        $this->result = $var;
        if (is_array($var) || is_object($var))
        {
        $this->result = print_r($var, 1); // ничего не //печатается на экран только перевод в строк
        }
         
        $this->result.= "\n";
        return $this->result;
        }
         
        public
         
        function log_db($message)
        {
        if (!mysql_connect("$HOST", "$USER", "$PASS")) exit(mysql_error());
        $r = mysql_query("CREATE DATABASE IF NOT EXISTS $this->bdname ");
        if (!$r) exit(mysql_error());
        mysql_select_db($this->bdname);
        mysql_query('SET NAMES UTF8');
        $res = mysql_query("CREATE TABLE IF NOT EXISTS $this->tbname
        (`id` INT(11)COLLATE utf8_general_ci NOT NULL AUTO_INCREMENT,
        `message` CHAR(200) COLLATE utf8_general_ci NOT NULL,
        PRIMARY KEY(`id`));");
        $insert_res = "INSERT INTO $this-tbname (id,message) VALUES (0,$message);";
        }
         
        public
         
        function log_stdout($message)
        {
        $fp = fopen("php://stdout", 'r+');
        fputs($fp, $message);
         
        // Читаем то, что мы записали.
         
        rewind($fp);
        echo stream_get_contents($fp);
        }
         
        public
         
        function log_file($message)
        {
        $path = dirname($_SERVER['SCRIPT_FILENAME']) . $this->filename;
        file_put_contents($path, $message);
        }
        }
      Сообщение отредактировано: Serafim -
        Цитата besthelper @
        Класс написан, очень прошу прислать ваши замечания, рекомендации и прочее-прочее-прочее

        Если кратко, то:
        1) mysql_* функции устарели и вырезаны из языка
        2) Для форматирования кода желательно использовать один из существующих стандартов написания (PSR, например)
        3) Логика слишком сильно завязана на реализацию класса, т.е. ни БД, ни что-либо иное поменять физически невозможно, без влезания в исходный код

        Добавлено
        З.Ы. Рекомендую для начала попробовать найти готовые решения, например: https://github.com/symfony/MonologBundle
          Премного благодарна за ссылку.
            Хотя это штука наверно слишком громоздкая...

            Добавлено
            В любом случае тут можно найти любой пакет для любых нужд: https://packagist.org/search/?q=log =)
              Цитата Serafim @

              Ок, спасибо!
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0199 ]   [ 15 queries used ]   [ Generated: 28.04.24, 10:41 GMT ]