Estou tentando criar um arquivo.log …
bom isso eu consigo, o problema que só funciona quando o projeto tem um método main.
No caso estou tentando fazer com que meu Web Service tenha um log e o mesmo não possui um método main e não cria o arquivo de log…
Se eu colocar um main dentro de qualquer classe o log funciona…
Poste o código do que você já fez para que possamos entender o problema e ajudá-lo.
R
rafael.kbeca
Obrigado por responder.
Segue o xml:
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/"debug="false"><!-- ================================= --><!-- Preserve messages in a local file --><!-- ================================= --><!-- A time/date based rolling appender --><appendername="FILE"class="org.apache.log4j.FileAppender"><paramname="File"value="logs/loggin.log"/><paramname="Append"value="true"/><layoutclass="org.apache.log4j.PatternLayout"><!-- The default pattern: Date Priority [Category] Message\n --><paramname="ConversionPattern"value="%d %-5p [%c] [%t] %m%n"/><!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n <paramname="ConversionPattern"value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>--></layout></appender><!-- Append messages to the console --><appendername="CONSOLE"class="org.apache.log4j.ConsoleAppender"><!-- <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> --><paramname="Target"value="System.out"/><paramname="Threshold"value="INFO"/><layoutclass="org.apache.log4j.PatternLayout"><!-- The default pattern: Date Priority [Category] Message\n --><paramname="ConversionPattern"value="%d{ABSOLUTE} %-5p [%c{1}] [%t] %m%n"/></layout></appender><!-- Limit the org.apache category to INFO as its DEBUG is verbose --><categoryname="com.webservice"><priorityvalue="DEBUG"/></category><!-- Limit org.jgroups category to INFO --><categoryname="org.jgroups"><priorityvalue="INFO"/></category><root><priorityvalue="INFO"/><appender-refref="FILE"/><appender-refref="CONSOLE"/></root></log4j:configuration>
Classe principal do webservice:
@WebService(endpointInterface="com.webservice.ISave",serviceName="Save")publicclassSaveimplementsISave{privatefinalLoggerlogger=Logger.getLogger(this.getClass());privateconnectionconnection=newconnection();privateSaveFilesaveFile=newSaveFile();privateSaveDTOsaveDto=newSaveDTO();@WebMethodpublicString[]saveFile(List<String[]>file){String[]returnRow=null;for(String[]row:file){logger.info("Enviando o pacote: "+row+" para a base de dados!");statisticDto=saveFile.loadFile(row);if(connection.saveDB(saveDto).equals(true)){returnRow=row;}}returnreturnRow;}}
wbdsjunior
E o import? A classe Logger da API do Java SE também tem o método info.
Não há nenhuma mensagem de erro no servidor? Tente gerar o arquivo em outro diretório, que o usuário que incia o servidor tenha permissão e veja o que acontece.
nebster
o que pode estar acontecendo é que voce deveria chamar o metodo de “log” em determinadas funções de seu webservice para ele “adicionar ao log” determinada ação antes que ele execulte, caso contrario fica como um metodo dependente do metodo main.
R
rafael.kbeca
Como faço para chamar o metodo sem usar o main?
E tem outro ponto que talvez seja importante.
Eu estava executando o webservice externamente, peguei ele e fui rodar no eclipse pra facilitar e retornou o seguinte erro:
Caused by: java.io.IOException: Not Found at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2071) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2022) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1947) at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) ... 9 more javax.xml.ws.soap.SOAPFaultException: Could not send Message.
fico no aguardo… abraço!
nebster
o metodo main faz a chamada inicial.
o webservice vai utlizar metodos externos.
vc tem q liberar para metodos externos aumentarem o log e não apenas o metodo main.
R
rafael.kbeca
nebster obrigado por responder…
Mas tu tem um link ou uma dica de como fazer isso?
Abraço!
nebster
cara,
eh simples ate demais…
vou colocar tudo da maneira mais simples o processo
Desta maneira se eu entendi a modificação vai ficar dentro do código (classe java). tipo abrir o arquivo inserir a linha salvar e fechar…
eu só sei e prefiro fazer em xml pra ficar externo facilitando a configuração…
E o erro IOException not found é esse o erro?
pq eu tiro o xml e o erro continua…
nebster
IOException not found = ExcessãoIO não encontrada
verifique certinho o codigo por completo e verifique depois a conexão do xml com a classe.
R
rafael.kbeca
Não tem conexão xml com a classe… o log4j pega automático…
Sobre o erro ja verifiquei…
gostaria de saber se alguém ja teve algum erro parecido para dar uma luz…
Abraço!
C
clonex8
cara, não precisa de main pra rolar o log… se vc está com o arquivo de configuração do log4j ok então é só confirmar se em category vc referencia o package correto da classe…
eu geralmente faço assim no arquivo properties do log4j
O engraçado que se eu criar um main em qualquer classe do webservice o log funciona…
e só ta funcionando externamente no eclipse fica dando aquele exception…
Abraço!
C
clonex8
rafael.kbeca:
clonex8 obrigado por responder…
Não deu tbm…
O engraçado que se eu criar um main em qualquer classe do webservice o log funciona…
e só ta funcionando externamente no eclipse fica dando aquele exception…
Abraço!
saquei… putz, complicado…
Outra, eu tava olhando a exception lançada e se não me engano a classe HttpConduit que lança esta IOExpection… da uma confirmada pra ver se é isto mesmo…
Este erro é quando o webserver diz que o serviço não foi implantado no local… Dá uma olhada se a porta definida no WSDL aponta pra um local válido e que o serviço está implantado… verifica também a porta HTTP do serviço SOAP, pega a url e add ?WSDL nela… ve se retorna um WSDL válido (o xml)
R
rafael.kbeca
O exception é lançada pela classe HttpConduit mas a ultima classe a entrar é a PhaseInterceptorChain
Alguma dica?
C
clonex8
vc chegou a confirmar se o wsdl é válido? o webservice está lançando IO e seu log parace que não loga… não seguei a olhar direito, pq to enroladão aqui… mas seu log tá escrevendo ERROR??? confirma ai primeiro o wsdl se está válido e pega pra logar error…
R
rafael.kbeca
clonex8,
O logger não aparece nada, nada, nada.
O wsdl esta certo pq quando eu faço o .war do webservice e coloco direto no deploy do jboss ( fora do eclipse .) chego até salvar no banco de dados.
mas mesmo assim o logger não funciona…
fiquei preocupado com esse exception agora.
R
rafael.kbeca
Boa noite…
Bom o exception resolvi… na verdade não sei como sai pondo try catch em tudo e parou de dar erro…
é eu sei “Mistério do alem”…
Mas o log4j ainda não esta funcionando …
Alguma dica?
R
rafael.kbeca
Só mais uma informação…
Eu consigo criar esse log dentro de qualquer outra pasta c:/teste menos dentro do projeto…