Tenho uma aplicação que funciona como um serviço e roda em back ground.
Gostaria de fazer um log de algumas chamadas que faco nesta aplicação.
Estava pensando em utilizar o FileWriter, para gerar um arquivo.
FileWriter(String fileName,
boolean append)
A dúvida é a seguinte: Se este arquivo estiver com 10MB por exemplo, quando eu criar o objeto, o java vai ler este arquivo até chegar no final e consumir tempo ou irá somente gravar no final do arquivo a string que eu passar?
Quanto ao log, use o Log4J - não reinvente a roda. O Log4J tem umas coisas interessantes, como:
Você pode limitar o tamanho do arquivo de log (RollingFileAppender) - para não estourar o disco - mas de forma que sempre você tem a informação mais atualizada - deleta os logs antigos;
Você pode mostrar em cada linha o nome da classe, do método e a linha do arquivo onde foi chamada a função de log;
Você pode ligar o log só para algumas classes, ou packages;
e por aí vai.
Se você não pode usar o Log4J (sabe como é que é, às vezes o seu cliente não deixa, porque não pode usar nada opensource, ou então não está homologado, ou então porque ele não gosta mesmo…) então não se preocupe com o modo Append = true. Ele só abre o arquivo e já vai direto para o fim dele; não o relê - ou seja, não deve acarretar grandes problemas de desempenho. O que ocorre fisicamente:
O Java chama a API do sistema operacional para abrir o arquivo em modo append (quando você dá um “new FileWriter()”)
O Java chama a API para escrever X bytes (quando você usa “write”)
O sistema operacional vai até o último bloco do arquivo (depende do tamanho do cluster), lê-o, posiciona o ponteiro de arquivos na última posição do arquivo (que está dentro do bloco, se o ponteiro não for múltiplo do tamanho do cluster), copia os seus bytes para o buffer de gravação, e se for o caso (aí depende de um monte de coisas), grava os bytes do buffer de volta para o cluster, e se for o caso (depende de mais coisas ainda) o cluster é gravado no disco.
tiagops
Valeu, vou considerar a ideia de utilizar o Log4J !