【VBScript】簡単に使える!ログ出力部品


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

以前、実行ログの出力関数を作成する方法をご紹介しました。
今回は、それを部品化して、別のVBScriptで実行する方法を解説したいと思います。

はじめに・仕様

本記事では、VBScriptにおけるログを出力する部品と、その使い方を説明します。
仕様については、以下となります。

  • ログの出力先パスとファイル名は、呼び出し元で定義する
  • ログのヘッダーとして、[YYYY/MM/DD hh:mm:ss][ログレベル]を設定する
  • ログのファイル名が、「指定したファイル名_YYYYMMDD.拡張子」となる

ソースコード

ここでは、ログ出力部品と呼び出し側のサンプルソースコードを見ていきたいと思います。

main.vbs(呼び出し側)

Option Explicit

' ログの出力先
Const LOG_PATH = "C:\workspace\VBScript"
' ログのファイル名
Const LOG_NAME = "main.log"

' ファイルシステムオブジェクトの作成
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

' 関数の読み込み
Execute fso.OpenTextFile("function.vbs").ReadAll()

' ファイルシステムオブジェクトの破棄
Set fso = Nothing

' ログ出力部品の呼び出し
Call WriteLog("出力するメッセージ1", LOG_INFO)
Call WriteLog("出力するメッセージ2", LOG_ERROR)
Call WriteLog("出力するメッセージ3", LOG_INFO)

function.vbs(呼び出される側)

Option Explicit

' ログレベル(INFO)
Const LOG_INFO = "INFO"
' ログレベル(ERROR)
Const LOG_ERROR = "ERROR"

' ログ出力
Function WriteLog(Byval msg, Byval level)

	Dim strDate, strTime, header
	strDate = Date()
	strTime = Time()
	
	' 定数定義チェック
	If(LOG_PATH = "" Or LOG_NAME = "")Then
		WScript.Echo("ログ出力関数向け定数が定義されていません。")
		WScript.Quit
	End If

	' ファイルシステムオブジェクトの作成
	Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")

	' テキストファイルのオープン(追記モード)
	Dim logFile
	Set logFile = fso.OpenTextFile(LOG_PATH & "\" & Replace(LOG_NAME , ".", "_" & Replace(strDate, "/", "") & "."), 8, True)

	' ヘッダーの作成
	header = "[" & strDate & " " & strTime & "][" & level & "]"

	' ログの書き込み
	logFile.WriteLine(header & msg)

	' ログのクローズ
	logFile.Close

	' ファイルシステムオブジェクトの破棄
	Set fso = Nothing

End Function

実行例

サンプルを実行した際の、使用イメージについて説明します。

前項で説明しているサンプルのソースコードを実行すると、以下のようなログが出力されます。

・ログファイル名:main_20230319.log

ログに出力された内容:

[2023/03/19 3:25:48][INFO]出力するメッセージ1
[2023/03/19 3:25:48][ERROR]出力するメッセージ2
[2023/03/19 3:25:48][INFO]出力するメッセージ3

実装時に使用した機能について

この部品を作成するにあたり、使用した機能をまとめてみました。

コメント

タイトルとURLをコピーしました