none
O arquivo já está sendo usado RRS feed

  • Discussão Geral

  • Estou tentando realizar a seguinte rotina mas gera um erro que eu não consigo resolver...

    Public Sub insercao()
            If IO.File.Exists(caminho & "\log.txt") Then
                fluxoTexto = New IO.StreamWriter(caminho & "\log.txt", True)
                fluxoTexto.WriteLine("(" & data & " - " & hora & ") - Ocorreu uma nova inserção")
                fluxoTexto.Close()
            Else
                File.Create(caminho & "\log.txt")
                If IO.File.Exists(caminho & "\log.txt") Then
                fluxoTexto = New IO.StreamWriter(caminho & "\log.txt", True)
                fluxoTexto.WriteLine("(" & data & " - " & hora & ") - Ocorreu uma nova inserção")
                fluxoTexto.Close()
                else
                Throw New Exception("Impossivel criar historico do sistema, Reinicie o sistema !")
                End If
                End if
        End Sub

    Agradeço desde já

    sábado, 1 de junho de 2013 01:23

Todas as Respostas

  • Boa noite amigo!

    Eu não testei seu código para saber onde está o erro. Mas como vc quer escrever um log em arquivo txt, vou postar a função que criei para fazer isso. O arquivo se não existir é criado, se existir acrescenta o log no final dele.

    Function EscreveLog(ByVal sMsg As String, ByVal sEx As String, ByVal sNomeLog As String)
            Dim sCaminhoLog = System.Configuration.ConfigurationManager.AppSettings("CaminhoLog")
            Dim EscreveArquivo As StreamWriter = New StreamWriter(sCaminhoLog & "\" & sNomeLog, True)
            EscreveArquivo.WriteLine("")
            EscreveArquivo.WriteLine("*****************************************************************************")
            EscreveArquivo.WriteLine(CDate(Date.Today.ToString) & " - " & Now.TimeOfDay.ToString.Substring(0, 8) & " - Erro Detectado!")
            EscreveArquivo.WriteLine(sMsg)
            EscreveArquivo.WriteLine("Erro: " & sEx.ToString)
            EscreveArquivo.WriteLine("*****************************************************************************")
            EscreveArquivo.Close()
            Return Nothing
        End Function

    A chamada função é assim:

    EscreveLog("Erro no arquivo: " & sNomeArquivo, ex.Message, sNomeLog)

    Como eu uso dentro de uma estrutura try, o ex.message já me da o tratamento do erro. Mas se vc não quiser usar dentro de um try, vc precisa primeiro passar uma mensagem, que no caso acima é o nome do arquivo xml com problema, o segundo parâmetro será o erro propriamente dito ou um texto que vc queira por alí para ser o erro e o ultimo parâmetro o nome do arquivo de log. No meu caso, cada form meu tem uma constante que uso para armazenar o nome do log, assim não fico repetindo o nome várias vezes.

    Veja se isso te ajuda.

    Att.

    Giovani

    sábado, 1 de junho de 2013 01:50
  • Não resolveu muito meu problema, mas tá tudo bem, me deu outra ideia. Cara já que sua função não retorna valor ela pode ser uma sub rotina :)
    sábado, 1 de junho de 2013 02:45
  • É assim que eu uso ela. Uma subrotina em um módulo de controle do sistema.

    Att.

    Giovani

    sábado, 1 de junho de 2013 03:18
  • Disse que esta assim

    Function EscreveLog(ByVal sMsg As String, ByVal sEx As String, ByVal sNomeLog As String)
    
    return nothing
    
    end function

    poderia estar assim

    public sub EscreveLog(ByVal sMsg As String, ByVal sEx As String, ByVal sNomeLog As String)
    
    end sub

    sábado, 1 de junho de 2013 20:31