【Java】Java で イベントログ を出力するには ~ツールを使わずに編~

■ サンプル

Enum

LogLevel.java
public enum LogLevel {
	// エラー イベント。
	// ユーザーに知らせる必要がある重大な問題を示します。
	// 通常は、機能またはデータの損失です。
	Error("ERROR"),
	// 警告イベント。 
	// 緊急を要する問題ではありませんが、今後問題の原因となりうることを示します。
	Warning("WARNING"),
	// 情報イベント。 
	// 有効で成功した操作を示します。
	Information("INFORMATION");
	
	private String logLevelName;
	private LogLevel(String logLevelName) {
		this.logLevelName = logLevelName;
	}
	
	public String toText() {
		return this.logLevelName;
	}
}
EventLogType.java
public enum EventLogType {
	// システムログ
	System("SYSTEM"),
	// アプリケーションログ
	Application("APPLICATION");
	
	private String logTypeName;
	private EventLogType(String logTypeName) {
		this.logTypeName = logTypeName;
	}
	
	public String toText() {
		return this.logTypeName;
	}
}

Logger本体

EventLogger.java
public class EventLogger {
	private static final String EventLogFormat = 
			"eventcreate /ID %d /L %s /SO %s /T %s /D \"%s\"";
	
	public static void writeEventLog(
			EventLogType eventLogType,
			LogLevel logLevel,
			int eventId,
			String source,
			String message,
			Object... parmeters) {
		
		if (eventId < 1 || eventId > 1000) {
			throw new IllegalArgumentException("eventId range must be 1-1000");
		}
		try {
			String messageContent;
			if (parmeters != null) {
				messageContent = String.format(message, parmeters);
			} else {
				messageContent = message;
			}
			
			String commandForEventLog =
					String.format(
							EventLogger.EventLogFormat,
							eventId,
							eventLogType.toText(),
							source,
							logLevel.toText(),
							messageContent);
			Runtime.getRuntime().exec(commandForEventLog);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

使用例

Main.java
public class Main {

	public static void main(String[] args) {
		System.out.println("Start");
		
		EventLogger.writeEventLog(
				EventLogType.Application, LogLevel.Error, 100, "MyLogEx1", "Hellow World!");
		EventLogger.writeEventLog(
				EventLogType.System, LogLevel.Information, 200, "MyLogEx2", "Hellow %s!!", "World");
		EventLogger.writeEventLog(
				EventLogType.Application, LogLevel.Warning, 300, "MyLogEx3", "%s %s!!!", "Hellow", "World");		

		System.out.println("End");
	}

■ 確認

 [1] [スタート]-[ファイル名を指定して実行]を選択
 [2] [名前]欄に「eventvwr」と入力して、[OK]ボタンをクリック