how to add a log to my vbscript

Solution 1:

There are several ways to do this. The simplest way, without any modification to your script, would be to call the script with cscript.exe (in a command prompt) and redirect the output to a file:

cscript your.vbs > output.log

However, if you want a log to be created even when users double-click your script you'll have to change your script so that it writes to a file instead of echoing the output. Open the log file at the beginning of the script:

Set myLog = objFSO.OpenTextFile("C:\my.log", For_Writing, True)

replace WScript.Echo ... with myLog.WriteLine ..., and close the file before you exit from the script:

myLog.Close

A somewhat more sophisticated approach would be to create a set of logging functions, which will allow you create log lines depending on certain conditions, e.g. LogInfo() for informational log messages and LogError() for errors.

Shameless plug: Some time ago I got fed up with writing the same boilerplate logging functions over and over again, so I wrote a logger class that encapsulates the usual logging facilities (interactive console, files, eventlog) and provides logging methods for 4 log levels (Error, Warning, Information, Debug). The class can be used for logging to a file like this:

Set myLog = New CLogger
myLog.LogToConsole = False
myLog.LogFile = "C:\my.log"

myLog.LogInfo "info message"
...
myLog.LogError "an error occurred"

The log file is automatically closed when the object is released.

Solution 2:

Why not use the system's event log? I described how in this answer

It means most of the work is done for you and you don't need to worry about where to put your log file