アプリケーションでログファイルから Log Viewer にデータを読み込むには、次の作業を行います
Solaris_LogRecord クラスのインスタンスを列挙する
目的のインスタンスを取得する
出力デバイス (通常はユーザーインタフェース) にインスタンスのプロパティを出力する
必要なすべての java クラスをインポートします。例 5-7 に示すクラスは、インポートする必要がある最小限のクラスです。
import java.rmi.*; import com.sun.wbem.client.CIMClient; import com.sun.wbem.cim.CIMInstance; import com.sun.wbem.cim.CIMValue; import com.sun.wbem.cim.CIMProperty; import com.sun.wbem.cim.CIMNameSpace; import com.sun.wbem.cim.CIMObjectPath; import com.sun.wbem.cim.CIMClass; import com.sun.wbem.cim.CIMException; import com.sun.wbem.solarisprovider.*; import java.util.*; import java.util.Enumeration; |
クラス ReadLog を宣言します。
public class ReadLog { public static void main(String args[]) throws CIMException { if ( args.length != 3) { System.out.println("Usage: ReadLog host username password"); System.exit(1); |
ReadLog クラスのクライアント、オブジェクトパス、およびネームスペースの値を設定します。
} CIMClient cc = null; CIMObjectPath cop = null; try { CIMNameSpace cns = new CIMNameSpace(args[0]); cc = new CIMClient(cns, args[1], args[2]); cop = new CIMObjectPath("Solaris_LogRecord"); |
Solaris_LogRecord のインスタンスを列挙します。
Enumeration e = cc.enumInstances(cop, true); for (; e.hasMoreElements(); ) { |
プロパティの値を出力デバイスに送ります。
System.out.println("------------------------ ---------"); CIMObjectPath op = (CIMObjectPath)e.nextElement(); CIMInstance ci = cc.getInstance(op); System.out.println("Record ID : " + (((Long)ci.getProperty("RecordID").getValue(). getValue()).longValue())); System.out.println("Log filename : " + ((String)ci.getProperty("FileName").getValue(). getValue())); int categ = (((Integer)ci.getProperty("category"). getValue().getValue()).intValue()); if (categ == 0) System.out.println("Category : Application Log"); else if (categ == 1) System.out.println("Category : Security Log"); else if (categ == 2) System.out.println("Category : System Log"); int severity = (((Integer)ci.getProperty ("severity").getValue().getValue()).intValue()); if (severity == 0) System.out.println("Severity : Informational"); else if (severity == 1) System.out.println("Severity : Warning Log!"); else if (severity == 2) System.out.println("Severity : Error!!"); System.out.println("Log Record written by :" + ((String)ci.getProperty("AppName").getValue(). getValue())); System.out.println("User : " + ((String)ci. getProperty("UserName").getValue().getValue())); System.out.println("Client Machine : " + ((String)ci. getProperty("ClientMachineName").getValue().getValue ())); System.out.println("Server Machine : " + ((String)ci. getProperty("ServerMachineName").getValue().getValue ())); System.out.println("Summary Message : " + ((String) ci.getProperty("SummaryMessage").getValue().getValue ())); System.out.println("Detailed Message : " + ((String) ci.getProperty("DetailedMessage").getValue().getValue ())); System.out.println("Additional data : " + ((String) ci.getProperty("data").getValue().getValue())); boolean syslogflag = ((Boolean)ci.getProperty("syslogflag").getValue(). getValue()).booleanValue(); if (syslogflag == true) { System.out.println("Record was written to syslog as well"); } else { System.out.println("Record was not written to syslog"); } System.out.println("----------------------------- ----"); } |
エラーが発生した場合は、ユーザーにエラーメッセージを返します。
... } catch (Exception e) { System.out.println("Exception: "+e); e.printStackTrace(); } ... |
ファイルからデータが読み取られたあとセッションを閉じます。
// セッションを閉じる。 if(cc != null) { cc.close(); } } } |