Estou depurando um aplicativo GWT e preciso imprimir algumas coisas no console para fins de teste. System.out.printlne GWT.lognão funcionam. Alguém tem alguma idéia?
Adicionar o registro GWT é realmente muito simples, tão simples quanto o exemplo de código a seguir. No entanto, é importante entender como funciona o registro e como configurá-lo corretamente, portanto, reserve um tempo para ler o restante deste documento.
# In your .gwt.xml file
<inherits name="com.google.gwt.logging.Logging"/>
# In your .java file
Logger logger = java.util.logging.Logger.getLogger("NameOfYourLogger");
logger.log(Level.SEVERE, "this message should get logged");
Acho que o comentário sobre GWT.log não está funcionando é o motivo pelo qual você foi rejeitado.
checketts de
11
Sim, GWT.log só funciona no DevMode, portanto, se você estiver compilando seu código com o compilador GWT, nunca verá nenhuma saída de GWT.log ().
Andrew Mackenzie
2
@Andrew Ooops. Você está realmente correto. Já faz tanto tempo que já me esqueci completamente :) GWT.log não funciona no modo web.
Strelok de
1
Isso pode não funcionar no logger do console do IE por causa desse bug . Eles dizem que está corrigido no GWT 2.6.
Brad Cupit de
2
Qual é a importação de classe Logger que você usou? Isso é realmente frustrante.
CrazySabbath,
49
Eu precisava fazer isso no contexto de um aplicativo GWT que foi implantado em um dispositivo / emulador Android via PhoneGap (e gwt-phonegap). Nem System.out.println () nem registro GWT como acima (com declaração de módulo) apareceram no logcat do Android, então eu recorri a um empacotador JSNI simples para console.log:
publicvoid onModuleLoad(){Logger logger =Logger.getLogger("Test1.java");
logger.log(Level.INFO,"ash: starting onModuleLoad (1)");// not in logcatSystem.out.println("ash: starting onModuleLoad (2)");// not in logcat
consoleLog("ash: starting onModuleLoad (3)");// This shows up...}nativevoid consoleLog(String message)/*-{
console.log( "me:" + message );
}-*/;
Para todos os usuários do Internet Explorer: para evitar exceções quando as ferramentas de desenvolvimento não estiverem abertas, é melhor encerrar a chamada em um bloco try catch ou usar uma das soluções declaradas aqui: stackoverflow.com/q/7742781/1845976
Eu esperava que isso funcionasse. Eu adicionei um GWT.log ("Fácil de encontrar") e então procurei em todo o projeto pela string "Fácil de encontrar". Foi apenas na minha fonte. Verifiquei os documentos do GWT. Diz que o "GWT.log" é apenas para o modo dev na janela dev. gwtproject.org/doc/latest/DevGuideLogging.html
ChrisCantrell
Não, GWT.log é apenas para modo DEV / SUPERDEV, mas não para uso em produção (será cortado pelo compilador do GWT).
Wladimir Schmidt
24
Para acessar o console do navegador, você pode fazer isso usando o nativo, de uma forma muito simples. Muito útil na depuração.
Se você adicionar um método nativo como o abaixo, você pode enviar uma string para ele de onde quiser e ele irá registrá-lo no console do navegador.
java.util.logging.Logger logger =Logger.getLogger(this.getClass().getSimpleName());nativevoid jsConsoleLog(String message)/*-{
try {
console.log(message);
} catch (e) {
}
}-*/;privatevoid log(finalString message){// Logs to Dev mode console only
GWT.log(message);// Logs to Dev mode and JavaScript console (requires configuration)this.logger.log(Level.FINEST, message);// Logs to JavaScript console only
jsConsoleLog(message);
Eu tive esse problema também. O log do GWT funciona, mas como é todo convertido para javascript, ele é impresso na saída do cliente, portanto, basta visualizar o console do seu navegador e eles estarão lá. No Google Chrome, clique no botão Personalizar de linha tripla no canto superior direito, clique em Ferramentas -> Ferramentas do desenvolvedor e o console aparecerá. Suas declarações desejadas estarão lá. Além disso, Ctrl + Shift + I é o atalho que o abre. Se você deseja imprimir para o servidor, acredito que os gerenciadores de log e outros estão em ordem?
O url da documentação na primeira resposta já dá a opção de configuração diferente para logar em locais diferentes. Esta estrutura que escrevi oferece uma API útil e permite que você escolha sua implementação de log do lado do servidor. Dê uma olhada:
https://code.google.com/p/gwt-usefull-logging/
Eu sugiro que você use o modo GWT Developer. Ele adiciona um pouco de sobrecarga devido à compilação automática e alocação de código no servidor de código, mas fica bem claro quando algumas exceções surgem no lado do cliente de seu aplicativo. Quer dizer, algumas vezes o console do Chrome (ou o firebug ou qualquer outra ferramenta embutida de depuração do navegador) não diz muito nessas situações, acredite, encontrar um NullPointerException é uma dor no pescoço quando você tenta descobrir o que está acontecendo alertando seu código.
Respostas:
Citando a documentação:
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
A maneira mais simples de habilitar o registro é:
fonte
Eu precisava fazer isso no contexto de um aplicativo GWT que foi implantado em um dispositivo / emulador Android via PhoneGap (e gwt-phonegap). Nem System.out.println () nem registro GWT como acima (com declaração de módulo) apareceram no logcat do Android, então eu recorri a um empacotador JSNI simples para console.log:
fonte
No GWT versão 2.6.0, o método GWT.log grava a mensagem no console do navegador, você não precisa escrever métodos nativos.
fonte
Para acessar o console do navegador, você pode fazer isso usando o nativo, de uma forma muito simples. Muito útil na depuração.
Se você adicionar um método nativo como o abaixo, você pode enviar uma string para ele de onde quiser e ele irá registrá-lo no console do navegador.
Para obter mais informações sobre como usar o nativo no GWT: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
fonte
Apenas resumindo as diferentes possibilidades mostradas nas respostas de mreppy e Strelok em um trecho. Também adicionei uma possível solução alternativa para as exceções do IE, conforme descrito aqui: Por que o JavaScript só funciona depois de abrir as ferramentas do desenvolvedor no IE uma vez?
fonte
Mais uma variação usando o console nativo ...
Adicione esta classe:
Em seguida, ative a depuração com ele em algum momento, como ao iniciar o aplicativo:
Em seguida, use-o assim:
fonte
Eu tive esse problema também. O log do GWT funciona, mas como é todo convertido para javascript, ele é impresso na saída do cliente, portanto, basta visualizar o console do seu navegador e eles estarão lá. No Google Chrome, clique no botão Personalizar de linha tripla no canto superior direito, clique em Ferramentas -> Ferramentas do desenvolvedor e o console aparecerá. Suas declarações desejadas estarão lá. Além disso, Ctrl + Shift + I é o atalho que o abre. Se você deseja imprimir para o servidor, acredito que os gerenciadores de log e outros estão em ordem?
fonte
O url da documentação na primeira resposta já dá a opção de configuração diferente para logar em locais diferentes. Esta estrutura que escrevi oferece uma API útil e permite que você escolha sua implementação de log do lado do servidor. Dê uma olhada: https://code.google.com/p/gwt-usefull-logging/
fonte
Eu sugiro que você use o modo GWT Developer. Ele adiciona um pouco de sobrecarga devido à compilação automática e alocação de código no servidor de código, mas fica bem claro quando algumas exceções surgem no lado do cliente de seu aplicativo. Quer dizer, algumas vezes o console do Chrome (ou o firebug ou qualquer outra ferramenta embutida de depuração do navegador) não diz muito nessas situações, acredite, encontrar um NullPointerException é uma dor no pescoço quando você tenta descobrir o que está acontecendo alertando seu código.
fonte
Para imprimir no console do navegador, estou usando algo assim:
EventLogger.java
fonte