www.geekybob.com

Just a short, simple blog for Bob to share his thoughts.

Converting NCSA log files to W3C format

01 December 2005 • by Bob • IIS, Scripting

One of the great utilities that ships with IIS is the CONVLOG.EXE application, which converts W3C or MS Internet Standard log files to NCSA format, where they can be processed by any of the applications that only parse NCSA log file information. The trouble is, what happens when you already have NCSA log files and you want W3C log files? You can't use the CONVLOG.EXE application, it only works in the opposite direction.

With that in mind, I wrote the following Windows Script Host (WSH) script that will read the current directory and convert all NCSA-formatted log files to W3C format. To use this code, just copy the code into notepad, and save it with a ".vbs" file extension on your system. To run it, copy the script to a folder that contains NCSA log files, (named "nc*.log"), then double-click it.

Option Explicit

Dim objIISLog
Dim objFSO
Dim objFolder
Dim objFile
Dim objOutputFile
Dim strInputPath
Dim strOutputPath
Dim strLogRecord

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Set objFolder = objFSO.GetFolder(".")

For Each objFile In objFolder.Files

 strInputPath = LCase(objFile.Name)

 If Left(strInputPath,2) = "nc" And Right(strInputPath,4) = ".log" Then

  strOutputPath = objFolder.Path & "\" & "ex" & Mid(strInputPath,3)
  strInputPath = objFolder.Path & "\" & strInputPath

  Set objIISLog = CreateObject("MSWC.IISLog")
  objIISLog.OpenLogFile strInputPath, 1, "", 0, ""
  Set objOutputFile = objFSO.CreateTextFile(strOutputPath)

  objIISLog.ReadLogRecord

  objOutputFile.WriteLine "#Software: Microsoft Internet Information Services 5.0"
  objOutputFile.WriteLine "#Version: 1.0"
  objOutputFile.WriteLine "#Date: " & BuildDateTime(objIISLog.DateTime)
  objOutputFile.WriteLine "#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent)"

  Do While Not objIISLog.AtEndOfLog

   strLogRecord = BuildDateTime(objIISLog.DateTime)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.ClientIP)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.UserName)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.ServerIP)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.ServerPort)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.Method)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.URIStem)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.URIQuery)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.ProtocolStatus)
   strLogRecord = strLogRecord & " " & FormatField(objIISLog.UserAgent)
   objOutputFile.WriteLine strLogRecord

   objIISLog.ReadLogRecord

  Loop

  objIISLog.CloseLogFiles 1
  objIISLog = Null
 
 End If

Next

Function FormatField(tmpField)
 On Error Resume Next
 FormatField = "-"
 If Len(tmpField) > 0 Then FormatField = Trim(tmpField)
End Function

Function BuildDateTime(tmpDateTime)
 On Error Resume Next
 tmpDateTime = CDate(tmpDateTime)
 BuildDateTime = Year(tmpDateTime) & "-" & _
  Right("0" & Month(tmpDateTime),2) & "-" & _
  Right("0" & Day(tmpDateTime),2) & " " & _
  Right("0" & Hour(tmpDateTime),2) & ":" & _
  Right("0" & Minute(tmpDateTime),2) & ":" & _
  Right("0" & Second(tmpDateTime),2)
End Function

I hope this helps!

Blog Navigation

You are on page 2 of 2 pages.

1 2

Tag Cloud

11th-ACR 511th-MI-Company Access Add-ins ADSI Animals Antivaxxers AppCmd Apple Arizona Army Art ASP ASP.NET Atheism Authentication Bass Batch Files Bicycling BlogEngine.NET Blogging BSOD Business C# Campaigning Capitalism Cats Certificates Childhood Christianity Christmas Classic ASP Communism Computers Conspiracy Content Cookies COVID19 CPP Database Dell DIY Dogs Domain Administration Easter Ecology Education Effects Entertainment Environment Errors Essential-Tremor Exercise Expression Web Extensibility Facebook Family Fashion Feedback FFmpeg Filters Food FPSE Friends FrontPage FTP FTP Clients FTPS Gaming Germany GPO Grandparenting Guitar Halloween Hardware Hawaii Health History Hobbies Hotkeys HP HTML HTMLA HTTP HTTPS Humor IE IIS IIS 5 IIS 6 IIS 7 IIS 7.5 IIS 8 IIS 8.5 IIS Express Internet JavaScript Keystrokes Kickstarter Kids Languages LDAP Linguistics Log Files Log Parser LogParser Macros Marriage Math Media Membership Microsoft MIDI Military Miscellaneous Mods Movies Music Nature Nostalgia Office OneDrive Opinion Outlook PaintShop Parenthood Parody Peace Performance Philosophy Photography PHP Poetry Politics Ponderings PowerShell Programming Projects Proxy Puns PWS Random Thoughts Rants Religion Reviews RSCA Rush Russia Satire Science Scripting SDK Seattle Security SEO SharePoint Sibelius SkyDrive Socialism Space Sports Squirrels Squirrels, Humor SSI SSL Star Trek STEM Support Surface TechEd Technology Television Templates Thanksgiving Themes Transcription Travel Troubleshooting Tucson Upgrades URL URL Rewrite User Isolation VBA VBScript Video Visio Visual Basic Visual Studio VLC W3C Web API WebDAV WebMatrix Weight Loss WinCache Window Media Center Windows Windows 10 Windows Cache Extension Windows Phone 7 WMI Word Work Writing WSH XML XSL Zune