FileDocCategorySizeDatePackage
Log4JTest.javaAPI DocApache log4j 1.2.1511839Sat Aug 25 00:09:36 BST 2007None

Log4JTest

public class Log4JTest extends Object
// Class JDBCAppender, writes messages into a database // The JDBCAppender is configurable at runtime in two alternatives : // 1. Configuration-file // Define the options in a file and call a PropertyConfigurator.configure(file)-method. // 2. method JDBCAppender::setOption(JDBCAppender.xxx_OPTION, String value) // The sequence of some options is important : // 1. Connector-option OR/AND Database-options // Any database connection is required ! // 2. (Table-option AND Columns-option) OR SQL-option // Any statement is required ! // 3. All other options can be set at any time... // The other options are optional and have a default initialization, which can be custumized. // All available options are defined as static String-constants in JDBCAppender named xxx_OPTION. // Here is a description of all available options : // 1. Database-options to connect to the database // - URL_OPTION : a database url of the form jdbc:subprotocol:subname // - USERNAME_OPTION : the database user on whose behalf the connection is being made // - PASSWORD_OPTION : the user's password // // 2. Connector-option to specify your own JDBCConnectionHandler // - CONNECTOR_OPTION : a classname which is implementing the JDBCConnectionHandler-interface // This interface is used to get a customized connection. // If in addition the database-options are given, these options will be used // for invocation of the JDBCConnectionHandler-interface to get a connection. // Else if no database-options are given, the JDBCConnectionHandler-interface is called without these options. // // 3. SQL-option to specify a static sql-statement which will be performed with every occuring message-event // - SQL_OPTION : a sql-statement which will be used to write to the database // If you give this option, the table-option and columns-option will be ignored ! // Use the variable @MSG@ on that location in the statement, which has to be dynamically replaced by the message. // // 4. Table-option to specify one table contained by the database // - TABLE_OPTION : the table in which the logging will be done // // 5. Columns-option to describe the important columns of the table (Not nullable columns are mandatory to describe!) // - COLUMNS_OPTION : a formatted list of column-descriptions // Each column description consists of // - the name of the column (required) // - a logtype which is a static constant of class LogType (required) // - and a value which depends by the LogType (optional/required, depending by logtype) // Here is a description of the available logtypes of class LogType : // o MSG = a value will be ignored, the column will get the message. (One columns need to be of this type!) // o STATIC = the value will be filled into the column with every logged message. (Ensure that the type of value can be casted into the sql-type of the column!) // o ID = value must be a classname, which implements the JDBCIDHandler-interface. // o TIMESTAMP = a value will be ignored, the column will be filled with a actually timestamp with every logged message. // o EMPTY = a value will be ignored, the column will be ignored when writing to the database (Ensure to fill not nullable columns by a database trigger!) // If there are more than one column to describe, the columns must be separated by a TAB-delimiter (' ') ! // The arguments of a column-description must be separated by the delimiter '~' ! // (Example : name1~logtype1~value1 name2~logtype2~value2...) // // 6. Layout-options to define the layout of the messages (optional) // - the layout wont be set by a xxx_OPTION // Configuration-file : see at the following configuration-file example // JDBCAppender::setOption() : see at the following code example // The default is a layout of class org.apache.log4j.PatternLayout with ConversionPattern=%m // // 7. Buffer-option to define the size of the message-event-buffer (optional) // - BUFFER_OPTION : define how many messages will be buffered until they will be updated to the database. // The default is a update on every message (buffer=1=no buffer). // // 8. Commit-option to define a auto-commitment // - COMMIT_OPTION : define whether updated messages should be committed to the database (Y) or not (N). // The default is a commit on every buffer-flush. // Here is a Configuration-file example, which can be used with the PropertyConfigurator : // // Declare a appender variable named JDBC log4j.rootCategory=JDBC // JDBC is a class of JDBCAppender, which writes messages into a database log4j.appender.JDBC=JDBCAppender // 1. Database-options to connect to the database log4j.appender.JDBC.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=LENZI)(Port=1521))(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=LENZI)(Port=1526)))(CONNECT_DATA=(SID=LENZI))) log4j.appender.JDBC.username=mex_pr_dev60 log4j.appender.JDBC.password=mex_pr_dev60 // 2. Connector-option to specify your own JDBCConnectionHandler log4j.appender.JDBC.connector=MyConnectionHandler // 3. SQL-option to specify a static sql-statement which will be performed with every occuring message-event log4j.appender.JDBC.sql=INSERT INTO LOGTEST (id, msg, created_on, created_by) VALUES (1, @MSG@, sysdate, 'me') // 4. Table-option to specify one table contained by the database log4j.appender.JDBC.table=logtest // 5. Columns-option to describe the important columns of the table (Not nullable columns are mandatory to describe!) log4j.appender.JDBC.columns=id_seq~EMPTY id~ID~MyIDHandler msg~MSG created_on~TIMESTAMP created_by~STATIC~Thomas Fenner (t.fenner@klopotek.de) // 6. Layout-options to define the layout of the messages (optional) log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout log4j.appender.JDBC.layout.ConversionPattern=%m // 7. Buffer-option to define the size of the message-event-buffer (optional) log4j.appender.JDBC.buffer=1 // 8. Commit-option to define a auto-commitment log4j.appender.JDBC.commit=Y

Fields Summary
static Category
cat
Constructors Summary
Methods Summary
public static voidmain(java.lang.String[] args)


       
   
      // Ensure to have all necessary drivers installed !
   	try
      {
			Driver d = (Driver)(Class.forName("oracle.jdbc.driver.OracleDriver").newInstance());
			DriverManager.registerDriver(d);
		}
      catch(Exception e){}

      // Set the priority which messages have to be logged
		cat.setPriority(Priority.INFO);

		// Configuration with configuration-file
		PropertyConfigurator.configure("log4jtestprops.txt");

      // These messages with Priority >= setted priority will be logged to the database.
  		cat.debug("debug");  //this not, because Priority DEBUG is less than INFO
      cat.info("info");
      cat.error("error");
      cat.fatal("fatal");