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

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

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

23 ответов



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

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

Get-Content someFile.txt -wait

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

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

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


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


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

Get-Content someFile.txt -wait

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


хвост-это лучший ответ до сих пор.

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

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

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

хвост-n 50-f что угодно.log

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

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

хвост-n 50-f что угодно.ошибка log / grep

дает вам только строки с "ошибкой" в нем

удачи!


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


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

дерьмо, мой плохой, вы на самом деле после инструмента, чтобы сделать все это для вас..

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


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


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

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

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

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

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


Yor может использовать FileSystemWatcher в системе.Диагностика.

из 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


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


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

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


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


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


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


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


Я второй "хвост-f" в cygwin. Я предполагаю, что Tail для Win32 выполнит то же самое.



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

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

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

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

надеюсь, что это помогает


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

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


@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

способ командной строки для этого.