Логирование в php проектах

Логирование в php проектах

Начинаю выкладывать на github инструменты, который использую в своих проектах.

Первым выложил sLog — простой способ добавить логирование в свой php-проект.

Возможности

  • несколько способов логирования(syslog, file, mail);
  • несколько уровней важностей сообщений(Alert, Error, Debug, …);
  • логеры настраиваются независимо друг от друга
  • возможность быстро добавить свой логер

Логеры доступные «из коробки»

  • syslog — запись сообщения в syslog
  • file — запись сообщения в текстовый файл
  • mail — отправка сообщения по эл. почте

Подробнее смотрите на GitHub

Logout from «AuthType Basic»

Закон Янга:
Все великие открытия делаются по ошибке.

upd: это решение имеет большой недостаток — после выхода придется несколько раз ввести пароль. Правильное решение использовать ajax-запрос. Вот работающее решение. Плюс к этому я зачищаю сессию.

Руководство по кроссдоменному AJAX`у

Это вольный перевод статьи Cross Domain AJAX Guide
Ни для кого не секрет, что AJAX-запросы возможны только если совпадают порты, протоколы и домены отправителя запроса и его получателя. Это означает, что следующие запросы не будут работать:

  • запрос к https://foo.bar/target.php от http://foo.bar/source.php
  • запрос к http://sub.foo.bar от http://foo.bar
  • запрос к http://foo.bar:5000 от http://foo.bar


Попробуем обойти эти ограничения.

Писать меньше кода

В одноименном посте Mike Grouchy призывает к максимальному уменьшению объемов кодирования. Многие заблуждаются, приравнивая программирование к кодированию. А ведь это не так. Задача программиста решить какую то проблему. И чем элегантнее и проще будет решение тем лучше. Куча инструментов и фреймворков призваны уменьшить кол-во кода. Пользуйтесь этим. Еще одна великая штука — это рефакторинг, позволяющий делать код чище.

Технологии

  • Ухты, ухты, ухты. Выбор из списка с подсказками на чистом HTML5
  • JavaScript Garden — это постоянно пополняемая коллекции документации о самых необычных частях JavaScript. Здесь собраны советы, как избежать распространенных ошибок, а также проблем с производительностью.
  • Принято считать, что php — отстой. Почему? Ну просто принято и все. Посмотрите на современное состояние PHP. Сейчас это самый развивающийся язык программирования. Посмотрите на версию 5.4. Сколько там нововведений и вкусностей. В статье «PHP is much better than you think» приведено много доводов в поддержку PHP
  • Хорошо разжеванный способ защиты формы с помощью проверочного параметра(на PHP)
  • MVC is dead, it’s time to MOVE on. MOVE: Models, Operations, Views, and Events. Сравнение этих двух методологий, с перекосом в сторону MOVE
  • 5 простых мер для повышения безопасности в PHP-скриптах:управляйте сценариями установки(установили, удалили/закрыли доступ), инклюдьте только файлы с расширением «php»(не «inc»,…), обязательно шифруйте пароли и другую «интимную» информацию, отключите глобальные переменные, обязательно инициализируйте переменные и их значения.
  • Google JavaScript Style Guide — вроде бы и так все понятно

Разное

Как развить глубокие познания в программировании?

Сначала хотел написать о методах, которые описаны в многочисленных статьях. Но пожалуй остановлюсь на интерпретации мудрейшего изречения Йоги Бхаджан: «Если вы хотите чему-то научиться, прочитайте об этом, если вы хотите что-то понять, напишите об этом, если вы хотите освоить что-то, запрограммируйте это».

Технологии

  • 79 вещей которые должен знать любой программист — этакая «Энциклопедия Юных Сурков» для программистов. Пока собирался написать этот пост, оригинальная ссылка перестала работать. Вот тут есть часть статей из списка
  • Очередная статья про Вебсокеты. Приводится сравнение с Comet-технологией
  • Офигительная js-библиотка SlickGrid для работы с гридами(табличками)
  • Использование Traits в PHP 5.4
  • Storing Date/Times in Databases — как правильно хранить временные метки

Разное

  • Не умеешь кодировать? Воспользуйся Scroll Kit для создания своего сайта
  • Главного дизайнера Apple посвятили в рыцари

Аспектно-ориентированное программирование в PHP

Обычно, чтобы было понятнее, что такое аспектно-ориентированное программирование, приводят пример с логированием. Допустим нам нужно веси лог удалений. Причем, удалений всего и вся. Самый простой способ  это добавить вызов логирующего метода в тех местах где происходит удаление сущности, например, в методе deleteUser(). Разумеется логирование придется добавить во все подобные методы всех сущностей. Во первых это муторно, во вторых нарушает четкое предназначение класса(метод не только удаляет, но еще и записывает лог). Еще один способ этот использование паттерна наблюдателя.

АОП придумана как раз таки для реализации такой сквозной функциональности. Как это реализовать в PHP с помощью фреймворка FLOW3 читайте в статье Aspect-Oriented Programming in PHP .

В двух словах это работает так: при написании метода логирования вы даете указание в какик методах он должен вызываться. Примерно вот так:

1
2
3
4
5
6
7
8
/**
* An aspect that is executed on all methods that start with "delete".
*
* @FLOW3\Before("method(.*->delete.*())")
*/

public function logginMethod() {
// Do some logging here.
}

Ну а фреймворк уже сам позаботится о вставке вашего метода в нужные места.

 
Технологии

  • OAuth 2.0 простым и понятным языком — не свежий, но полезный пост про OAuth 2.0
  • Помните отличную презентацию про HTML5? Можно забабахать презентацию не хуже с помощью LakTEK. На первый взгляд всё просто.
  • В хроме появился новый атрибут download у тега A. Атрибут указывает на то, что ресурс указанный в ссылке нужно предложить скачать, а не пытаться открыть его в браузере
  • HTML5 Audio — The State of Play -подробный разбор: методы, атрибуты, события…вплоть до настройки Апача, для корректной отдачи аудио-файлов.

PHP

  • XDebug исполнилось 10 лет! Этому событию посвящен новый релиз 2.2.0.
  • Если вы переживаете за качество вашего php-кода, обратите внимание на инструменты и представленные на сайте The PHP Quality Assurance Toolchain
  • Mobile_Detect — облегченный класс для обнаружения мобильных устройств.

Разное