やや閉鎖的なシステムでのデバッグのために、テキストをファイルに出力する必要があります。
ファイルへの変更を検出してリアルタイムで出力する、Windows (コンソールベースかどうかに関係なく) で実行されるツールを知っている人はいますか?
やや閉鎖的なシステムでのデバッグのために、テキストをファイルに出力する必要があります。
ファイルへの変更を検出してリアルタイムで出力する、Windows (コンソールベースかどうかに関係なく) で実行されるツールを知っている人はいますか?
私は複数のタスクを実行するツールが好きです。メモ帳++はメモ帳の優れた代替品であり、ドキュメントモニタープラグイン(標準のmsiでインストール)があり、うまく機能します。また、ポータブルなので、どこでも使用できるようにサムドライブに入れることができます。
コマンドラインオプションの場合、PowerShell(実際には新しいコマンドライン)には、すでに説明した優れた機能があります。
Get-Content someFile.txt -wait
ただし、正規表現を使用してコマンドラインでフィルタリングすることもできます
Get-Content web.log -wait | where { $_ -match "ERROR" }
cygwin では "tail -f" を使用します。
Windows PowerShellを使用すると、次のことができます。
Get-Content someFile.txt -wait
Windows でこれを行うためにBareTailを使用します。これは無料で、複数のファイルをテーリングするためのタブや設定可能な強調表示など、いくつかの優れた機能を備えています。
テールはこれまでのところ最良の答えです。
Windows を使用していない場合は、既にテールを持っている可能性があります。
Windows を使用している場合は、ここから多数の Unix コマンド ライン ツールを入手できます。それらを解凍し、PATH のどこかに配置します。
次に、ログ ファイルと同じフォルダーからコマンド プロンプトでこれを実行します。
tail -n 50 -f whatever.log
これにより、ファイルの最後の 50 行が表示され、ファイルが更新されると更新されます。
次のように、grep と tail を組み合わせて素晴らしい結果を得ることができます。
tail -n 50 -f whatever.log | grep Error
「エラー」を含む行だけが表示されます。
幸運を!
FileSystemWatcher はうまく機能しますが、重複したイベントの発生には少し注意する必要があります ( Google からの最初のリンク)。
Microsoft の SMSTrace を試してみてください (現在は CMTrace と呼ばれ、一部のバージョンの Windows では [スタート] メニューから直接利用できます)。
別のファイルによって書き込みのためにロックされている場合でも、テキスト ファイルの更新をリアルタイムで監視する優れた GUI ツールです。
説明に惑わされないでください。.txt、.log、.csv など、あらゆるファイルを監視できます。
ロックされたファイルを監視する機能は非常に便利であり、このユーティリティが優れている理由の 1 つです。
最も優れた機能の 1 つは、線の色付けです。「ERROR」という単語が表示されると、線が赤くなります。「WARN」という単語が表示されると、線が黄色になります。これにより、ログを追跡しやすくなります。
最近ビルドしたコンポーネントのテキスト ファイルを監視するためにFileSystemWatcherを使用しました。より良いオプションがあるかもしれません(限られた研究では何も見つかりませんでした)が、それはうまくいくように見えました:)
くそ、悪い、あなたは実際にあなたのためにそれをすべて行うためのツールを求めています..
もしあなたが不運に見舞われて、自分で転がしたいのなら ;)
スネークテール。これは良いオプションです。 http://snakenest.com/snaketail/
恥知らずなプラグインで答えを導き出すだけですが、log4net ファイルの表示に使用するHacksawという無料の Web ベースのアプリがあります。自動更新オプションを追加したので、ブラウザを常に更新しなくてもほぼリアルタイムで更新できます。
System.Diagnostics で FileSystemWatcher を使用できます。
MSDN から:
パブリック クラス ウォッチャー {
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でフォルダのアクティビティを監視する
これを行うために私が書いたユーティリティを次に示します。
FileSystemWatcher を使用して、ローカル フォルダーまたはネットワーク共有内のログ ファイルの変更を探し (マウントする必要はなく、UNC パスを指定するだけです)、新しいコンテンツをコンソールに追加します。
github: https://github.com/danbyrne84/multitail
http://www.danielbyrne.net/projects/multitail
お役に立てれば
誰も Trace32 (または Trace64) について言及していないことに驚きました。これらは優れた (無料の) Microsoft ユーティリティであり、優れた GUI を提供し、エラーなどを強調表示します。また、フィルタリング機能があり、必要なものとまったく同じように聞こえます。
ええ、Win32 の Tail と Cygwin の tail の両方を使用しました。どちらも優れていることがわかりましたが、クラッシュせずにインターネット経由で効率的にファイルを追跡できるため、Cygwin の方が少し好きです (Win32 のテールがクラッシュすることもありました)。
したがって、基本的には、Cygwin で tail を使用し、出力をローカル マシンのファイルにリダイレクトします。次に、このファイルを Vim で開き、必要に応じてリロード (:e) します。
@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
それを行うコマンドプロンプトの方法。
BareTail の場合は +1。私は実際にBareTailProを使用しています。これは、基本的な検索文字列または正規表現を使用した検索文字列でテールにリアルタイム フィルタリングを提供します。
リストを完成させるために、多くの便利なツールの GNU WIN32 ポートへのリンクがあります (その中には tail があります)。 GNUWin32 CoreUtils
FileMonは、あらゆる種類のファイル アクセスを検出できる無料のスタンドアロン ツールです。不要なものをフィルタリングできます。ただし、実際に変更されたデータは表示されません。
cygwin で 2 番目に「tail -f」を実行します。Tail for Win32 でも同じことができると思います。