log4j широкоизвестная библиотека логирования, нашедшая своё применение во многих проектах. Её возможности не ограничиваются «добавлением строчек в лог-файлы». На базе log4j можно организовать сложную систему агрегации логов на центральный сервер. Кроме того, сообщество располагает GUI утилитами для анализа логов, которые удобно подключать к центральному серверу для анализа логов.
Читать полностью »
Рубрика «logging» - 4
Агрегация логов с нескольких серверов средставами log4j
2013-03-12 в 2:28, admin, рубрики: java, log4j, logging, метки: log4j, loggingTraceMyCode – сервис для отслеживания ошибок
2013-02-19 в 4:18, admin, рубрики: .net, exception, logging, php, ошибки, я пиарюсь, метки: .net, exception, logging, PHP, ошибки Несколько лет назад, заканчивая очередную программу для сенсорных столов, наша команда столкнулась с проблемой поддержки нескольких устройств, размещенных в разных местах. Необходимо было отслеживать возникающие ошибки в программе и оперативно их исправлять. Но все это усложнялось большим количество устройств, проверять каждый из них было не рационально.
Тогда мы написали небольшой веб-сервис, который мог принимать и сохранять информацию об ошибке в приложении. Достаточно длительное время этот сервис работал только в рамках компании и за это время применялся практически в каждом проекте.
Пару месяцев назад появилась идея доработать сервис до приемлемого вида и позволить им пользоваться каждому разработчику.
Читать полностью »
Logy — логгер с человеческим лицом
2012-06-29 в 9:30, admin, рубрики: java, library, log4j, logger, logging, open source, метки: java, library, log4j, logger, logging, open sourceНекоторое время назад мне пришла в голову идея сделать логирование в Java более дружелюбным, простым и в тоже время достаточно гибким в настройке. Такие требования справедливы пожалуй, в средних и малых проекта, где можно обойтись без громоздкого log4j. Буквально за неделю, идея переросла в простенькую Java библиотеку с ни менее простым названием — logy.
Использование:
import static logy.Logy.*;
public class Test {
public void test() {
String s[] = {"a", "b"};
warn("Can't find", quote(upper("c")), "in", group(quote(upper(scalar(s)))));
}
}
Вывод:
29.06.2012 1:19:25 Test.test [WARN] :: Can't find "C" in ["A", "B"]
Как по мне, выглядит очень читабельно, благодаря синтаксическому сахару, DSL-like API и динамическому определению параметров логирования в момент вызова (читай без дополнительных полей public static final Logger logger = ...
в классе).
Читать полностью »
Фреймворк Autodafe — работа с моделями
2012-05-03 в 20:17, admin, рубрики: activerecord, autodafe, javascript, logging, mvc, mysql, node.js, orm, routing, websockets, метки: activerecord, autodafe, javascript, logging, mvc, mysql, node.js, orm, routing, websocketsВышла версия 0.3 node.js фреймворка для разработки веб приложений Autodafe
У фреймворка появился сайт autodafe.ws, который стремительно обрастает документацией и статьями. (Документация на сайте генерируется автоматически из кода, задокументированного по правилам jsdoc. Поэтому если вы хотите быстро поднять сайт с документацией вашего проекта, можете спросить меня «как?»)
В новой версии фреймворка значительно улучшена работа с моделями, писать классы для сохранения данных стало удобнее, а сами они стали выглядеть красивее. Множественное задание атрибутов, их неявная фильтрация во время присвоения, асинхронная валидация моделей и изумительное использование статических методов моделей несомненно сделают вашу жизнь лучше и проще :) Работа с моделями в Autodafe
Python / Python sqlite3: Находим медленные запросы
2012-02-06 в 9:25, admin, рубрики: logging, python, sqlite3, метки: logging, python, sqlite3
Привет, коллеги!
При работе с базами данных sqlite передо мной возникла задача поиска медленных запросов и их логгирования.
Спросив всезнающий Google я к сожалению не обнаружил ни одного решения (плохо искал?).
Поэтому я хочу предложить свой вариант протоколирования.
Подсчет времени выполнения запроса мы будем вести на уровне курсора.
Для этого переопределим данный класс добавив в него подсчет времени выполнения запроса.
import sqlite3import time
class mycursor(sqlite3.Cursor):
def execute(self, *args, **kwargs):
timestart = time.clock()
query = super(mycursor, self).execute(*args, **kwargs)
Читать полностью »