Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato
    Registrato dal
    Sep 2004
    Messaggi
    115

    Inserire i log di IIS dentro Access

    Salve, ho la necessità di caricare i dati di log dentro un DB per poi esaminarli.
    Però mi esce questo errore:

    Tipo di errore:
    ADODB.Recordset (0x800A0BB9)
    Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.

    POST Data:
    logFileName=G%3A%5CWINNT%5Csystem32%5CLogFiles%5CW 3SVC1%5Cex040907.log&submit1=Avanti

    Vi posto interamente i 2 files .asp così avete di fronte la situazione completa; con il primo file si estraggono e si selezionano i log da inviare al secondo file per poi essere inseriti nel DB (che ho chiamato logTable).

    ---------- Primo file ----------------

    <%@ Language="VBScript" %>

    <%
    Dim fs, folder
    Set fs = CreateObject("Scripting.FileSystemObject")

    ' selezionare la cartella contenente i logfiles
    Set folder = fs.GetSpecialFolder(SystemFolder)
    Set folder = folder.SubFolders.Item("LogFiles")
    Set folder = folder.SubFolders.Item("w3svc1")
    %>

    <html>
    <head><title>Gusto Piemonte - Selezione log da caricare</title></head>
    <body link="#ff4040" bgcolor="#ffffff">
    <SCRIPT Language="VBScript">
    <!--
    SUB CheckAll
    Dim cb
    For Each cb in document.loglist.elements
    If cb.name = "logFileName" Then
    cb.checked = document.loglist.allbox.checked
    End If
    Next
    END SUB
    -->
    </SCRIPT>
    <center>

    <H4>Seleziona i logs da caricare nel DB</H4>

    <FORM name="loglist" method="POST" action="02LoadLog.asp">
    <table width="600" border="1" bgcolor="white" cellpadding="4" cellspacing="0">
    <TR border="0" bgcolor="yellow" align="Left">
    <TH></TH>
    <TH>
    <table border="0" width="550" cellspacing="0">
    <tr>
    <td><Font face="Arial">Nome log (anno,mese,data)</td>
    </tr>
    </table>
    </TH>
    </TR>

    <%
    Dim fileList, logFile
    Set fileList = folder.Files
    For Each logFile in fileList
    %>

    <TR bgcolor = "White" align="Left" bordercolor="#cccccc">
    <TD WIDTH="1"><Font Size="2" Face="Arial" Color="Black">
    <input type="checkbox" name="logFileName" value="<%=logFile.Path%>">
    </TD>

    <TD>
    <Font Size="2" Face="Arial" Color="Black"><% =logFile.Name %>
    </TD>
    </TR>

    <%
    Set logFile = Nothing
    Next
    Set fileList = Nothing
    %>

    </table>

    <table width="600" border="0" bgcolor="white" cellpadding="4" cellspacing="0">
    <TR bgcolor="White" bordercolor="White">
    <td width="1" valign="top">
    <input name="allbox" type="checkbox" value="Check All" onClick="CheckAll">
    </td>
    <td>Seleziona tutti i files</td>
    </tr>
    </TABLE>

    <INPUT type="submit" value="Avanti" name="submit1">
    </form>

    </center>
    </body>
    </html>
    <%
    Set fs = Nothing
    Set folder = Nothing
    %>

    ------------ secondo file -------------------

    <%@ Language=VBScript %>



    <%
    Response.Buffer = TRUE
    %>

    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <title>Gusto Piemonte - Carica logs</title>
    </head>

    <body link="#ff4040" bgcolor="#ffffff">
    <center>

    <table width="650" border="0" bgcolor="#ffffff" cellspacing="0" cellpadding="0">
    <tr>
    <td>
    <H4>I logd sono stati caricati nel DB!</H4>
    </td>
    </tr>

    <tr>
    <td colspan="2">
    <hr width="640">
    </td>
    </tr>
    </table>

    </center>
    </BODY>
    </HTML>

    <%
    Dim Con, rs, fs, file, fileName, fileString, fieldNameArray

    Set Con = Server.CreateObject( "ADODB.Connection" )
    Con.Open "adminDSN"
    Set rs = Server.CreateObject( "ADODB.Recordset" )
    rs.Open "logTable", Con, adOpenDynamic, adLockOptimistic
    Set fs = CreateObject("Scripting.FileSystemObject")

    For Each fileName in Request.Form("logFileName")
    Set file = fs.OpenTextFile(fileName, ForReading)

    While file.AtEndOfStream <> True
    fileString = file.ReadLine
    If Left(fileString, 8) = "#Fields:" Then
    fieldNameArray = Split(Mid(fileString, 10))
    Elseif Left(fileString, 1) <> "#" Then
    rs.AddNew fieldNameArray, Split(fileString)
    End If
    Wend

    rs.Update
    file.Close
    Set file = Nothing
    Next
    rs.Close
    Set rs = Nothing
    Con.Close
    Set Con = Nothing

    %>

    --------------

    L'errore viene segnalato in "rs.AddNew fieldNameArray, Split(fileString)" verso la fine del secondo file.
    Come devo chiamare i campi del DB e come posso variare il codice per inserire i dati nel DB?
    Ciao e grazie!!

  2. #2
    la sintassi per l'addnew è:

    codice:
    rs.addnew
    
      rs("nomecampodatabase")= valore
      rs("nomecampodatabase")= valore
      rs("nomecampodatabase")= valore
      rs("nomecampodatabase")= valore
      rs("nomecampodatabase")= valore
      etc
    
    rs.update

  3. #3

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ma perchè non li loggi direttamente dentro il database con un collegamento ODBC... ???

    Sto curando un progetto simile al tuo e questa soluzione mi è sembrata molto più veloce e pratica..

    se ti può interessare questi sono link di microsoft dove trovare informazioni...

    http://www.microsoft.com/windows2000...re/iiabtlg.htm

    http://www.microsoft.com/technet/pro.../iis5logs.mspx

  5. #5
    Utente bannato
    Registrato dal
    Sep 2004
    Messaggi
    115
    Ho provato questo codice:

    <%
    Dim Con, rs, fs, file, fileName, fileString, fieldNameArray

    Set Con = Server.CreateObject( "ADODB.Connection" )
    Con.Open "adminDSN"
    Set rs = Server.CreateObject( "ADODB.Recordset" )
    rs.Open "logTable", Con, adOpenDynamic, adLockOptimistic
    Set fs = CreateObject("Scripting.FileSystemObject")

    For Each fileName in Request.Form("logFileName")
    Set file = fs.OpenTextFile(fileName, ForReading)

    While file.AtEndOfStream <> True
    fileString = file.ReadLine
    If Left(fileString, 8) = "#Fields:" Then
    fieldNameArray = Split(Mid(fileString, 10))
    Elseif Left(fileString, 1) <> "#" Then
    rs.AddNew
    rs("date") = fieldNameArray(0)
    rs("time") = fieldNameArray(1)
    rs("c-ip") = fieldNameArray(2)
    rs("cs-username") = fieldNameArray(3)
    rs("s-ip") = fieldNameArray(4)
    rs("s-port") = fieldNameArray(5)
    rs("cs-uri-stem") = fieldNameArray(6)
    rs("sc-status") = fieldNameArray(7)
    rs("sc-win32-status") = fieldNameArray(8)
    rs("time-taken") = fieldNameArray(9)
    rs("cs(User-Agent)") = fieldNameArray(10)
    End If
    Wend

    rs.Update
    file.Close
    Set file = Nothing
    Next
    rs.Close
    Set rs = Nothing
    Con.Close
    Set Con = Nothing

    %>

    Ora non mi esce nessun errore, il database si carica ma al posto dei dati di log mi carica il nome dei campi:
    ivece di caricarmi dentro ogni campo il relativo valore (esempio 2004-09-06 16:54:42 127.0.0.1 - ecc) mi carica il nome del campo (date in date, time in time, ecc.)

    Credo di avvinarmi alla soluzione, vi prego iutatemi!!

  6. #6
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    io te l'ho postata la soluzione... I log di iss si mettono direttamente nel db, non si leggono dai file !!!
    Con un minimo di record l'operazione di importazione che vuoi fare è capace di metterci più di 5-6 minuti !!!
    Lo appesantirebbe troppo..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.