LOG
Acho que assim vai...
Public Function Adicionar() As Boolean
If Me.Existe(True) = True Then Return False
Using Banco As New Banco
Try Banco.AddToBairro(Me)
Banco.Savechanges()
Return True
Catch ex As Exception
gravar(ex)
Throw New Exception([Ô]Ocorreu um erro ao gravar o bairro[Ô], ex)
Return False
End Try
End Using
End Function
Esta dando erro no mesmo lugar ainda
Ja fiquei até perdido aqui... rsrs Agora o erro tá onde mesmo?
Bom eu tenho uma função simples para gravar log vê se atende você:
[ô]VARIVAVEIS ARQUIVO TEXTO
Public oEscrever As System.IO.StreamWriter
Public fluxoTexto As IO.StreamWriter
Public strNomeArquivo As String = [Ô][Ô]
[ô]GRAVA LOG ERRO
Public Function fncGravaLog(strFuncao As String, strLogErro As String)
Try
[ô]VERIFICA SE O ARQUIVO EXISTE (LOG LOCAL)
If IO.File.Exists(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô]) = True Then
IO.File.Delete(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô])
End If
[ô]MONTA O CABECALHO DO TXT
fluxoTexto = New IO.StreamWriter(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô], True)
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]LOG ERRO[Ô])
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]ESTAÇÃO:[Ô] & strNomeEstacaoUsuario)
fluxoTexto.WriteLine([Ô]USUÃRIO:[Ô] & strNomeUsuario)
fluxoTexto.WriteLine([Ô]FUNÇÃO:[Ô] & strFuncao)
fluxoTexto.WriteLine([Ô]ERRO:[Ô] & UCase(strLogErro))
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.Close()
Catch ex As Exception
End
End Try
Dentro das outras funções você coloca assim no [Ô]Catch ex As Exception[Ô]
fncGravaLog([Ô]FNCNOMEFUNCAO[Ô], ex.Message.ToString)
[ô]VARIVAVEIS ARQUIVO TEXTO
Public oEscrever As System.IO.StreamWriter
Public fluxoTexto As IO.StreamWriter
Public strNomeArquivo As String = [Ô][Ô]
[ô]GRAVA LOG ERRO
Public Function fncGravaLog(strFuncao As String, strLogErro As String)
Try
[ô]VERIFICA SE O ARQUIVO EXISTE (LOG LOCAL)
If IO.File.Exists(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô]) = True Then
IO.File.Delete(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô])
End If
[ô]MONTA O CABECALHO DO TXT
fluxoTexto = New IO.StreamWriter(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô], True)
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]LOG ERRO[Ô])
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]ESTAÇÃO:[Ô] & strNomeEstacaoUsuario)
fluxoTexto.WriteLine([Ô]USUÃRIO:[Ô] & strNomeUsuario)
fluxoTexto.WriteLine([Ô]FUNÇÃO:[Ô] & strFuncao)
fluxoTexto.WriteLine([Ô]ERRO:[Ô] & UCase(strLogErro))
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.Close()
Catch ex As Exception
End
End Try
Dentro das outras funções você coloca assim no [Ô]Catch ex As Exception[Ô]
fncGravaLog([Ô]FNCNOMEFUNCAO[Ô], ex.Message.ToString)
Nao esta faltando alguma coisa ai ?
esta dando erro
esta dando erro
como faço a chamada para gerar o log com este código
Public Sub gravar(ByVal ex As Exception)
Dim StackTrace1 As String = [Ô][Ô]
Dim StackTrace2 As String = [Ô][Ô]
Dim StackTrace3 As String = [Ô][Ô]
Dim arquivo As String = [Ô][Ô]
String.Format([Ô]{0}\Logs|{1}.txt[Ô], Application.StartupPath.ToString, FormatDateTime(Date.Today, DateFormat.ShortDate).Replace([Ô]/[Ô], [Ô]/[Ô]).ToString)
If Not Directory.Exists(Application.StartupPath & [Ô]\Logs\[Ô]) Then
Directory.CreateDirectory(Application.StartupPath & [Ô]\Logs\[Ô])
Using fs As FileStream = New FileStream(arquivo, FileMode.OpenOrCreate, FileAccess.ReadWrite)
Dim s As StreamWriter = New StreamWriter(fs)
s.Close()
End Using
Using File As FileStream = New FileStream(arquivo, FileMode.Append, FileAccess.Write)
Using sw As StreamWriter = New StreamWriter(File)
sw.Write([Ô]Data/hora:[Ô] & DateTime.Now.ToString() & vbCrLf)
sw.Write([Ô][Ô] & vbCrLf)
sw.Write([Ô]Mensagem: [Ô] & ex.Message & vbCrLf)
sw.Write([Ô]Tipo:[Ô] & ex.GetType.ToString & vbCrLf)
sw.Write([Ô]StrackTrace:[Ô] & ex.StackTrace & vbCrLf)
sw.Write([Ô]==============================================================[Ô] & _
[Ô]==============================================================[Ô] & _
[Ô]==============================================================[Ô] & vbCrLf)
End Using
End Using
End If
End Sub
Public Sub gravar(ByVal ex As Exception)
Dim StackTrace1 As String = [Ô][Ô]
Dim StackTrace2 As String = [Ô][Ô]
Dim StackTrace3 As String = [Ô][Ô]
Dim arquivo As String = [Ô][Ô]
String.Format([Ô]{0}\Logs|{1}.txt[Ô], Application.StartupPath.ToString, FormatDateTime(Date.Today, DateFormat.ShortDate).Replace([Ô]/[Ô], [Ô]/[Ô]).ToString)
If Not Directory.Exists(Application.StartupPath & [Ô]\Logs\[Ô]) Then
Directory.CreateDirectory(Application.StartupPath & [Ô]\Logs\[Ô])
Using fs As FileStream = New FileStream(arquivo, FileMode.OpenOrCreate, FileAccess.ReadWrite)
Dim s As StreamWriter = New StreamWriter(fs)
s.Close()
End Using
Using File As FileStream = New FileStream(arquivo, FileMode.Append, FileAccess.Write)
Using sw As StreamWriter = New StreamWriter(File)
sw.Write([Ô]Data/hora:[Ô] & DateTime.Now.ToString() & vbCrLf)
sw.Write([Ô][Ô] & vbCrLf)
sw.Write([Ô]Mensagem: [Ô] & ex.Message & vbCrLf)
sw.Write([Ô]Tipo:[Ô] & ex.GetType.ToString & vbCrLf)
sw.Write([Ô]StrackTrace:[Ô] & ex.StackTrace & vbCrLf)
sw.Write([Ô]==============================================================[Ô] & _
[Ô]==============================================================[Ô] & _
[Ô]==============================================================[Ô] & vbCrLf)
End Using
End Using
End If
End Sub
Na minha função você tem que passar os parametros (NOMEDAFUNÇÃO,MENSAGEM DO ERRO)
Veja a chamada:
fncGravaLog([Ô]FNCNOMEFUNCAO[Ô], ex.Message.ToString)
O campo FNCNOMEFUNCAO é o nome da função que gerou o erro você tem que digitar a função
O campo ex.Message.ToString - é mensagem gerada pelo VB do erro, por isso ela tem que ficar em um bloco [Ô]Catch ex As Exception[Ô]
Private function TESTE()
Try...
Seu código:
Catch ex As Exception
fncGravaLog([Ô]TESTE[Ô], ex.Message.ToString)
End function
Veja a chamada:
fncGravaLog([Ô]FNCNOMEFUNCAO[Ô], ex.Message.ToString)
O campo FNCNOMEFUNCAO é o nome da função que gerou o erro você tem que digitar a função
O campo ex.Message.ToString - é mensagem gerada pelo VB do erro, por isso ela tem que ficar em um bloco [Ô]Catch ex As Exception[Ô]
Private function TESTE()
Try...
Seu código:
Catch ex As Exception
fncGravaLog([Ô]TESTE[Ô], ex.Message.ToString)
End function
a sua ficaria mais o menos assim
Dim oEscrever As System.IO.StreamWriter
Dim fluxoTexto As IO.StreamWriter
Dim strNomeArquivo As String = [Ô][Ô]
Try
[ô]VERIFICA SE O ARQUIVO EXISTE (LOG LOCAL)
If IO.File.Exists(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô]) = True Then
IO.File.Delete(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô])
End If
[ô]MONTA O CABECALHO DO TXT
fluxoTexto = New IO.StreamWriter(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô], True)
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]LOG ERRO[Ô])
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]ESTAÇÃO:[Ô] & strNomeEstacaoUsuario)
fluxoTexto.WriteLine([Ô]USUÃRIO:[Ô] & strNomeUsuario)
fluxoTexto.WriteLine([Ô]FUNÇÃO:[Ô] & strFuncao)
fluxoTexto.WriteLine([Ô]ERRO:[Ô] & UCase(strLogErro))
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.Close()
Catch ex As Exception
fncGravaLog([Ô]FNCNOMEFUNCAO[Ô], ex.Message.ToString)
End Try
End Function
End Class
Dim oEscrever As System.IO.StreamWriter
Dim fluxoTexto As IO.StreamWriter
Dim strNomeArquivo As String = [Ô][Ô]
Try
[ô]VERIFICA SE O ARQUIVO EXISTE (LOG LOCAL)
If IO.File.Exists(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô]) = True Then
IO.File.Delete(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô])
End If
[ô]MONTA O CABECALHO DO TXT
fluxoTexto = New IO.StreamWriter(strDiretorioArmazenamento & [Ô]LOGS_ERRO\[Ô] & strNomeEstacaoUsuario & [Ô].txt[Ô], True)
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]LOG ERRO[Ô])
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.WriteLine([Ô]ESTAÇÃO:[Ô] & strNomeEstacaoUsuario)
fluxoTexto.WriteLine([Ô]USUÃRIO:[Ô] & strNomeUsuario)
fluxoTexto.WriteLine([Ô]FUNÇÃO:[Ô] & strFuncao)
fluxoTexto.WriteLine([Ô]ERRO:[Ô] & UCase(strLogErro))
fluxoTexto.WriteLine([Ô]==========================================================================================================================[Ô])
fluxoTexto.Close()
Catch ex As Exception
fncGravaLog([Ô]FNCNOMEFUNCAO[Ô], ex.Message.ToString)
End Try
End Function
End Class
Sinceramente acho que você está reinventando a roda ai, existem vários sistemas de log prontos e que podem facilmente ser adicionados nos sistemas, eu pessoalmente uso o NLog que faz tudo que eu preciso e posso desabilitar, habilitar ou mudar o nivel de log simplesmente mudando um arquivo de configuração, e não preciso nem reiniciar o programa para ele detectar a mudança de configuração.
Outra coisa, não fique pegando propriedades da exception para montar o log, use o exception.ToString(), ele inclui tudo que se precisa para identificar a exception, incluindo tipo de exception, mensagem, stack trace, e o que mais tiver disponÃvel, é a mesma informação mostrada naquelas janelas de erro não tratados do .Net
Outra coisa, não fique pegando propriedades da exception para montar o log, use o exception.ToString(), ele inclui tudo que se precisa para identificar a exception, incluindo tipo de exception, mensagem, stack trace, e o que mais tiver disponÃvel, é a mesma informação mostrada naquelas janelas de erro não tratados do .Net
como funciona entao esse Nlog
Tópico encerrado , respostas não são mais permitidas