Ir para conteúdo
  • Cadastre-se

dev botao

Aplicação fecha após x minutos de enviar nota fiscal e não grava log


Ver Solução Respondido por EMBarbosa,
  • Este tópico foi criado há 265 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá,

estou implementando a integração com nota fiscal:

  • Aplicação API C#
  • ACBr em memory
  • Servidor linux OpenSuse

A nota fiscal é enviada, gera o xml e imprime corretamente.

O problema acontece alguns minutos (1-3) após esse envio, sem fazer nada na api, sozinho.

IMG-20230504-WA0046.png

 

A biblioteca também não grava log, tenho a seguinte configuração:
image.png

Essa configuração aponta para: ACBrNFe log path "/home/logsistemas/domynus/test-api/logs":

  • Tenho permissão de escrita nesse diretório conforme um teste sugerido pelo Daniel (Info cotidiano): ls > /home/logsistemas/domynus/test-api/logs/teste.txt
  • É o mesmo diretório de salvamento dos logs da api

 

Obrigado

Estou usando em multithread

Link para o comentário
Compartilhar em outros sites

Em 05/05/2023 at 12:18, Daniel Simoes disse:

Na verdade precisamos do arquivo .INI, que a ACBrLib gera... e dele que a Lib lê as configurações

Eu uso em memory, MT. Esse .ini não é gerado na máquina até onde eu sei.

Se precisar eu chamo a rotina GravarIni e pego o arquivo

 

Editado por LogProgramador
Link para o comentário
Compartilhar em outros sites

  • Fundadores
7 horas atrás, LogProgramador disse:

Se precisar eu chamo a rotina GravarIni e pego o arquivo

Ou configure o log da Lib, para um nível Alto... pois nesse caso, as configurações enviadas, ficam gravadas no Log

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

17 horas atrás, Daniel Simoes disse:

Ou configure o log da Lib, para um nível Alto... pois nesse caso, as configurações enviadas, ficam gravadas no Log

Então, não sei se sou eu que estou usando de forma errada o componente ou é algo nele, mas notei o seguinte:

  • Eu configuro um local para gravar o log, em nenhum cenário ele é gravado nesse local que eu configurei. Isso na minha máquina windows.
    • Há permissão para gravar nesse diretório, é o mesmo diretório de outros logs das aplicações.
  • Executei a aplicação com iisexprees e não gravou log
  • Executei a aplicação com console e gravou o log, no diretório da aplicação e não no diretório configurado
  • No Linux OpenSuse ele é executado em console e não grava o log nem na pasta da aplicação
    • Também tem permissão de escrita no diretório, já fiz um teste solicitado pelo Daniel infocotidiano

Tentei gerar o arquivo ini com a rotina acbrNfe.ConfigGravar, mas o arquivo não foi gerado, o parãmetro deixei vazio, passei o nome do arquivo e também o path completo e em nenhum caso gerou.

Segue em anexo o arquivo log gerado numa emissão de nota fiscal com a aplicação sendo executada em console no windows. Lembrando que esse não é o cenário do post, isso ocorre no Linux Open Suse.

ACBrLibNFE-20230509.log

Está nível paranóico

---

Para ficar bem alinhado, segue como está toda a configuração e uso do meu acbr

  1. Configuração D.I do component
    image.png.25f02b76b1ab106f3063f56c3e76b5f6.png
     
  2. No serviço de envio o componente é injetado e configurado nessa classe de configuração
    ACBrNFeComponentConfig.cs
     
  3. Serviço de envio
    image.thumb.png.61ca02dad2c515279676c49cbcef1f1f.png
     
  4. A partir daí é apenas tratar o retorno do cstat.

Em nenhum momento eu uso o .ini, faço alguma chamada de ConfigValor ou nada pareceido, é tudo direto no componente. Menciono isso porque eu vi alguns relatos do discord de pessoas que usam em memory e fazem configurações usando ConfigValor.
Sobre o Inicializar o finalizar a lib, eu vi que o handle do acbr já faz isso. Bem, É dessa forma que uso.

Editado por LogProgramador
Add info
Link para o comentário
Compartilhar em outros sites

  • Consultores
2 horas atrás, LogProgramador disse:

Então, não sei se sou eu que estou usando de forma errada o componente ou é algo nele, mas notei o seguinte:

  • Eu configuro um local para gravar o log, em nenhum cenário ele é gravado nesse local que eu configurei. Isso na minha máquina windows.
    • Há permissão para gravar nesse diretório, é o mesmo diretório de outros logs das aplicações.
  • Executei a aplicação com iisexprees e não gravou log
  • Executei a aplicação com console e gravou o log, no diretório da aplicação e não no diretório configurado
  • No Linux OpenSuse ele é executado em console e não grava o log nem na pasta da aplicação
    • Também tem permissão de escrita no diretório, já fiz um teste solicitado pelo Daniel infocotidiano

Tentei gerar o arquivo ini com a rotina acbrNfe.ConfigGravar, mas o arquivo não foi gerado, o parãmetro deixei vazio, passei o nome do arquivo e também o path completo e em nenhum caso gerou.

Segue em anexo o arquivo log gerado numa emissão de nota fiscal com a aplicação sendo executada em console no windows. Lembrando que esse não é o cenário do post, isso ocorre no Linux Open Suse.

ACBrLibNFE-20230509.log 332.63 kB · 0 downloads

Está nível paranóico

---

Para ficar bem alinhado, segue como está toda a configuração e uso do meu acbr

  1. Configuração D.I do component
    image.png.25f02b76b1ab106f3063f56c3e76b5f6.png
     
  2. No serviço de envio o componente é injetado e configurado nessa classe de configuração
    ACBrNFeComponentConfig.cs
     
  3. Serviço de envio
    image.thumb.png.61ca02dad2c515279676c49cbcef1f1f.png
     
  4. A partir daí é apenas tratar o retorno do cstat.

Em nenhum momento eu uso o .ini, faço alguma chamada de ConfigValor ou nada pareceido, é tudo direto no componente. Menciono isso porque eu vi alguns relatos do discord de pessoas que usam em memory e fazem configurações usando ConfigValor.
Sobre o Inicializar o finalizar a lib, eu vi que o handle do acbr já faz isso. Bem, É dessa forma que uso.

@LogProgramador criamos uma task para analise do caso - #TK-273, logo daremos um retorno aqui no tópico.

Link para o comentário
Compartilhar em outros sites

  • Consultores
1 hora atrás, LogProgramador disse:

Ok, fico no aguardo. Estou pendente deste problema para dar continuidade liberação de nota fiscal na minha aplicação.

obrigado.

Consegue fazer algo deste modelo em sua aplicação ? Apenas para afins de teste ?
image.png

Pois ele pegar o path da sua aplicação e cria uma pasta Logs:
image.png

Veja o .ini:
image.png

Outro teste, tente informar um path com o caminho absoluto, exemplo:

acbrNfe.Config.Principal.LogPath = "C:\\temp";

Por mais que esteja usando em memory, tente fazer testes usando o arquivo ACBrLib.ini físico.. veja como fica o comportamento da sua aplicação.

Quanto ao problema de finalizar aplicação, precisamos dos logs para tentar entender o que pode esta ocorrendo.. primeira parte é resolvermos a geração do log na sua aplicação.. tente fazer os testes.. 

Link para o comentário
Compartilhar em outros sites

Fiz os testes

Application.StartupPath é biblioteca do windows forms, meu projeto é api.

Fiz algumas pesquisas de obter o path da aplicação e mas em todos não encontrei o log, e eles retornam praticamente o mesmo path que eu uso.

image.thumb.png.240ea57c0843f47e68273c20a98ad799.png

image.thumb.png.f05cd1ec3fec4938cddf29f1abce1f8c.png

Já tinha feito o teste com caminho absoluto e não tinha dado certo.

---

Estou tentando fazer teste com arquivo ini fisico, mas está dando erro ao criar o acbr.

'Attempted to read or write protected memory. This is often an indication that other memory is corrupt

Eu apenas removi o Memory da criação e chamei o acbrnfe.ConfigGravar() após fazer as devidas configurações. Precisa fazer algo a mais?

Link para o comentário
Compartilhar em outros sites

  • Consultores
18 horas atrás, LogProgramador disse:

Fiz os testes

Application.StartupPath é biblioteca do windows forms, meu projeto é api.

Fiz algumas pesquisas de obter o path da aplicação e mas em todos não encontrei o log, e eles retornam praticamente o mesmo path que eu uso.

image.thumb.png.240ea57c0843f47e68273c20a98ad799.png

image.thumb.png.f05cd1ec3fec4938cddf29f1abce1f8c.png

Já tinha feito o teste com caminho absoluto e não tinha dado certo.

---

Estou tentando fazer teste com arquivo ini fisico, mas está dando erro ao criar o acbr.

'Attempted to read or write protected memory. This is often an indication that other memory is corrupt

Eu apenas removi o Memory da criação e chamei o acbrnfe.ConfigGravar() após fazer as devidas configurações. Precisa fazer algo a mais?

Fiz alguns testes aqui com o exemplo ACBr.API, implementei gravação do log, veja:
2023-05-10 10-58-42.mkv

Log esta gravando, mesmo sendo em "Memory", veja se não salvou log em alguma pasta temporária em sua máquina.. 

