Jump to content

dev botao

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


Go to solution Solved by EMBarbosa,
  • Este tópico foi criado há 560 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

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

Posted (edited)
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

 

Edited by LogProgramador
  • Fundadores
Posted
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.

Posted (edited)
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.

Edited by LogProgramador
Add info
  • Consultores
Posted
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.

Posted
22 minutos atrás, antonio.carlos disse:

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

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

obrigado.

  • Consultores
Posted
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.. 

Posted

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?

  • Consultores
Posted
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.. 

Posted
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

  • Consultores
Posted
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..
 

Posted
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.

 

  • Consultores
  • Solution
Posted
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.

 

  • Like 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.
  • 2 months later...
  • Consultores
Posted
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.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...