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

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

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

20.08.2008 19:25:07
23 ОТВЕТА
РЕШЕНИЕ
36
20.08.2008 19:32:57
ха-ха, я помню, как мы придумали фразу «tailing wget-log» (означает ожидание долгой загрузки до конца)
Midhat 24.09.2008 16:17:32
как уже упоминалось в другом месте, tail -fэто команда. также, если у вас установлен git, возможно, у вас есть tail.
cregox 18.05.2013 19:40:52

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

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

Хорошо, если тебе не повезло и ты хочешь накатить свое;)

3
20.08.2008 19:26:36

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

18
20.08.2008 19:27:36
он также находится в gnuwin32: gnuwin32.sourceforge.net/packages/coreutils.htm
sm4rk0 26.05.2014 15:38:14
Мне не повезло с этим; файл, который я пытаюсь записать, записывается раз в секунду, поэтому, возможно, он всегда находится в заблокированном состоянии. Я получаю сообщение "не могу открыть для чтения: устройство или ресурс занят". Я использую tail 8.23 ​​(версия пакета cygwin 8.23-4).
rusty 19.12.2014 20:49:22

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

6
20.08.2008 19:29:27

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

Из MSDN:

общественный класс 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

1
20.08.2008 19:32:09

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

0
20.08.2008 19:44:38

Я второй "tail -f" в Cygwin. Я предполагаю, что Tail for Win32 сделает то же самое.

0
20.08.2008 19:45:48

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

Get-Content someFile.txt -wait
15
20.08.2008 19:48:59

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

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

Если вы используете Windows, вы можете получить целый ряд инструментов командной строки Unix здесь . Разархивируйте их и положите куда-нибудь в свой путь.

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

tail -n 50 -f whatever.log

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

Вы можете комбинировать grep с tail с отличными результатами - примерно так:

tail -n 50 -f whatever.log | grep Error

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

Удачи!

6
27.11.2019 04:10:39
в моем ПУТИ. Какой у меня ПУТЬ?
user4951 7.05.2014 11:37:12

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

14
20.08.2008 20:01:16

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

1
20.08.2008 20:21:36

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

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

1
24.08.2008 18:10:17

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

1
24.08.2008 18:48:16

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

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

Get-Content someFile.txt -wait

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

Get-Content web.log -wait | where { $_ -match "ERROR" }
65
2.09.2008 14:12:08
В Notepad ++ для тех, кто не может найти Document Monitor в меню плагинов, его можно установить с помощью диспетчера плагинов.
StormPooper 10.09.2012 14:03:41
Оба не работают при открытии файла из сети :(
Mikhail 30.05.2014 11:43:08
Я обнаружил, что монитор документов обновляется только после закрытия приложения, которое пишет в файл, который я пытаюсь отслеживать.
rusty 19.12.2014 20:57:55
Get-Content выдает мне ошибку, которая гласит: «Процесс не может получить доступ к файлу, потому что он используется другим процессом».
rusty 19.12.2014 21:12:38
В настоящее время отсутствует плагин Document Monitor, но в нижней части Viewменю есть встроенная опция «Мониторинг» .
Mark 11.09.2019 16:10:03
0
24.09.2008 16:14:26

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

1
7.07.2009 13:29:36

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

1
22.05.2012 11:28:56

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

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

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

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

Одна из самых приятных черт - это цвет линий. Если он видит слово «ОШИБКА», строка становится красной. Если он видит слово «WARN», строка становится желтой. Это делает логи намного проще для отслеживания.

3
12.06.2018 16:15:07
Это определенно скрытый драгоценный камень.
Doug 28.07.2014 03:57:16

Вот утилита, которую я написал для этого:

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

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

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

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

1
15.04.2014 09:57:10
-1 NullReferenceException - плохо проверено?
Grim 22.08.2014 05:20:38
серьезно понизить за это? вау, я не продаю это - просто пытаюсь проиллюстрировать, как это можно сделать. Вы поместили свои пути в конфигурационный файл перед его запуском?
managedheap84 26.08.2014 11:07:10

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

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

0
22.08.2014 06:42:19
Надеюсь, что это хорошо проверено ...; p
managedheap84 26.08.2014 11:08:00

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

2
5.05.2015 13:55:08
Я протестировал несколько из них, и хотя он очень легок, SnakeTail отлично справляется с одной задачей: подгоняет файл с шаблоном подстановки. Например, при разработке Sitecore у вас будет файл журнала с именем, log.20150901.220158.txtно при перекомпиляции / изменении конфигурации будет создан новый файл с другой отметкой времени. Настройка SnakeTail с использованием, например, шаблона с подстановочными знаками log.*.txt, автоматически подключит следующий файл в строке, не нужно переключать цели. Спасибо за совет, Эрик.
Frederik Struck-Schøning 2.09.2015 07:18:51
Не за что, чувак.
Erick Alves 30.11.2015 16:33:08

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

5
3.08.2015 09:54:06
Я действительно похож на LOGEXPERT, но я не могу хорошо работать на Windows10, как это работало на Windows7, я не могу открыть файл с помощью
vanduc1102 14.07.2016 04:34:01
@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

Командная строка способ сделать это.

0
2.12.2015 09:31:28