Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, to precisando ler um arquivo de log diariamente em ASP usando FSO, mas como o log tem mais de 800MB, ficaria complicado e lento alem de comer toda IO do servidor para fazer isso
Eu preciso apenas ler as ultimas 50 linhas do LOG, então não seria interessante ler do inicio ao fim do log.
Teria como ao invés de ler o LOG como While atendofstream usar um modo de ler do final até o começo?
Abraços
Eu sei ler, gravar, editar um arquivo.
O problema mesmo estaria em ler ele de baixo para cima.
Não posso ler ele dentro de uma array para tratar por lbound() ubound() depois porque imagine jogar 800MB de Log em uma variavel.
Daria no mesmo que ler ele todo...o uso de I/O iria ser igual.
O meu problema mesmo é desempenho
Que eu tenha conhecimento, não há uma maneira de fazer isto "direto", mas existem algumas funções prontas que podem ajudar você a trilhar seus caminhos.
Function Tail(fil, nlines)
'Returns last nlines lines from file fil
Const ForReading = 1, TristateUseDefault = -2, _
DoNotCreateFile = False
With CreateObject("Scripting.FileSystemObject")._
OpenTextFile(fil, ForReading, _
False, TristateUseDefault)
.Readall
LinesToSkip = .Line - nlines: .Close
End With
With CreateObject("Scripting.FileSystemObject")._
OpenTextFile(fil, ForReading, _
False, TristateUseDefault)
If LinesToSkip <0 Then LinesToSkip = 0
For i = 1 To LinesToSkip: .Skipline: Next
For i = 1 To nlines
If Not .AtEndOfStream Then
Tail = Tail & .ReadLine
End If
If i < nlines Then Tail = Tail & vbCrLf
Next
.Close
End WithVou dar uma olhada nesta função assim que chegar em casa.
PARECE que ela tem um sistema de leitura mais definido para pegar as ultimas linhas do Log
ae cara, le o meu tutorial aqui e ve se te ajuda:
http://forum.imasters.com.br/index.php?showtopic=331459
abraços!