|
|
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
всем привет. мне тут вдруг интересно стало - а существуют ли какие-то стандарты, соглашения, общепринятые практики по тому, как над правильно выводить логи в разрабатываемом коде. меня в данном вопросе интересуют не столько инструменты, сколько именно методики. есть ведь соглашения по коду, стандарты написания комментариев, тестов, и т.д. наверняка и про логи уже давно кто-то сел и продумал этот вопрос :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2008, 21:21 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
В Linux используется демон syslogd. Он формирует текстовые файлы событий. Обычно они падают в каталог /var/log. Почитай в этом направлении. В Windows тоже есть некий API который фиксирует события. Для их просмотра испольуют eventvwr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 11:22 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
нет, я немножко не об этом. вот есть, допустим, проект, который со временем превращается в нечто очень большое программное изделие. над ним работают много людей, которые в своем коде в процессе отладки выводят на консоль всякие разные полезные и не очень сообщения. если этот процесс никак не регламентировать, то консоль работающего приложения превращается в бессвязный генератор непонятных строчек в очень большом количестве. а хотелось бы, в идеале, так - включить для логгера уровень debug, запустить прогамму, и смотря в вывод программы сразу понять что в ней происходит и как она работает. по идее это средство для понимания работы кода может быть куда полезнее комментариев и тестов. в первую очередь из-за наглядности и скорости. неужели этим никто не заморачивался? зы: как пользоваться инструментами для логирования(в техническом смысле) я знаю :) а как их использовать с максимальной выгодой - вот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 12:59 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
А какой библиотекой (инструментом) вы пользуетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 13:21 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
так как основной мой инструмент это java, то использую log4j. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 13:24 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
так как основной мой инструмент это java, то использую log4j. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 13:28 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
упс, забоянил случайно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 13:29 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitledтак как основной мой инструмент это java, то использую log4j. И в чём трудность? Вы не знаете как "включить для логгера уровень debug" ? Или вам нужны рекомендации по пользованию "с максимальной выгодой" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 13:39 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
И в чём трудность? Вы не знаете как "включить для логгера уровень debug" ? Или вам нужны рекомендации по пользованию "с максимальной выгодой" ? второе, ага :) вот вы в своих проектах, когда что-то выводите логгерами на консоль, какими соображениями руководствуетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 13:52 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitled вот вы в своих проектах, когда что-то выводите логгерами на консоль, какими соображениями руководствуетесь? Выводить в консоль на сервере - дурной тон. Её там просто некому читать. Я вывожу - в текстовые файлы. Для удобства - с суточной ротацией. Всё это делается средствами log4j. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:09 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
Выводить в консоль на сервере - дурной тон. Её там просто некому читать. Я вывожу - в текстовые файлы. Для удобства - с суточной ротацией. Всё это делается средствами log4j. это понятно :) для удобства я еще и на почту администратору ерроры отсылаю. но на сервере уровень сообщений ниже error не ставится почти никогда. с ошибками то все более-менее понятно - а как насчет сообщений уровня info и ниже? как вы их пишете? они ведь в первую очередь ориентированы на разработчиков и на сервере их никто не будет смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:19 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitledс ошибками то все более-менее понятно - а как насчет сообщений уровня info и ниже? как вы их пишете? они ведь в первую очередь ориентированы на разработчиков и на сервере их никто не будет смотреть. В нормальном режиме следует выводить уровни ERROR и FATAL. Если c приложением какая-то проблема, можно включить все уровни вплоть до DEBUG. Если вы хотите выводить ERROR но в то-же время не выводить уровень INFO то вам просто надо создать еще один логгер. И читать его должны будут не сисадмины а технологи задач и приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:36 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
ну вот например: источник http://anonsvn.jboss.org/repos/hibernate/core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl/SessionFactoryObjectFactory.java Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. как определить что в первом методе стоит писать на уровень info, а во втором только debug, и что стоит писать именно-это. точнее я подозреваю что в 90% случаев такое пишется от балды, но потом это приводит к полной каше в логах рабочего приложения. всякие аццы в умных книгах посвещают целые главы вопросам о том, стоит ли переносить фигурную скобку после метода на новую строку, а вот про логи я как то толковых статей еще не встречал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:37 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
В нормальном режиме следует выводить уровни ERROR и FATAL. Если c приложением какая-то проблема, можно включить все уровни вплоть до DEBUG. Если вы хотите выводить ERROR но в то-же время не выводить уровень INFO то вам просто надо создать еще один логгер. И читать его должны будут не сисадмины а технологи задач и приложений. да, а как определить, что следует писать в инфо и тем более в дебаг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:39 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
** а как насчет сообщений уровня info и ниже? как вы их пишете? я имел в виду не запись их на диск, если что, а написание кода :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:46 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitledкак определить что в первом методе стоит писать на уровень info, а во втором только debug, и что стоит писать именно-это. Потому что так решил автор. точнее я подозреваю что в 90% случаев такое пишется от балды, но потом это приводит к полной каше в логах рабочего приложения. Приведите пример вашей "каши" и я вам скажу что следует убрать из событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 14:53 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitledнад ним работают много людей, которые в своем коде в процессе отладки выводят на консоль всякие разные полезные и не очень сообщения Во вменяемых командах таких людей убивают. Правда, бывают не очень вменяемые люди.. один раз в жизни мне пришлось произнести фразу "еще раз увижу в vcs-е строку system.out.println - будет увольнение". untitledесли этот процесс никак не регламентировать, .... . а хотелось бы, Регламентировать этот процесс - примерно то же самое, что регламентировать качественное программирование. Можно назвать некоторые признаки хорошего и плохого кода, но в целом процесс слишком неформализуемый, чтобы его можно было описать в регламенте. untitledпо идее это средство для понимания работы кода может быть куда полезнее комментариев и тестов. "Тесты как средство понимания" - бред пьяного ежика. Да, я знаю, что это не Ваша идея. Лог как средство понимания - очень немногим лучше. untitledа как их использовать с максимальной выгодой - вот вопрос. Ответ банален - записывать все существенное, четко его категоризируя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 20:38 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
softwarerВо вменяемых командах таких людей убивают. Правда, бывают не очень вменяемые люди.. один раз в жизни мне пришлось произнести фразу "еще раз увижу в vcs-е строку system.out.println - будет увольнение". Просто надо в особо крупных проектах определить "правила игры". Писать в логгер на сервере (если это компонент). Или в таблицу в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 22:06 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
maytonПросто надо в особо крупных проектах определить "правила игры". Само собой. "Невменяемые" - это те, кто несмотря на правила игры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:06 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitled как определить что в первом методе стоит писать на уровень info, а во втором только debug Я уровнем INFO логировал то, что в принципе может быть адресовано пользователю, а уровнем дебаг - то, что может интересовать только раразработчика. Например, при расчете зарплаты ИНФОм писались внутренние всякие переменные рачета (средняя сумма зарпаты за период, которая использовалась при расчете болничного), уровнем ДЕБАГОм SQL запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:07 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
softwarer ... "Тесты как средство понимания" - бред пьяного ежика. Да, я знаю, что это не Ваша идея. Лог как средство понимания - очень немногим лучше. ... Занятно. Очень был бы благодарен за высказывание развернутоно мнения - каким средствами правильно должно достигаться понимание (в предположении, что тесты и логи запрещены) и, может быть вы поделитесь примерами использования этих средств. ЗЫ В настоящее время сопровождаю очень компактную задачу - весь код в районе 2мегабайт в компилированного з-кода. Возраст задачи - около 7 лет. В настоящий момент контора не роасполагает ни одним сотрудником, исторически причастным к разввитию этой задачи. В задаче около десятка расчетных функций. Размер функций - от 1000 до 5000 строк (от 30 до 120-130 страниц печатного текста). Честно признаю, что сопровождать эту компактную задачу без логов не умею. Поэтому искренне заинтересован в содержательном и развернутом ответе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:30 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitledкак определить что в первом методе стоит писать на уровень info, а во втором только debug, Никак. Хочется назвать это явной ошибкой, но на всякий случай скажу мягче - очень спорное решение. untitledточнее я подозреваю что в 90% случаев такое пишется от балды, Уровни log4j - очень небесспорны и сомнительны. По-хорошему, нужна стратегия уровня команды - что логируется и на каких уровнях, фактически "что именно значат цифры от 0 до N". untitledно потом это приводит к полной каше в логах рабочего приложения. Не совсем так. Реальная практика в моем представлении примерно такова: обычно приложение крутится с высоким level-ом логируемости (warn или может быть info), соответственно что в них пишется - команда понимает достаточно четко. В случае наличия проблем отдельные модули запускаются с level=all, и соответственно до бардака в уровнях особо нет никакого дела. А для отладки level=all для всех логгеров проще вообще не убирать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:38 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
сосед. был акцессникОчень был бы благодарен за высказывание развернутоно мнения - каким средствами правильно должно достигаться понимание Смотря что Вы называете пониманием. сосед. был акцессник(в предположении, что тесты и логи запрещены) В смысле "запрещены"? Они просто не являются лучшими инструментами решения этой задачи. Более четко: я не представляю себе задачи на "понимание кода", для которой не существует инструмента удачнее, чем эти. сосед. был акцессники, может быть вы поделитесь примерами использования этих средств. Если хочется понять "как работает нечто в конкретном случае", то лучшим инструментом является отладчик. Почему: - можно на ходу подсмотреть куда угодно, туда, куда запись в лог не стоит - можно тонко фильтровать просматриваемую информацию (скажем, отдельные элементы массива) - видны и можно на ходу реагировать на неожиданности (скажем, уход в ветку, куда не должен был идти) - и так далее. Если же хочется глобально врубиться, врасти в код, то лучшим решением является чтение хорошо написанного и прокомментированного кода и рефакторинг плохо написанного. сосед. был акцессникЧестно признаю, что сопровождать эту компактную задачу без логов не умею. Поэтому искренне заинтересован в содержательном и развернутом ответе. У нас немного разное восприятие слов. У меня есть подобный опыт, и я пользовался логами, но не для "понимания", а для "исправления ошибки без понимания". То есть - к функции мы относимся как к темно-серому ящику, просто регистрируем нехорошие симптомы, ищем и исправляем их причину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:57 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
авторСмотря что Вы называете пониманием. Пониманием я называю состояние, которое можно минимально характеризовать так: 1) при фиксации (функционально) ошибочного поведения сопровождающий "быстро" и "адекватно" локализует проблемные места. 2) при внесении любых изменений в код (как связанных с исправлением ошибок, так и с развитием задачи) сопровождающий не вносит побочных эффектов. ( т.е. ранее правильное поведение не ломается, и вновь реализованное работает как ожидается заказчиком). автор. У меня есть подобный опыт, и я пользовался логами, но не для "понимания", а для "исправления ошибки без понимания". я на голубом глазу считаю, что это само по себе есть существенная часть того, что можно было бы назвать пониманием. Как минимум тем предварительным условием, без которого настоящего понимания не достичь. В общем-то, думаю, что я понимаю ваш посыл. еще только одно замечание. По поводу отладчика. В общем да - это локально полезная штука. К сожалению, в моем случае исходный код - это единственное средство постижения особенностей реализации задачи. информационные логи дают картинку ее фактического развертывания во времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 00:43 |
|
||
|
принципы логирования кода
|
|||
|---|---|---|---|
|
#18+
untitledвсем привет. мне тут вдруг интересно стало - а существуют ли какие-то стандарты, соглашения, общепринятые практики по тому, как над правильно выводить логи в разрабатываемом коде. меня в данном вопросе интересуют не столько инструменты, сколько именно методики. есть ведь соглашения по коду, стандарты написания комментариев, тестов, и т.д. наверняка и про логи уже давно кто-то сел и продумал этот вопрос :) Я делал для Delphi, логгер свой собственный учитывающий многопоточность приложения и опциональности источников данных в которые идет сохранение. Использовалось только сохранение в файл. В целом сводится к использованию в программе таких вот конструкций Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 00:44 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35576700&tid=1344972]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 565ms |

| 0 / 0 |
