Comment surveiller un fichier texte en temps réel [fermé]

pour des raisons de débogage dans un système quelque peu fermé, je dois sortir du texte dans un fichier.

est-ce que quelqu'un connaît un outil qui tourne sur windows (console ou non) qui détecte les changements dans un fichier et les affiche en temps réel?

65
demandé sur Community 2008-08-20 23:25:07

23 réponses

35
répondu Jon Galloway 2008-08-20 19:32:57

j'aime les outils qui vont effectuer plus d'une tâche, Notepad++ est un excellent remplacement de bloc-notes et a un plugin de moniteur de Document (installe avec MSI standard) qui fonctionne très bien. Il est également portable de sorte que vous pouvez l'avoir sur une clé USB pour une utilisation n'importe où.

pour une option en ligne de commande, PowerShell (qui est en fait une nouvelle ligne de commande) a une grande fonctionnalité déjà mentionnée.

Get-Content someFile.txt -wait

mais vous pouvez également filtrer en ligne de commande en utilisant un expression courante

Get-Content web.log -wait | where { $_ -match "ERROR" }
61
répondu Mike Schall 2008-09-02 14:12:08

j'utilise "tail-f" sous cygwin.

17
répondu CHitchcock 2008-08-20 19:27:36

j'utilise BareTail pour ce faire sur Windows. Il est libre et a quelques traits agréables, tels que des onglets pour coller des dossiers multiples et la mise en évidence configurable.

14
répondu John Topley 2008-08-20 20:01:16

lorsque vous utilisez Windows PowerShell vous pouvez faire ce qui suit:

Get-Content someFile.txt -wait
13
répondu Lars Truijens 2008-08-20 19:48:59

FileSystemWatcher fonctionne un treat, bien que vous devez être un peu prudent sur les événements dupliquer le tir - 1er lien de Google - mais en gardant cela à l'esprit peut produire de grands résultats.

6
répondu ZombieSheep 2008-08-20 19:29:27

queue est la meilleure réponse jusqu'à présent.

si vous n'utilisez pas Windows, vous avez probablement déjà tail.

si vous utilisez Windows, vous pouvez obtenir un grand nombre D'outils en ligne de commande Unix d'ici: http://unxutils.sourceforge.net / - décompressez-les et mettez-les quelque part sur votre chemin.

Puis il suffit de le faire à l'invite de commande dans le même dossier que votre fichier journal:

tail-n 50 - F peu importe.log

cela vous montrera les 50 dernières lignes du fichier et sera mis à jour au fur et à mesure que le fichier sera mis à jour.

vous pouvez combiner grep avec tail avec de grands résultats-quelque chose comme ceci:

tail-n 50 -f que ce soit.erreur log / grep

vous donne juste des lignes avec "erreur" en elle

bonne chance!

4
répondu 2008-08-20 19:50:19

réponse Tardive, mais peut être utile pour quelqu'un -- LOGEXPERT nous semble intéressant de la queue de l'utilitaire pour windows.

4
répondu Ragav 2015-08-03 09:54:06

j'ai utilisé FileSystemWatcher pour la surveillance de fichiers texte pour un composant que j'ai récemment construit. Il peut y avoir de meilleures options (je n'ai jamais rien trouvé dans mon limité recherche) mais qui a semblé faire le tour bien :)

Merde, ma faute, tu cherches en fait un outil pour tout faire pour toi..

Bien si vous êtes malchanceux et que vous souhaitez restaurer votre propre ;)

3
répondu Rob Cooper 2008-08-20 19:26:36

Queue De Serpent. C'est une bonne option. http://snakenest.com/snaketail/

2
répondu Erick Alves 2015-05-05 13:55:08

essayez SMSTrace de Microsoft (maintenant appelé CMTrace, et directement disponible dans le Menu Démarrer sur certaines versions de Windows)

C'est un outil GUI brillant qui surveille les mises à jour à n'importe quel dossier de texte en temps réel, même si son verrouillé pour l'écriture par un autre dossier.

ne vous fiez pas à la description, elle est capable de surveiller n'importe quel dossier, y compris .txt,.ou du journal .csv.

Sa capacité à surveiller les fichiers verrouillés est extrêmement utile , et est l'une des raisons pour lesquelles cet utilitaire brille.

L'une des plus belles caractéristiques est la coloration en ligne. S'il voit le mot "erreur", la ligne devient rouge. S'il voit le mot "WARN", la ligne devient jaune. Cela rend les journaux beaucoup plus facile à suivre.

2
répondu Contango 2018-06-12 16:15:07

Yor peut utiliser le FileSystemWatcher dans le système.Diagnostic.

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

}

vous pouvez également suivre ce lien VB.NET

1
répondu Nelson Miranda 2008-08-20 19:32:09

juste une prise éhontée à suivre sur la réponse, mais j'ai une application gratuite basée sur le web appelé Hacksaw utilisé pour la visualisation des fichiers log4net. J'ai mis dans un auto rafraîchir les options de sorte que vous pouvez vous donner près des mises à jour en temps réel sans avoir à rafraîchir le navigateur tout le temps.

1
répondu Dillie-O 2008-08-20 20:21:36

Oui, J'ai utilisé Tail pour Win32 et tail pour Cygwin. J'ai trouvé les deux pour être excellent, bien que je préfère Cygwin légèrement que je suis capable de queue des fichiers sur internet efficacement sans accidents (queue pour Win32 s'est écrasé sur moi dans certains cas).

donc en gros, j'utiliserais tail sur Cygwin et redirigerais la sortie vers un fichier sur ma machine locale. Je voudrais alors ouvrir ce fichier dans Vim et le recharger (: e) si nécessaire.

1
répondu ryan 2008-08-24 18:10:17

+1 pour BareTail. J'utilise en fait BareTailPro , qui fournit un filtrage en temps réel sur la queue avec des chaînes de recherche de base ou des chaînes de recherche en utilisant regex.

1
répondu Rob Thomas 2008-08-24 18:48:16

pour compléter la liste, voici un lien vers les ports WIN32 de GNU de nombreux outils utiles (dont tail). GNUWin32 CoreUtils

1
répondu mandrake 2009-07-07 13:29:36

surpris que personne n'ait mentionné Trace32 (ou Trace64). Ce sont de grands utilitaires (libres) Microsoft qui donnent une interface graphique agréable et soulignent toutes les erreurs, etc. Il a également un filtrage et ressemble exactement à ce dont vous avez besoin.

1
répondu Simon 2012-05-22 11:28:56

FileMon est un outil autonome libre qui peut détecter tous les types d'accès aux fichiers. Vous pouvez filtrer les indésirables. Il ne vous montre pas les données qu'il a effectivement changé.

0
répondu Lars Truijens 2008-08-20 19:44:38

je seconde "tail-f" dans cygwin. Je suppose que Tail for Win32 fera la même chose.

0
répondu Owen 2008-08-20 19:45:48
0
répondu Chasler 2008-09-24 16:14:26

voici un utilitaire pour lequel j'ai écrit:

il utilise un gestionnaire de fichiers pour rechercher les changements dans les fichiers journaux dans les dossiers locaux ou les partages réseau (ne pas avoir à être monté, juste fournir le chemin UNC) et ajoute le nouveau contenu à la console.

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

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

Espérons que cette aide

0
répondu managedheap84 2014-04-15 09:57:10

j'ai fait une petite visionneuse par mon propre:

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

0
répondu Peter Rader 2014-08-22 06:42:19
@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

une commande de manière rapide de le faire.

0
répondu Chaitanya 2015-12-02 09:31:28