Posted to tcl by thomas at Thu Nov 03 23:37:07 GMT 2011view raw

  1. set file /tmp/log.txt
  2. set pollIntervalInMs 1000
  3.  
  4. proc openLogFile { file pollIntervalInMs } {
  5. while { [catch {
  6. set fileHandler [open $file r]
  7. seek $fileHandler 0 end
  8. } errorMsg] } {
  9. puts "Cannot access $file"
  10. after $pollIntervalInMs
  11. }
  12. return $fileHandler
  13. }
  14.  
  15. set fileHandler [openLogFile $file $pollIntervalInMs]
  16.  
  17. set previousSize -1
  18. while { 1 } {
  19. after $pollIntervalInMs
  20. catch {
  21. set s [file size $file]
  22. if { $previousSize > $s } {
  23. puts "Truncated file !"
  24. close $fileHandler
  25. set fileHandler [openLogFile $file $pollIntervalInMs]
  26. set previousSize -1
  27. }
  28. set previousSize $s
  29. while { [gets $fileHandler line] >= 0 } {
  30. puts ->$line
  31. }
  32. }
  33. }
  34. close $fileHandler