Дублирование всего консольного вывода во внешний файл

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
kraser
Posts: 29
Joined: Wed 23 Dec, 2009 19:20

Дублирование всего консольного вывода во внешний файл

Post by kraser »

Очень сильно не хватает такой фишки, как дублирование всего консольного вывода во внешний файл.

Идеально было бы так:

В настройках указываем, что весь консольный вывод должен дублироваться в "такую-то" папку, файл создавать чистый раз в день (час, неделю, год...), хранить в этой папке логи за неделю (месяц, 20 дней....). Затем ставим галочку "Дублирование включено", и после этого, весь вывод любых программ, запущенных из командной строки far, попадает в логи. Которые при необходимости смотрим.

Я знаю, что есть опция /w, я знаю про перенаправление вывода... Но как часто бывало так что информация жизненно необходимая для анализа происходящего находится выше, а не перенаправление, не /w - не включено... И команду второй раз не запустишь (это особенно актуально для запуска всяких "одноразовых" скриптов по обработке каких либо данных в субд...).
User avatar
Kerberos464
Posts: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

Re: Дублирование всего консольного вывода во внешний файл

Post by Kerberos464 »

кстати, да, полезная штука была бы.
поддерживаю.
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Дублирование всего консольного вывода во внешний файл

Post by Maximus5 »

Ну-ну... интересно что вам скажут )

а вообще, что-то похожее (для последней команды) давно в conemu есть.
kraser
Posts: 29
Joined: Wed 23 Dec, 2009 19:20

Re: Дублирование всего консольного вывода во внешний файл

Post by kraser »

Maximus5 wrote:а вообще, что-то похожее (для последней команды) давно в conemu есть.
Последняя команда - это не совсем то, что нужно. Например в случае Ctrl+G (пакетная обработка) хочется что бы сохранился вывод для всех выполненных команд.
User avatar
KcinKh
Posts: 48
Joined: Fri 14 Oct, 2005 21:47
Location: Ukraine
Has thanked: 5 times

Re: Дублирование всего консольного вывода во внешний файл

Post by KcinKh »

kraser wrote:И команду второй раз не запустишь (это особенно актуально для запуска всяких "одноразовых" скриптов по обработке каких либо данных в субд...).
kraser wrote:Последняя команда - это не совсем то, что нужно. Например в случае Ctrl+G (пакетная обработка) хочется что бы сохранился вывод для всех выполненных команд.
Присоединяюсь. Такая фича нашла бы своего пользователя, тем более включаемая. Единственная проблема это что делать если в двух или более консолях FAR-а одновременно выполняются внешние команды? Если сливать все в один файл, то потом не разберешь какая строчка от какой команды, а если делать при запуске FAR-а новый файл, то как потом найти нужный, и кто будет заниматься чисткой всего этого добра, - планировщик, типа удалять старше N дней? Фича полезная и ньюансов много. Нужно все продумать.
kraser
Posts: 29
Joined: Wed 23 Dec, 2009 19:20

Re: Дублирование всего консольного вывода во внешний файл

Post by kraser »

История команд (Alt+F8) - идеальное место!
  • Нажимаем на выбранной команде F3 (к примеру) и смотрим ее вывод во встроенном вьювере
  • Рядом с командой "галочкой" можно пометить, есть ли для нее сохраненный вывод
  • Вывод каждой команды - в отдельном файле
  • Определяем срок хранения логов, в днях например. Все что старше - автоматически удаляются
User avatar
KcinKh
Posts: 48
Joined: Fri 14 Oct, 2005 21:47
Location: Ukraine
Has thanked: 5 times

Re: Дублирование всего консольного вывода во внешний файл

Post by KcinKh »

kraser wrote:История команд (Alt+F8) - идеальное место!
  • Нажимаем на выбранной команде F3 (к примеру) и смотрим ее вывод во встроенном вьювере
  • Рядом с командой "галочкой" можно пометить, есть ли для нее сохраненный вывод
  • Вывод каждой команды - в отдельном файле
  • Определяем срок хранения логов, в днях например. Все что старше - автоматически удаляются
Не плохо. Такое наверное можно и плагином реализовать (AltHistory/MoreHistory). Правда для каждодневных команд файл, я так понимаю, лог будет просто накапливаться и чисто по дате уже не почистить, нужно будет еще прокрутку лога на максимальное количество строк предусмотреть или типа того.
sdv
Posts: 1
Joined: Mon 10 Sep, 2012 04:50

