Inserindo registros em um LOG
01/10/2013 21:37
0
Pessoal,


estudei muito porém não consigo entender como gerar log no Grails!

Gostaria de cada ver que cadastrar um usuário gerar um log ("USUÁRIO XXX CADASTRADO POR 'FULANO DE TAL'", por exemplo) em um arquivo TXT fora do stacktrace.

Já li muito só que não consigo entender esse negócio de appenders {
appender ... }


POr favor alguém poderia me mostrar como na aplicação eu posso invocar a geração de um LOG, inserindo informações dinâmicas em um LOG a cada criação de usuário?

Tags: log, logging


0
Exatamente. Segue um exemplo prático e funcional:

Config.groovy

appenders {
rollingFile name: "whatever",
maxFileSize: 1024,
file: "/var/log/m2mweb.log", //caminho do arquivo
appendToFile: false,
rollingStyle: 'Size',
maxSizeRollBackups: 10,
datePattern: 'dd/MM/yyyy - HH:mm:ss',
layout: pattern( conversionPattern: '"%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"' )
console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')

}

trace whatever: 'org.hibernate.SQL'


0
Obrigado por responder Carlos,

e como eu faço para invocar a escrita deste log durante a execução do programa?

Por exemplo, adicionei um usuário:

xxxxxxController{
...
log.qualComando()
...
}
03/10/2013 20:09


1
Quando você utilizar, por exemplo, o log.trace() ele vai salvar no arquivo. Você precisa apenas inserir quais logs você quer que sejam salvos utilizando o comando:


debug wharever 'grails.app.services' //Apenas para services
error wharever 'grails.app' //Todas as camadas da aplicação


Como pôde perceber, você não criou um método novo de log, apenas apontou onde eles serão salvos.

Espero que tenha ajudade e boa sorte com o projeto.


1
Olá Rodrigo,

Em Controllers e Services você pode usar log.* direto por exemplo:
log.error("ocorreu um erro"))


Para outras classes use:
package org.other

import org.apache.commons.logging.LogFactory

class MyClass {
private static final log = LogFactory.getLog(this)

}
04/10/2013 10:12


0
obrigado pessoal!
06/10/2013 16:33


0
Ao invés do "Java style"
private static final log = LogFactory.getLog(this)


pode anotar as classes Groovy nas quais quiser usar Log.

import groovy.util.logging.Log4j

@Log4j
class MyClass {
//
}


ou, se preferir

import groovy.util.logging.Log

@Log
class MyClass {
//
}


0
Esqueci de completar dizendo que com essa anotação, um objeto "log" é injetado na tua classe. Inclusive o GGTS entende isso e você tem ajuda com os métodos "debug()", "error()", etc



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto