Skip Navigation Links | |
Exit Print View | |
Oracle Solaris WBEM Developer's Guide Oracle Solaris 11 Express 11/10 |
1. Overview of Solaris Web-Based Enterprise Management
2. Using the CIM Object Manager
Sequence of a Client Application
Opening and Closing a Client Connection
Performing Basic Client Operations
Getting and Setting Properties
Passing a Class to the Association Methods
Passing Instances to the Association Methods
Using Optional Arguments With the Association Methods
To Set Access Control for a User
To Set Access Control for a Namespace
Working With Qualifiers and Qualifier Types
Getting and Setting CIM Qualifiers
Binding an Event Filter to an Event Handler
The Solaris MOF files include logging classes. Clients can create and read log records using these classes to record errors, warnings, and informational messages. For example, a log message can indicate one of the following conditions:
A system cannot access a serial port
A system successfully mounts a file system
The number of processes that are running on a system exceeds the allowed number
The underlying providers for the logging classes can forward logging requests to the syslog daemon, the default logging system in the Solaris operating environment. See thesyslogd(1M) man page for more information.
WBEM log messages are stored in individual log files in the /var/sadm/wbem/log directory. Properties that you manipulate with the singleton instance of the Solaris_LogServiceProperties class:
Names of the log files
Directory in which the log files are stored
Log file size limit
Number of log files to store
Whether to forward messages to syslogd(1M)
The format of each log entry is defined by the Solaris_LogEntry class, which is a subclass of CIM_LogRecord. You can find Solaris_LogEntry in Solaris_Device.mof, and CIM_LogRecord in CIM_Device26.mof.
A log message includes the following elements.
Table 4-8 Log Message Elements
|
The following examples show how to create a log and how to display the contents of a log.
Example 4-25 Creating an Instance of Solaris_LogEntry
This example creates an instance of Solaris_LogEntry and sets the instance.
public class CreateLog { public static void main(String args[]) throws CIMException { // Display usage statement if insufficient command line // arguments are passed. if (args.length < 3) { System.out.println("Usage: CreateLog host username password " + "[rmi|http]"); System.exit(1); } String protocol = CIMClient.CIM_RMI; CIMClient cc = null; CIMObjectPath cop = null; BufferedReader d = new BufferedReader(new InputStreamReader (System.in)); String input_line = ""; // Query user for number of records that need to be created. System.out.print("How many log records do you want to write? "); int num_recs = 0; try { num_recs = Integer.parseInt(d.readLine()); } catch (Exception ex) { ex.printStackTrace(); System.exit(1); } // Over-arching try-catch block try { CIMNameSpace cns = new CIMNameSpace(args[0]); UserPrincipal up = new UserPrincipal(args[1]); PasswordCredential pc = new PasswordCredential(args[2]); // Set up the transport protocol - set by default to RMI. if (args.length == 4 && args[3].equalsIgnoreCase("http")) { protocol = CIMClient.CIM_XML; } cc = new CIMClient(cns, up, pc, protocol); Vector keys = new Vector(); CIMProperty logsvcKey = null; // Prompt user for relevant info needed to create the // log record. System.out.println("Please enter the record Category: "); System.out.println("\t(0)application, (1)security, (2)system"); logsvcKey = new CIMProperty("category"); input_line = d.readLine(); logsvcKey.setValue(new CIMValue(Integer.valueOf (input_line))); keys.addElement(logsvcKey); System.out.println("Please enter the record Severity:"); System.out.println("\t(0)Informational, (1)Warning, (2)Error"); logsvcKey = new CIMProperty("severity"); input_line = d.readLine(); logsvcKey.setValue(new CIMValue(Integer.valueOf (input_line))); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("Source"); System.out.println("Please enter Application Name:"); logsvcKey.setValue(new CIMValue(d.readLine())); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("SummaryMessage"); System.out.println("Please enter a summary message:"); logsvcKey.setValue(new CIMValue(d.readLine())); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("DetailedMessage"); System.out.println("Please enter a detailed message:"); logsvcKey.setValue(new CIMValue(d.readLine())); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("RecordData"); logsvcKey.setValue( new CIMValue("0xfe 0x45 0xae 0xda random data")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("SyslogFlag"); logsvcKey.setValue(new CIMValue(new Boolean(true))); keys.addElement(logsvcKey); CIMObjectPath logreccop = new CIMObjectPath("Solaris_LogEntry", keys); CIMClass logClass = cc.getClass(logreccop); CIMInstance ci = logClass.newInstance(); ci.setClassName("Solaris_LogEntry"); ci.setProperties(keys); // System.out.println(ci.toString()); // Create as many instances of the record as requested. for (int i = 0; i < num_recs; i++) { cc.createInstance(logreccop, ci); } } catch (Exception e) { System.out.println("Exception: "+e); e.printStackTrace(); } // close session. if (cc != null) { cc.close(); } } }
Example 4-26 Displaying a List of Log Records
This example displays a list of log records.
public class ReadLog { public static void main(String args[]) throws CIMException { String protocol = CIMClient.CIM_RMI; // Display usage statement if insufficient command line // arguments are passed. if (args.length < 3) { System.out.println("Usage: ReadLog host username password " + "[rmi|http]"); System.exit(1); } CIMClient cc = null; CIMObjectPath cop = null; CIMObjectPath serviceObjPath = null; Vector inVec = new Vector(); Vector outVec = new Vector(); // Over-arching try-catch block try { CIMNameSpace cns = new CIMNameSpace(args[0]); UserPrincipal up = new UserPrincipal(args[1]); PasswordCredential pc = new PasswordCredential(args[2]); // Set up the transport protocol - set by default to RMI. if (args.length == 4 && args[3].equalsIgnoreCase("http")) { protocol = CIMClient.CIM_XML; } cc = new CIMClient(cns, up, pc, protocol); cop = new CIMObjectPath("Solaris_LogEntry"); // Enumerate the list of instances of class Solaris_LogEntry Enumeration e = cc.enumerateInstances(cop, true, false, false, false, null); // iterate over the list and print out each property. for (; e.hasMoreElements(); ) { System.out.println("---------------------------------"); CIMInstance ci = (CIMInstance)e.nextElement(); System.out.println("Log filename : " + ((String)ci.getProperty("LogName").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("Source").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("RecordData").getValue().getValue())); boolean syslogflag = ((Boolean)ci.getProperty("SyslogFlag").getValue().getValue()). booleanValue(); if (syslogflag == true) { System.out.println("Record was written to syslog"); } else { System.out.println("Record was not written to syslog"); } System.out.println("---------------------------------"); } } catch (Exception e) { System.out.println("Exception: "+e); e.printStackTrace(); } // close session. if (cc != null) { cc.close(); } } }