Сведения о вопросе

Gentleman

17:12, 5th August, 2020

Теги

Как отслеживать текстовый файл в реальном времени

Просмотров: 676   Ответов: 23

Для отладки в несколько закрытой системе мне приходится выводить текст в файл.

Кто-нибудь знает инструмент, работающий на windows (консольный или нет), который обнаруживает изменения в файле и выводит их в режиме реального времени?



  Сведения об ответе

SKY

12:44, 21st August, 2020

Мне нравятся инструменты, которые будут выполнять более одной задачи, Notepad++ - отличная замена блокнота и имеет плагин Document Monitor (устанавливается со стандартным msi), который отлично работает. Он также является портативным, так что вы можете иметь его на флэш-накопителе для использования в любом месте.

Для опции командной строки PowerShell (которая на самом деле является новой командной строкой) имеет уже упомянутую замечательную функцию.

Get-Content someFile.txt -wait

Но вы также можете фильтровать в командной строке с помощью регулярного выражения

Get-Content web.log -wait | where { $_ -match "ERROR" }


  Сведения об ответе

fo_I_K

19:05, 5th August, 2020


  Сведения об ответе

VERSUION

10:45, 2nd August, 2020

Я использую "tail -f" под cygwin.


  Сведения об ответе

pumpa

16:38, 16th August, 2020

Я использую BareTail для этого на Windows. Это бесплатно и имеет некоторые приятные функции, такие как вкладки для отслеживания нескольких файлов и настраиваемая подсветка.


  Сведения об ответе

prince

14:59, 18th August, 2020

При использовании Windows PowerShell вы можете сделать следующее:

Get-Content someFile.txt -wait


  Сведения об ответе

VCe znayu

23:09, 19th August, 2020

FileSystemWatcher работает хорошо, хотя вам нужно быть немного осторожным в отношении повторяющихся событий, запускающих 1 - ю ссылку от Google , но с учетом этого вы можете получить отличные результаты.


  Сведения об ответе

+-*/

15:59, 9th August, 2020

Хвост-это лучший ответ на данный момент.

Если вы не используете Windows, у вас, вероятно, уже есть хвост.

Если вы используете Windows, вы можете получить целый набор инструментов командной строки Unix отсюда: http://unxutils.sourceforge.net/ - распакуйте их и поместите куда-нибудь в свой PATH.

Затем просто сделайте это в командной строке из той же папки, в которой находится ваш файл журнала:

хвост -n 50-f whatever.log

Это покажет вам последние 50 строк файла и будет обновляться по мере обновления файла.

Вы можете объединить grep с хвостом с отличными результатами - что-то вроде этого:

хвост-n 50 - F whatever.log | grep ошибка

дает вам только строки с "Error" в нем

Удачи вам!


  Сведения об ответе

JUST___

11:56, 3rd August, 2020

Поздний ответ, хотя и может быть полезен для кого-то- LOGEXPERT кажется интересной хвостовой утилитой для windows.


  Сведения об ответе

$DOLLAR

11:09, 26th August, 2020

Я использовал FileSystemWatcher для мониторинга текстовых файлов для недавно созданного компонента. Возможно, есть и лучшие варианты (я никогда ничего не находил в своем ограниченном исследовании), но это, похоже, хорошо сработало :)

Дерьмо, моя беда, ты на самом деле ищешь инструмент, чтобы сделать все это за тебя..

Ну а если вам не повезет и вы захотите свернуть свой собственный ;)


  Сведения об ответе

baggs

10:42, 27th August, 2020

Попробуйте SMSTrace от Microsoft (теперь называется CMTrace, и непосредственно доступен в меню Пуск на некоторых версиях Windows)

Это блестящий инструмент GUI, который отслеживает обновления любого текстового файла в режиме реального времени, даже если он заблокирован для записи другим файлом.

Не обманывайтесь описанием, его способен контролировать любой файл, в том числе .txt, .log или .csv.

Его способность отслеживать заблокированные файлы чрезвычайно полезна, и это одна из причин, почему эта утилита светит.

Одна из самых приятных особенностей-это окраска линий. Если он видит слово "ERROR", линия становится красной. Если он видит слово "WARN", линия становится желтой. Это делает журналы намного легче следовать.


  Сведения об ответе

lourence

13:51, 28th August, 2020

Змеиный Хвост. Это хороший вариант. http://snakenest.com/snaketail/


  Сведения об ответе

davran

14:42, 17th August, 2020

Чтобы сделать список полным, вот ссылка на порты GNU WIN32 многих полезных инструментов (среди них есть tail). GNUWin32 CoreUtils


  Сведения об ответе

