Frage

Zu Debugzwecken in einem etwas geschlossenen System muss ich Text in eine Datei ausgeben.

Kennt jemand ein Tool, das unter Windows (konsolenbasiert oder nicht) läuft und Änderungen an einer Datei erkennt und in Echtzeit ausgibt?

War es hilfreich?

Lösung

Andere Tipps

Ich mag Tools, die mehr als eine Aufgabe erledigen. Notepad++ ist ein großartiger Notepad-Ersatz und verfügt über ein Document Monitor-Plugin (wird mit Standard-MSI installiert), das hervorragend funktioniert.Außerdem ist es tragbar, sodass Sie es auf einem USB-Stick speichern und überall verwenden können.

Als Befehlszeilenoption verfügt PowerShell (die eigentlich eine neue Befehlszeile ist) über eine bereits erwähnte großartige Funktion.

Get-Content someFile.txt -wait

Sie können aber auch über die Befehlszeile mithilfe eines regulären Ausdrucks filtern

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

Ich verwende „tail -f“ unter Cygwin.

ich benutze BareTail dafür, dass Sie dies unter Windows tun.Es ist kostenlos und verfügt über einige nette Funktionen, wie z. B. Registerkarten zum Verfolgen mehrerer Dateien und konfigurierbare Hervorhebungen.

Beim Benutzen Windows PowerShell Sie können Folgendes tun:

Get-Content someFile.txt -wait

FileSystemWatcher funktioniert prima, allerdings muss man ein wenig vorsichtig sein, wenn es darum geht, doppelte Ereignisse auszulösen – Erster Link von Google - aber wenn man das bedenkt, kann man großartige Ergebnisse erzielen.

Tail ist bisher die beste Antwort.

Wenn Sie kein Windows verwenden, verfügen Sie wahrscheinlich bereits über tail.

Wenn Sie Windows verwenden, können Sie hier eine ganze Reihe von Unix-Befehlszeilentools herunterladen: http://unxutils.sourceforge.net/ - Entpacken Sie sie und legen Sie sie irgendwo in Ihrem PATH ab.

Dann tun Sie dies einfach an der Eingabeaufforderung aus demselben Ordner, in dem sich Ihre Protokolldatei befindet:

tail -n 50 -f was auch immer.log

Dies zeigt Ihnen die letzten 50 Zeilen der Datei und wird aktualisiert, wenn die Datei aktualisiert wird.

Sie können grep mit tail mit großartigen Ergebnissen kombinieren – etwa so:

Tail -n 50 -f was auch immer. Grep -Fehler

gibt Ihnen nur Zeilen mit „Error“ darin

Viel Glück!

Späte Antwort, könnte aber für jemanden hilfreich sein – LOGEXPERT scheint ein interessantes Tail-Utility für Windows zu sein.

Ich habe benutzt FileSystemWatcher zur Überwachung von Textdateien für eine Komponente, die ich kürzlich erstellt habe.Möglicherweise gibt es bessere Optionen (ich habe in meinem nie etwas gefunden begrenzt Recherche), aber das schien gut zu funktionieren :)

Mist, mein Fehler, Sie sind tatsächlich auf der Suche nach einem Werkzeug, das alles für Sie erledigt.

Na ja, wenn du Pech hast und dein eigenes rollen willst ;)

Probieren Sie SMSTrace von Microsoft aus (jetzt CMTrace genannt und bei einigen Windows-Versionen direkt im Startmenü verfügbar).

Es ist ein brillantes GUI-Tool, das Aktualisierungen jeder Textdatei in Echtzeit überwacht, selbst wenn diese durch eine andere Datei zum Schreiben gesperrt ist.

Lassen Sie sich von der Beschreibung nicht täuschen, es kann jede Datei überwachen, einschließlich .txt, .log oder .csv.

Seine Fähigkeit, gesperrte Dateien zu überwachen, ist äußerst nützlich, und ist einer der Gründe, warum dieses Dienstprogramm glänzt.

Eines der schönsten Features ist die Linienfärbung.Wenn das Wort „ERROR“ angezeigt wird, wird die Zeile rot.Wenn das Wort „WARN“ angezeigt wird, wird die Zeile gelb.Dadurch sind die Protokolle viel einfacher zu verfolgen.

Schlangenschwanz.Es ist eine gute Option.http://snakenest.com/snaketail/

Sie können den FileSystemWatcher in System.Diagnostics verwenden.

Von MSDN:

öffentliche Klassenbeobachter {

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);
}

}

Sie können auch diesem Link folgen Beobachten der Ordneraktivität in VB.NET

Nur ein schamloser Hinweis auf die Antwort, aber ich habe eine kostenlose webbasierte App namens Säge Wird zum Anzeigen von Log4net-Dateien verwendet.Ich habe Optionen für die automatische Aktualisierung eingebaut, damit Sie Updates nahezu in Echtzeit durchführen können, ohne den Browser ständig aktualisieren zu müssen.

Ja, ich habe sowohl Tail für Win32 als auch Tail für Cygwin verwendet.Ich habe festgestellt, dass beide ausgezeichnet sind, obwohl ich Cygwin etwas bevorzuge, da ich Dateien effizient und ohne Abstürze über das Internet verfolgen kann (Tail für Win32 ist bei mir in einigen Fällen abgestürzt).

Im Grunde würde ich tail auf Cygwin verwenden und die Ausgabe in eine Datei auf meinem lokalen Computer umleiten.Ich würde diese Datei dann in Vim öffnen und sie bei Bedarf neu laden (:e).

+1 für BareTail.Ich benutze es tatsächlich BareTailPro, das eine Echtzeitfilterung im Tail mit einfachen Suchzeichenfolgen oder Suchzeichenfolgen mithilfe von Regex ermöglicht.

Um die Liste zu vervollständigen, finden Sie hier einen Link zu den GNU WIN32-Ports vieler nützlicher Tools (darunter auch tail).GNUWin32 CoreUtils

Überrascht hat niemand Trace32 (oder Trace64) erwähnt.Dies sind großartige (kostenlose) Microsoft-Dienstprogramme, die eine schöne Benutzeroberfläche bieten und etwaige Fehler usw. hervorheben.Es verfügt auch über Filter und klingt genau das, was Sie brauchen.

Hier ist ein Dienstprogramm, das ich genau dafür geschrieben habe:

Es verwendet einen FileSystemWatcher, um nach Änderungen in Protokolldateien in lokalen Ordnern oder Netzwerkfreigaben zu suchen (müssen nicht gemountet sein, geben Sie einfach den UNC-Pfad an) und hängt den neuen Inhalt an die Konsole an.

auf Github: https://github.com/danbyrne84/multitail

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

Hoffe das hilft

FileMon ist ein kostenloses eigenständiges Tool, das alle Arten von Dateizugriffen erkennen kann.Sie können alles Unerwünschte herausfiltern.Es werden Ihnen jedoch nicht die Daten angezeigt, die sich tatsächlich geändert haben.

Ich stelle als zweites „tail -f“ in Cygwin ein.Ich gehe davon aus, dass Tail für Win32 dasselbe bewirken wird.

Ich habe selbst einen kleinen Viewer gemacht:

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

Eine Eingabeaufforderungsmethode, dies zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top