为了在稍微封闭的系统中进行调试,我必须将文本输出到文件中。
有谁知道在Windows上运行的工具(是否基于控制台)检测到文件更改并实时输出的工具?
Answers:
tail -f
是命令。另外,如果您安装了git,则可能有尾巴。
我喜欢可以执行多个任务的工具,Notepad ++是出色的记事本替代品,并且具有可很好工作的Document Monitor插件(与标准msi一起安装)。它还是便携式的,因此您可以将其放在随身碟上以在任何地方使用。
对于命令行选项,PowerShell(实际上是一个新命令行)具有已经提到的强大功能。
Get-Content someFile.txt -wait
但是您也可以在命令行使用正则表达式进行过滤
Get-Content web.log -wait | where { $_ -match "ERROR" }
View
菜单底部有一个内置的“监视”选项。
我在cygwin下使用“ tail -f”。
使用Windows PowerShell时,您可以执行以下操作:
Get-Content someFile.txt -wait
到目前为止,尾巴是最好的答案。
如果您不使用Windows,则可能已经有尾巴了。
如果您确实使用Windows,则可以从此处获得大量的Unix命令行工具。解压缩它们并将它们放在您的PATH中的某个位置。
然后只需在命令提示符下从您的日志文件所在的文件夹中执行此操作:
tail -n 50 -f whatever.log
这将向您显示文件的最后50行,并将随着文件更新而更新。
您可以将grep与tail结合使用,从而获得不错的效果-如下所示:
tail -n 50 -f whatever.log | grep Error
给您仅带有“错误”的行。
祝好运!
答案较晚,尽管可能对某人有所帮助-LOGEXPERT似乎是Windows的有趣尾部实用程序。
我使用FileSystemWatcher监视我最近构建的组件的文本文件。可能有更好的选择(我在有限的研究中从未发现任何东西),但这似乎很好地完成了这个技巧:)
糟糕,我不好,您实际上是在寻找一种为您完成所有工作的工具。
好吧,如果您不走运并且想自己滚一下;)
蛇尾巴。这是一个不错的选择。 http://snakenest.com/snaketail/
log.20150901.220158.txt
但是在重新编译/配置更改后,将使用不同的时间戳生成一个新文件。使用通配符模式设置SnakeTaillog.*.txt
会自动在行中尾随下一个文件,而无需切换目标。谢谢小费,埃里克。
您可以在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中监视文件夹活动
裸尾+1。我实际上使用的是BareTailPro,它使用基本搜索字符串或使用正则表达式的搜索字符串在尾部提供实时过滤。
为了使列表完整,这里是许多有用工具的GNU WIN32端口的链接(其中有tail)。 GNUWin32 CoreUtils
这是我编写的用于执行此操作的实用程序:
它使用FileSystemWatcher在本地文件夹或网络共享中查找日志文件中的更改(不必挂载,只需提供UNC路径),并将新内容附加到控制台。
在github上:https : //github.com/danbyrne84/multitail
http://www.danielbyrne.net/projects/multitail
希望这可以帮助
FileMon是一个免费的独立工具,可以检测各种文件访问。您可以过滤掉所有不需要的内容。它不会显示实际更改的数据。