DINO

20:14, 29th August, 2020

Да, я использовал и хвост для Win32, и хвост на Cygwin. Я обнаружил, что оба они превосходны, хотя я немного предпочитаю Cygwin, поскольку я могу эффективно отслеживать файлы через Интернет без сбоев (хвост для Win32 разбился на мне в некоторых случаях).

Так что в принципе, я бы использовал tail на Cygwin и перенаправил вывод в файл на моей локальной машине. Затем я бы открыл этот файл в Vim и перезагрузил его (: e), когда это потребуется.


  Сведения об ответе

lourence

12:41, 13th August, 2020

+1 для BareTail. Я на самом деле использую BareTailPro , который обеспечивает фильтрацию в реальном времени на хвосте с базовыми строками поиска или строками поиска с использованием regex.


  Сведения об ответе

lool

13:37, 1st August, 2020

Вы можете использовать FileSystemWatcher в System.Diagnostics.

От MSDN:

наблюдатель за общественным классом {

public static void Main()
{
Run();

}

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public static void Run()
{
    string[] args = System.Environment.GetCommandLineArgs();

    // If a directory is not specified, exit program.
    if(args.Length != 2)
    {
        // Display the proper way to call the program.
        Console.WriteLine("Usage: Watcher.exe (directory)");
        return;
    }

    // Create a new FileSystemWatcher and set its properties.
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = args[1];
    /* Watch for changes in LastAccess and LastWrite times, and 
       the renaming of files or directories. */
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
       | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    // Only watch text files.
    watcher.Filter = "*.txt";

    // Add event handlers.
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted += new FileSystemEventHandler(OnChanged);
    watcher.Renamed += new RenamedEventHandler(OnRenamed);

    // Begin watching.
    watcher.EnableRaisingEvents = true;

    // Wait for the user to quit the program.
    Console.WriteLine("Press \'q\' to quit the sample.");
    while(Console.Read()!='q');
}

// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
    // Specify what is done when a file is changed, created, or deleted.
   Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
}

private static void OnRenamed(object source, RenamedEventArgs e)
{
    // Specify what is done when a file is renamed.
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
}

Вы также можете перейти по этой ссылке, наблюдая за деятельностью папки в VB.NET


  Сведения об ответе

JUST___

18:49, 15th August, 2020

Просто бесстыдный штекер, чтобы следить за ответом, но у меня есть бесплатное веб-приложение под названием Hacksaw , используемое для просмотра файлов log4net. Я ввел параметры автоматического обновления, чтобы вы могли получать обновления почти в реальном времени, не обновляя браузер все время.


  Сведения об ответе

dumai

02:37, 27th August, 2020

Удивительно, что никто не упомянул Trace32 (или Trace64). Это отличные (бесплатные) утилиты Microsoft, которые дают хороший GUI и выделяют любые ошибки и т. д. Он также имеет фильтрацию и звучит именно так, как вам нужно.


  Сведения об ответе

PHPH

21:06, 1st October, 2020

Вот утилита, которую я написал, чтобы сделать именно это:

Он использует FileSystemWatcher для поиска изменений в файлах журналов в локальных папках или сетевых общих папках (не нужно монтировать, просто укажите путь UNC) и добавляет новое содержимое в консоль.

на github: https://github.com/danbyrne84/multitail

http://www.danielbyrne.net/projects/multitail

Надеюсь, это поможет


  Сведения об ответе

SILA

05:05, 29th August, 2020

FileMon -это бесплатный автономный инструмент, который может обнаруживать все виды доступа к файлам. Вы можете отфильтровать все нежелательное. Однако он не показывает вам данные, которые действительно изменились.


  Сведения об ответе

VERSUION

07:41, 22nd August, 2020

Я второй "tail -f" в cygwin году. Я предполагаю, что хвост для Win32 будет делать то же самое.


  Сведения об ответе

LAST

22:13, 16th August, 2020

  Сведения об ответе

9090

21:58, 4th August, 2020

Я сделал крошечный просмотр самостоятельно:

https://github.com/enexusde/Delphi/wiki/TinyLog


  Сведения об ответе

ASSembler

09:11, 3rd August, 2020

@echo off

set LoggingFile=C:\foo.txt
set lineNr=0

:while1
for /f "usebackq delims=" %%i in (`more +%lineNr% %LoggingFile%`) DO (
    echo %%i
    set /a lineNr+=1
    REM Have an appropriate stop condition here by checking i
)
goto :while1

Это можно сделать с помощью командной строки.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться