NLog에서 만든 파일에 로그를 쓰는 응용 프로그램이 있습니다. 그리고 Log Viewer라는 또 다른 응용 프로그램이 있습니다. 위에서 언급 한 로그 파일을 열고 읽을 수 있습니다. 그러나 여기에는 약간의 문제가 있습니다. 로그 뷰어가 로그 파일을 읽는 동안 첫 번째 응용 프로그램에서 로그 파일을 쓰고 있지만 일부 로그 라인은 로그 뷰어에서 볼 수 없습니다. 예를 들어 첫 번째 응용 프로그램이 매 밀리 초 단위로 로그를 기록하면 로그 뷰어에서 새 로그 행을 추적 할 수없고 그 중 일부를 누락 할 수 있습니다. 새로운 로그 라인을 추적 할 수있는 온라인 로그 뷰어가 필요합니다. 모든 메소드 호출시 파일의 모든 텍스트를 읽지 않으려 고합니다. 새로운 로그 라인을 읽어야합니다.NLog에서 만든 로그 파일을 읽고 동시에 쓰십시오.
답변
로그 라인이 새로운 것을 알 수있는 유일한 방법은 파일의 어느 위치에서 마지막인지 아는 것입니다 읽기 (예 : "int lastposition = 0;" ) 파일 끝까지 읽어야합니다. "파일 끝"의 위치는 파일 길이와 같습니다. 파일 블록을 읽었을 때 뷰어에서 읽은 것을 보여주고 변수 위치에 마지막 위치를 저장합니다. 다음에 시작해야하는 곳에서 뷰어가 읽는 중입니다.
뷰어가 파일을 열 수없는 경우 ... 다른 이야기.
어떤 코드가 실제로 appericated 것입니까? 이것은 일반적인 문제이며 귀하의 솔루션은 저를 좋아합니다. – rahularyansharma
두 응용 프로그램이 동일한 로그를 공유하면 문제가 발생할 수 있습니다. 아마도 가장 쉬운 해결책은 뷰어가 원본 로그 파일을 복사하여 자신의 전용 복사본임을 확인하는 것입니다. 때때로 실제 로그 파일에 업데이트가 있는지 확인하고 그에 따라 새 복사본을 만들 수 있습니다.
동일한 파일에 액세스하면 잠금이 필요하며 파일을 쓸 수 없으면 (차단, 로그 항목 손실 또는 예외 생성) 응용 프로그램에 문제가 발생할 위험이 있습니다.
최상의 솔루션은 데이터베이스에 대한 NLog 대상을 설정하는 것입니다. 마지막으로 업데이트 된 행을 추적하는 것이 파일 위치를 추적하는 것보다 쉽고 안전합니다. 파일 활성 로그 파일을 읽고 쓰는 것을 모두 공유하지 않는 것이 좋습니다.
- 1. VB.NET을 사용하여 동시에 텍스트 파일을 읽고 쓰십시오.
- 2. android에서 NDK로 파일을 동시에 읽고 쓰십시오.
- 3. JAVA : 함께 파일을 읽고 쓰십시오.
- 4. 스레드 당 로그 파일을 쓰십시오.
- 5. PHP에서 dat 파일을 읽고 쓰십시오.
- 6. 동일한 파일을 읽고 쓰십시오. C#
- 7. NLog에서 로그 파일을 덮어 쓰게하는 방법
- 8. vb6 win7에서 텍스트 파일을 읽고 쓰십시오.
- 9. 파일의 내용을 읽고 쓰십시오.
- 10. TinyMCE에서 PHP로 리치 텍스트 파일을 읽고 쓰십시오.
- 11. phpleague flysystem 서버의 대용량 파일을 읽고 쓰십시오.
- 12. Nokogiri를 사용하여 xml 파일을 읽고 쓰십시오.
- 13. vb.net 리소스 내의 텍스트 파일을 읽고 쓰십시오.
- 14. 크롬을 사용하여 로컬로 텍스트 파일을 읽고 쓰십시오.
- 15. C++/Qt로 RTF 파일을 읽고 쓰십시오.
- 16. Silverlight - DataGrid를 사용하여 XML 파일을 읽고 쓰십시오.
- 17. SD 카드에서 flv 파일을 읽고 쓰십시오.
- 18. 자바로 이미지를 읽고 쓰십시오.
- 19. 안드로이드에서 SDCard로 이미지를 읽고 쓰십시오.
- 20. 동일한 파일에서 다른 프로세스로 읽고 쓰십시오.
- 21. NLog에서 런타임 중에 로그 파일 추가/제거
- 22. 동시에 읽고 쓰는 자바
- 23. Silverlight로 EXIF 데이터를 읽고 쓰십시오.
- 24. php URL로 이미지를 읽고 쓰십시오.
- 25. 객체 스트림을 통해 읽고 쓰십시오.
- 26. 테이블을 텍스트 파일로 읽고 쓰십시오.
- 27. 여러 로그 파일을 동시에 모니터링합니다.
- 28. 구성 파일을 읽고 로그 파일을 만듭니다.
- 29. Java로 파일에 다중 바이트 []를 읽고 쓰십시오.
- 30. 쉘 API를 사용하여 쉘 네임 스페이스 확장으로 파일을 읽고 쓰십시오.
파일을 잠 가야합니다. 읽고 쓰기 전에 글쓰기를 끝내십시오. –
또는 .net 4.0에서 도입 된'System.Collections.Concurrent.BlockingCollection'를 사용하여 두 작업을 모두 비동기 적으로 수행 할 수 있습니다. –