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


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

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

23 65

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 что угодно.журнал

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

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

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

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

удачи!

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

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

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

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

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

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

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

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

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

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

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

от MSDN:

public class Watcher {

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 разбился на меня в некоторых случаях).

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

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

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

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

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

Я второй "хвост-f" в cygwin. Я предполагаю, что хвост для 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

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