Link para o comentário
Compartilhar em outros sites

28 minutos atrás, antonio.carlos disse:

Fiz alguns testes aqui com o exemplo ACBr.API, implementei gravação do log, veja:
2023-05-10 10-58-42.mkv

Log esta gravando, mesmo sendo em "Memory", veja se não salvou log em alguma pasta temporária em sua máquina.. 

Certo, mas perceba que você passa um diretório TempPath para o diretório do log

image.png.ca7084f5a884bd46afee24fb9aef1196.png

 

mas o log é gravado na pasta da aplicação

image.png.24c8820a971b1d3f17815bba78af757b.png

 

Não obedeceu a configuração.

O demo aqui gerou também, eu fiz tudo com base nele

Link para o comentário
Compartilhar em outros sites

  • Consultores
10 minutos atrás, LogProgramador disse:

Certo, mas perceba que você passa um diretório TempPath para o diretório do log

image.png.ca7084f5a884bd46afee24fb9aef1196.png

 

mas o log é gravado na pasta da aplicação

image.png.24c8820a971b1d3f17815bba78af757b.png

 

Não obedeceu a configuração.

O demo aqui gerou também, eu fiz tudo com base nele

Tudo bem, mas precisamos do log gravando no diretório ou não, para verificar o que esta registrando quando ocorre a queda da sua aplicação se é algum método que você chamou ou não.. hora que tivermos o seu log, vamos olhar os fontes do ACBrLib, fazer testes ver se tem alguma coisa que pode estar impedindo de salvar no path.. o que eu não dou uma certeza.. pois aplicação exemplo Windows Forms os logs estão sendo criado no diretório informado.. ACBrLib é a mesma utilizada no exemplo do Windows Forms e ACBr.API.
E como falei anteriormente, este exemplo ACBr.API é muito simples.. então ele pode não estar salvando no diretório.. umas da TK é sobre ajuste deste exemplo, mas não será feito neste momento.
Até então não temos relatos de outros colegas que utilizam o ACBrLib que tenha o mesmo problema que o seu, de não gravar o log e queda da aplicação..
 

Link para o comentário
Compartilhar em outros sites

4 horas atrás, antonio.carlos disse:

Tudo bem, mas precisamos do log gravando no diretório ou não, para verificar o que esta registrando quando ocorre a queda da sua aplicação se é algum método que você chamou ou não.. hora que tivermos o seu log, vamos olhar os fontes do ACBrLib, fazer testes ver se tem alguma coisa que pode estar impedindo de salvar no path.. o que eu não dou uma certeza.. pois aplicação exemplo Windows Forms os logs estão sendo criado no diretório informado.. ACBrLib é a mesma utilizada no exemplo do Windows Forms e ACBr.API.
E como falei anteriormente, este exemplo ACBr.API é muito simples.. então ele pode não estar salvando no diretório.. umas da TK é sobre ajuste deste exemplo, mas não será feito neste momento.
Até então não temos relatos de outros colegas que utilizam o ACBrLib que tenha o mesmo problema que o seu, de não gravar o log e queda da aplicação..
 

Entendo. Mas o que posso fazer se não grava? 

Eu mencionei que o demo.Api está gerando, mas só gera nesse cenário que você fez, se você rodar ele com IISExpress ele não gera também.
Provavelmente o que acontece com IISExpress acontece na API no openSuse que é onde cai a aplicação.

Eu dei um find no servidor opensuse procurando por arquivo de log do acbr e não achou nada:

 image.png.86a3939b29c2d7b24a8b392a440f94dd.png

Também peguei o demo.Api, removi o boleto e modifiquei a rota de impressão para imprimir um xml fixo numa string.
Mesmo resultado, não gravou log. Executei o find novamente e não achou nada.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution
Em 10/05/2023 at 17:01, LogProgramador disse:

No demo que eu coloquei no servidor linux, eu configurei para gerar log assim como você fez, a única diferença é que coloquei no diretório da aplicação

Bom dia.

Pode deixar que vamos analisar a questão dos logs não serem gerados na pasta configurada.

Em 10/05/2023 at 16:46, LogProgramador disse:

na API no openSuse que é onde cai a aplicação.

Esse é o problema maior. Não temos esse ambiente pra testar e avaliar a situação. Precisamos disso. Nesse caso, você pode:

1) montar uma VM e disponibilizar pra nós para conseguirmos reproduzir

2) procurar ajuda com pessoas que são especialistas em linux e no ambiente que você montou para obter mais informações sobre o motivo.

 

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • Consultores
5 horas atrás, simtechsistemas disse:

já faz muito tempo que postei este erro

Onde você postou?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.