Jump to content
williamjda

[RESOLVIDO] Gravar String em arquivo de texto

Recommended Posts

williamjda

Amigos bom dia.

Tenho um projeto onde estou gravando um determinado evento da aplicação. Quando esse evento ocorre ele cria um arquivo de texto.

Nesse arquivo ele deve gravar os logs da atividade que foi executada naquele momento.

Funciona assim. Quando a aplicação detecta que um e-mail não foi enviado ele faz a contagem de quantos e-mail tem na fila. Se houve 2 emails, então ele envia os 2 emails.

E quando ele enviar o 1 e-mail. Ele cria um arquivo de texto e grava naquele momento no arquivo de texto o registro daquele e-mail. E sequencialmente no mesmo arquivo ele deve gravar o registro dos emails seguintes na fila.

Deveria ficar assim o log apos a gravação:

ID EMAIL: 1
Data: 22/05/2017
Para: email@email.com
mails não enviados: 2
E-mails re-enviados: 2
Tempo de execução: 00:00:00
-----------------------------------------------------
ID EMAIL: 2
Data: 22/05/2017
Para: email@email.com
mails não enviados: 2
E-mails re-enviados: 2
Tempo de execução: 00:00:00
-----------------------------------------------------

Porem consegui fazer ele gravar no mesmo log duas vezes o registro mas sempre grava apenas o ultimo ficando assim:

ID EMAIL: 2
Data: 22/05/2017
Para: email@email.com
mails não enviados: 2
E-mails re-enviados: 2
Tempo de execução: 00:00:00
-----------------------------------------------------
ID EMAIL: 2
Data: 22/05/2017
Para: email@email.com
mails não enviados: 2
E-mails re-enviados: 2
Tempo de execução: 00:00:00
-----------------------------------------------------

Esse é o código que estou usando para gravar. Lembrando que os dados são carregado através de um loop. 

 Dim data As Date = Now
                Dim valor As String = data.ToLongTimeString.Replace(":", "")
                Dim caminho As String = "C:\WASINFOSystem\Logs\Email_ReSend\" & valor & ".txt"

                textoLOGevents = "ID EMAIL: " & SELECT_Email_NotSend.idMail & Environment.NewLine _
                                    & "Data: " & Now.Date & Environment.NewLine _
                                    & "Para: " & SELECT_Email_NotSend.paraMail & Environment.NewLine _
                                    & "mails não enviados: " & lbl_qtdEmailNotSend.Text & Environment.NewLine _
                                    & "E-mails re-enviados: " & lbl_qtdEmailReEnviado.Text & Environment.NewLine _
                                    & "Tempo de execução: " & lbl_tempoExecucao.Text & "" & Environment.NewLine _
                                    & "-----------------------------------------------------"

                Using outputFile As New StreamWriter(caminho)
                    For Each row As String In textoLOGevents
                        outputFile.WriteLine(String.Format(textoLOGevents))
                    Next
                End Using

               

Alguém poderia me auxiliar em como fazer isso? Obrigado.

Edited by williamjda
Tópico resolvido

Share this post


Link to post
Share on other sites
ribeiro55

Olá williamjda,

Basta-te uma coisa muito simples: um "True" no construtor do StreamWriter, para que seja usado o overload que corresponde à assinatura:

https://msdn.microsoft.com/en-us/library/36b035cb(v=vs.110).aspx

Using outputFile As New StreamWriter(caminho, True)

No caso, o "append" está a indicar que o conteúdo que vais escrever deverá ser acrescentado depois do final do ficheiro.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. 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.