Domanda

Per scopi di debug in un sistema piuttosto chiuso, devo generare il testo in un file.

Qualcuno conosce uno strumento che funziona su Windows (basato su console o meno) che rileva le modifiche a un file e le restituisce in tempo reale?

È stato utile?

Soluzione

Altri suggerimenti

Mi piacciono gli strumenti che eseguono più di un'attività, Notepad++ è un ottimo sostituto del blocco note e dispone di un plug-in Document Monitor (si installa con msi standard) che funziona alla grande.È anche portatile, quindi puoi averlo su una pen drive per usarlo ovunque.

Per un'opzione da riga di comando, PowerShell (che in realtà è una nuova riga di comando) ha un'ottima funzionalità già menzionata.

Get-Content someFile.txt -wait

Ma puoi anche filtrare dalla riga di comando usando un'espressione regolare

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

Uso "tail -f" sotto Cygwin.

Io uso Coda nuda per farlo su Windows.È gratuito e ha alcune funzionalità interessanti, come le schede per la coda di più file e l'evidenziazione configurabile.

Quando si usa Windows PowerShell puoi fare quanto segue:

Get-Content someFile.txt -wait

FileSystemWatcher funziona a meraviglia, anche se devi stare un po' attento all'attivazione di eventi duplicati - Primo collegamento da Google - ma tenendolo presente può produrre grandi risultati.

La coda è la migliore risposta finora.

Se non usi Windows, probabilmente hai già tail.

Se usi Windows, puoi ottenere tutta una serie di strumenti da riga di comando Unix da qui: http://unxutils.sourceforge.net/ - Decomprimili e inseriscili da qualche parte nel tuo PERCORSO.

Quindi esegui questa operazione al prompt dei comandi dalla stessa cartella in cui si trova il file di registro:

tail -n 50 -f qualunque.log

Questo ti mostrerà le ultime 50 righe del file e si aggiornerà man mano che il file si aggiorna.

Puoi combinare grep con tail con ottimi risultati, qualcosa del genere:

Tail -n 50 -f qualunque cosa.log | Errore grep

ti dà solo righe con "Errore" al suo interno

Buona fortuna!

Risposta tardiva, anche se potrebbe essere utile per qualcuno -- LOGEXPERT sembra essere un'utilità di coda interessante per Windows.

ho usato FileSystemWatcher per il monitoraggio dei file di testo per un componente che ho creato di recente.Potrebbero esserci opzioni migliori (non ho mai trovato nulla nel mio file limitato ricerca) ma sembrava funzionare bene :)

Cavolo, colpa mia, in realtà stai cercando uno strumento che faccia tutto per te..

Beh, se sei sfortunato e vuoi lanciarne uno tuo ;)

Prova SMSTrace di Microsoft (ora chiamato CMTrace e disponibile direttamente nel menu Start su alcune versioni di Windows)

È uno strumento GUI brillante che monitora gli aggiornamenti di qualsiasi file di testo in tempo reale, anche se è bloccato per la scrittura da un altro file.

Non lasciarti ingannare dalla descrizione, è in grado di monitorare qualsiasi file, inclusi .txt, .log o .csv.

La sua capacità di monitorare i file bloccati è estremamente utile, ed è uno dei motivi per cui questa utilità brilla.

Una delle caratteristiche più interessanti è la colorazione delle linee.Se vede la parola "ERRORE", la linea diventa rossa.Se vede la parola "WARN", la linea diventa gialla.Ciò rende i registri molto più facili da seguire.

Coda di serpente.È una buona opzione.http://snakenest.com/snaketail/

Oppure puoi utilizzare FileSystemWatcher in System.Diagnostics.

Da MSDN:

Watcher di classe pubblica {

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

}

Puoi anche seguire questo collegamento Guardare l'attività delle cartelle in VB.NET

Solo uno spudorato plug-in per rispondere alla risposta, ma ho un'app gratuita basata sul web chiamata Seghetto utilizzato per visualizzare i file log4net.Ho inserito opzioni di aggiornamento automatico in modo che tu possa fornirti aggiornamenti quasi in tempo reale senza dover aggiornare continuamente il browser.

Sì, ho usato sia Tail per Win32 che tail su Cygwin.Ho trovato entrambi eccellenti, anche se preferisco leggermente Cygwin poiché sono in grado di eseguire la coda dei file su Internet in modo efficiente senza arresti anomali (Tail per Win32 si è bloccato su di me in alcuni casi).

Quindi, in pratica, utilizzerei tail su Cygwin e reindirizzerei l'output su un file sul mio computer locale.Vorrei quindi aprire questo file in Vim e ricaricarlo (:e) quando richiesto.

+1 per BareTail.In realtà uso BareTailPro, che fornisce filtraggio in tempo reale sulla coda con stringhe di ricerca di base o stringhe di ricerca utilizzando regex.

Per completare l'elenco ecco un collegamento ai port GNU WIN32 di molti strumenti utili (tra cui tail).GNUWin32 CoreUtils

Sorpreso che nessuno abbia menzionato Trace32 (o Trace64).Queste sono fantastiche utilità Microsoft (gratuite) che forniscono una bella GUI ed evidenziano eventuali errori, ecc.Ha anche un filtro e suona esattamente ciò di cui hai bisogno.

Ecco un'utilità che ho scritto per fare proprio questo:

Utilizza un FileSystemWatcher per cercare le modifiche nei file di registro all'interno delle cartelle locali o delle condivisioni di rete (non è necessario montarle, basta fornire il percorso UNC) e aggiunge il nuovo contenuto alla console.

su github: https://github.com/danbyrne84/multitail

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

Spero che questo ti aiuti

FileMon è uno strumento autonomo e gratuito in grado di rilevare tutti i tipi di accesso ai file.Puoi filtrare tutti gli indesiderati.Tuttavia, non mostra i dati che sono effettivamente cambiati.

Il secondo "tail -f" in Cygwin.Presumo che Tail per Win32 realizzerà la stessa cosa.

Ho creato un piccolo visualizzatore per conto mio:

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

Un modo rapido per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top