실시간으로 텍스트 파일을 모니터링하는 방법
다소 닫힌 시스템에서 디버깅 목적으로 텍스트를 파일로 출력해야합니다.
파일의 변경 사항을 감지하고 실시간으로 출력하는 Windows (콘솔 기반 여부)에서 실행되는 도구를 아는 사람이 있습니까?
- Win32 용 Tail
- Apache Chainsaw - log4net 로그 와 함께 사용 되며 특정 형식의 파일이 필요할 수 있습니다.
저는 하나 이상의 작업을 수행하는 도구를 좋아합니다. Notepad ++는 훌륭한 메모장 대체품이며 훌륭하게 작동하는 Document Monitor 플러그인 (표준 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 을 사용 합니다. 무료이며 여러 파일을 추적하는 탭 및 구성 가능한 강조 표시와 같은 몇 가지 멋진 기능이 있습니다.
FileSystemWatcher는 잘 작동하지만 중복 이벤트 발생 ( Google의 첫 번째 링크) 에 대해 약간주의 해야하지만이를 염두에두면 훌륭한 결과를 얻을 수 있습니다.
Tail은 지금까지 가장 좋은 답변입니다.
Windows를 사용하지 않는다면 이미 tail이있을 것입니다.
Windows를 사용하는 경우 http://unxutils.sourceforge.net/ 에서 전체 Unix 명령 줄 도구를 얻을 수 있습니다 .-압축을 풀고 PATH에 넣으십시오.
그런 다음 로그 파일이있는 동일한 폴더의 명령 프롬프트에서이 작업을 수행하십시오.
tail -n 50 -f whatever.log
그러면 파일의 마지막 50 줄이 표시되고 파일이 업데이트되면 업데이트됩니다.
다음과 같이 grep과 tail을 결합하여 훌륭한 결과를 얻을 수 있습니다.
tail -n 50 -f whatever.log | grep 오류
"오류"가있는 줄만 제공합니다.
행운을 빕니다!
늦은 답변은 누군가에게 도움이 될 수 있지만 LOGEXPERT 는 Windows에 대한 흥미로운 꼬리 유틸리티 인 것 같습니다.
최근에 구축 한 구성 요소의 텍스트 파일을 모니터링하기 위해 FileSystemWatcher 를 사용했습니다 . 더 나은 옵션이있을 수 있지만 ( 제한된 연구 에서 아무것도 찾지 못했습니다 ) 트릭을 훌륭하게 수행하는 것 같습니다. :)
맙소사, 당신은 실제로 당신을 위해 모든 것을 할 수있는 도구를 찾고 있습니다 ..
운이 나쁘고 자신의 롤을 원한다면 글쎄요;)
Microsoft의 SMSTrace (현재 CMTrace라고하며 일부 Windows 버전의 시작 메뉴에서 직접 사용 가능)를 사용해보십시오.
다른 파일에 의해 쓰기 위해 잠긴 경우에도 실시간으로 모든 텍스트 파일의 업데이트를 모니터링하는 훌륭한 GUI 도구입니다.
.txt, .log 또는 .csv를 포함한 모든 파일을 모니터링 할 수있는 설명에 속지 마십시오.
잠긴 파일을 모니터링하는 기능은 매우 유용 하며이 유틸리티가 빛나는 이유 중 하나입니다.
가장 멋진 기능 중 하나는 선 채색입니다. "ERROR"라는 단어가 표시되면 줄이 빨간색이됩니다. "WARN"이라는 단어가 표시되면 줄이 노란색이됩니다. 이렇게하면 로그를 훨씬 쉽게 추적 할 수 있습니다.
스네이크 테일. 좋은 선택입니다. http://snakenest.com/snaketail/
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에서 폴더 활동 감시 링크를 따를 수도 있습니다.
답을 찾기위한 뻔뻔한 플러그이지만, 나는 log4net 파일을 보는 데 사용되는 Hacksaw 라는 무료 웹 기반 앱이 있습니다. 항상 브라우저를 새로 고칠 필요없이 거의 실시간으로 업데이트 할 수 있도록 자동 새로 고침 옵션을 추가했습니다.
예, 나는 Win32에 Tail과 Cygwin에 tail을 모두 사용했습니다. 나는 충돌없이 인터넷을 통해 효율적으로 파일을 추적 할 수 있기 때문에 Cygwin을 약간 선호하지만 둘 다 훌륭하다는 것을 알았습니다. (Tail for Win32가 어떤 경우에 충돌했습니다).
So basically, I would use tail on Cygwin and redirect the output to a file on my local machine. I would then have this file open in Vim and reload (:e) it when required.
+1 for BareTail. I actually use BareTailPro, which provides real-time filtering on the tail with basic search strings or search strings using regex.
To make the list complete here's a link to the GNU WIN32 ports of many useful tools (amongst them is tail). GNUWin32 CoreUtils
Surprised no one has mentioned Trace32 (or Trace64). These are great (free) Microsoft utilities that give a nice GUI and highlight any errors, etc. It also has filtering and sounds like exactly what you need.
Here's a utility I wrote to do just that:
It uses a FileSystemWatcher to look for changes in log files within local folders or network shares (don't have to be mounted, just provide the UNC path) and appends the new content to the console.
on github: https://github.com/danbyrne84/multitail
http://www.danielbyrne.net/projects/multitail
Hope this helps
FileMon is a free stand alone tool that can detect all kinds of file access. You can filter out any unwanted. It does not show you the data that has actually changed though.
I second "tail -f" in cygwin. I assume that Tail for Win32 will accomplish the same thing.
I did a tiny viewer by my own:
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
A command prompt way of doing it.
참고URL : https://stackoverflow.com/questions/18632/how-to-monitor-a-text-file-in-realtime
'development' 카테고리의 다른 글
EnableWebMvc 주석 의미 (0) | 2020.11.07 |
---|---|
C에서 32 비트 정수를 선언하는 방법 (0) | 2020.11.07 |
Git을 사용하여 저장소에서 일치하는 파일 이름을 검색 할 수 있습니까? (0) | 2020.11.06 |
비동기 메서드가 값을 반환하도록하는 방법은 무엇입니까? (0) | 2020.11.06 |
실용적인 스타일의 실용적인 용도는 무엇입니까? (0) | 2020.11.06 |