Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Seria possível gerar um arquivo de log?

Prezados colegas, desejo levantar um segundo questionamento referente ao Watcher.

Supondo que eu trabalhe com ele todos os dias, é possível que ele gere um log num arquivo texto?

Por exemplo, seguindo o mesmo exemplo da aula, onde ele fica de olho nas alterações dos arquivos JS e CSS, teria como ele registrar algo como "Arquivo alterado no horário hh:mm:ss"? Ou então guardar um TXT do jeito que aparece no console? A idéia seria gerar 1 arquivo por dia.

6 respostas

Oi

Tem, mas vc precisa interagir com o sistemas de arquivo. Crie uma task qualquer que grave no file system e a chame pelo watch. Vai ter que estudar api do Node para aprender a criar arquivos. Não tem jeito.

solução!

Segue um gruntfile que interage com o sistema de arquivo

https://gist.github.com/chrisirhc/4698776

Obrigado pela dica!

Pretendo em breve estudar o curso do Node!

Fiz o teste e funcionou!

Tive algumas dificuldades, vou compartilhar o que eu fiz, assim se outra pessoa tiver a mesma necessidade fica mais fácil de fazer:

1 - Copiei e colei a função dentro do Gruntfile.js 2 - Registrei a tarefa mas tive uma mensagem de erro referente ao "filestream" que eu resolvi da seguinte forma:

var fs = require('fs');
var nome_arquivo = 'minha_pasta/meuarquivo.txt';
grunt.registerTask('geralog', gruntLogToFile(grunt, nome_arquivo));

Eu tive erro nas linha que tem o "if (logFileStream._queue.lenght) {" não gerava o arquivo porque falava que o "length" não existia, eu tirei e funcionou. O arquivo é gerado de forma incremental, ou seja, a cada execução ele vai acrescentando os dados.

Porem gerou um maldito erro de "str.replace" is not a function. Ou seja, ele gera o arquivo e para por causa do warning.

Como não estava muito inspirado, eu fiz algo que eu aprendi com o saudoso mestre Obi Wan. Eu decidi confiar em meus instintos... e usar a força. O começo da função ficou assim:

function gruntLogToFile(grunt, logFilePath) {
    grunt.config.set('usetheforce_set', true);
    grunt.option( 'force', true ); 

    (resto do código omitido)

Apesar do warning no console ele não trava mais.

Agora você foi além de ser ninja, deu uma de cangaceiro. Excelente!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software