Re: Дублирование всего консольного вывода во внешний файл

Post by sdv »

Да, фича неплохая.
А разделять вывод от разных сессий фара можно, формируя имя файла с логом от команды по id команды, которая хранится в истории команд (какой-то id ведь у нее есть?), т.е. примерно так:
584_20120512.log
585_20120512.log
586_20120512.log
...
902_20120513.log
903_20120513.log
^^^ id команды из истории команд
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: Дублирование всего консольного вывода во внешний файл

Post by HaRT »

А отчего все так зациклились на хранении логов в текстовых файлах?! Как хранить — это чисто технический вопрос, который должен решаться исходя из соображений целесообразности. Лишь бы была возможность просто получить выборку по заданным параметрам: временнОму диапазону, сеансу/пользователю и пр.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Дублирование всего консольного вывода во внешний файл

Post by Centaur »

HaRT wrote:А отчего все так зациклились на хранении логов в текстовых файлах?!
Ну не в БД же?…
HaRT wrote:Лишь бы была возможность просто получить выборку по заданным параметрам: временнОму диапазону, сеансу/пользователю и пр.
Да, и эта выборка должна мочь быть стандартным вводом для любой утилиты-фильтра (head/tail, grep, sed, awk). Что оставляет совсем немного вариантов реализации.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: Дублирование всего консольного вывода во внешний файл

Post by HaRT »

Centaur wrote:
HaRT wrote:А отчего все так зациклились на хранении логов в текстовых файлах?!
Ну не в БД же?…
Почему нет? Разумеется, при условии, что ресурсоёмкость будет приемлемая.
Centaur wrote:эта выборка должна мочь быть стандартным вводом для любой утилиты-фильтра (head/tail, grep, sed, awk). Что оставляет совсем немного вариантов реализации.
Само собой, вариантом выдачи по умолчанию должен быть исходный вывод verbatim. На мой взгляд, это никак не ограничивает свободу в принятии решений об организации хранения.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Дублирование всего консольного вывода во внешний файл

Post by Max Rusov »

Что то я сомневаюсь, что это вообще возможно, без извратов (типа ConEmu). Пользуйтесть tee.
kraser
Posts: 29
Joined: Wed 23 Dec, 2009 19:20

Re: Дублирование всего консольного вывода во внешний файл

Post by kraser »

Max Rusov wrote:Что то я сомневаюсь, что это вообще возможно, без извратов (типа ConEmu). Пользуйтесть tee.
tee - неплохо, но не автоматически. Нужно постоянно вспоминать о том, что в конце командной строки нужно дописать "| tee filename". И когда я точно знаю, что вывод мне нужен, я делаю явное перенаправление (например так: view: < COMMAND). Хотелось бы что бы это было для всех команд автоматически.

Вот пришло в голову... Может сделать шаблон командной строки? Например задается шаблон "$cm | tee filename.txt", вместо $cm подставляется то, что пользователь ввел и выполняется.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: Дублирование всего консольного вывода во внешний файл

Post by HaRT »

kraser wrote:Может сделать шаблон командной строки? Например задается шаблон "$cm | tee filename.txt", вместо $cm подставляется то, что пользователь ввел и выполняется.
Повесьте на Enter макрос, который дописывает в конец командной строки “ | tee.exe -a Y:\our\Global\Log.File” и лишь затем собственно „нажимает” Enter, — будет неплохое начальное приближение.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Дублирование всего консольного вывода во внешний файл

Post by SUSim »

Вариант с макросом на tee в принципе не плох, а при творческом подходе, даже хорош - при развитом макросе можно и время сохранить и почистить (идея мне понравилась попробую реализовать, для академического интереса и параллельно на lua :) ), но как же посмотреть вывод конкретной команды - это усложнит макрос ещё на порядок... и в итоге, это будет не макрос, а скрипт на пяток страниц...
в фаре это было бы проще ИМХО как предлагалось с меню команд, да и хранить можно в базе вместе с историей.

Однако, большое НО : как отделить то для чего нужно хранить вывод, а для чего нет? У меня есть проги которые выводят в консоль мегабайты инфы!
SimSU ··· ·· -- ··· ··-
Post Reply

Return to “Предложения и идеи”