Package log4j

Source Code of log4j.TestCastorAppender

/*
* Copyright 2006 Holger West, Ralf Joachim
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package log4j;

import java.net.URL;
import java.sql.Connection;
import java.sql.Statement;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.xml.DOMConfigurator;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.JDOManager;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
* Test for <code>CastorAppender</code> to showcase its usage.
*
* @author  <a href="mailto:holger.west@syscon-informatics.de">Holger West</a>
*/
public final class TestCastorAppender extends TestCase {
    // -----------------------------------------------------------------------------------
   
    /** The <a href="http://jakarta.apache.org/commons/logging/">Jakarta Commons
     *  Logging </a> instance used for all logging. */
    private static final Log LOG = LogFactory.getLog(TestCastorAppender.class);
   
    /** Example JDO configuration. */
    private static final String JDO_CONF = "/log4j/example-jdo-conf.xml";
   
    /** Example LOG4J configuration. */
    private static final String XML_CONF = "/log4j/example-log4j.xml";
   
    // -----------------------------------------------------------------------------------

    /**
     * Initialize LOG4J logging with example configuration and create JUNIT test suite.
     *
     * @return JUNIT test suite.
     */
    public static Test suite() {
        // load specific resource for testing
        URL url = TestCastorAppender.class.getResource(XML_CONF);
        DOMConfigurator.configure(url);
       
        TestSuite suite = new TestSuite("CastorAppender tests");
       
        suite.addTest(new TestCastorAppender("testAppender"));
       
        return suite;
    }
   
    // -----------------------------------------------------------------------------------

    /**
     * Constructs a new TestCase with the given name.
     *
     * @param name The name for the test.
     */
    public TestCastorAppender(final String name) {
        super(name);
    }
   
    // -----------------------------------------------------------------------------------
   
    public void setUp () throws Exception {
        JDOManager.loadConfiguration(
                TestCastorAppender.class.getResource(JDO_CONF).toString());
        JDOManager jdo = JDOManager.createInstance("LOGGING");
        Database db = jdo.getDatabase();
        db.begin();
        Connection connection = db.getJdbcConnection();
        Statement statement = connection.createStatement();
        statement.executeUpdate("DROP TABLE LOG_EXTENSION");
        statement.executeUpdate("DROP TABLE LOG_EXCEPTION");
        statement.executeUpdate("DROP TABLE LOG");
       
        statement.executeUpdate("CREATE TABLE LOG (LOG_ID INT NOT NULL, " +
                " LOG_TIMESTAMP   TIMESTAMP        NOT NULL, " +
                " LOG_CLASS       VARCHAR  ( 100)  NOT NULL, "
                " LOG_LEVEL       VARCHAR  (  10)  NOT NULL, " +  
                " LOG_THREAD      VARCHAR  ( 100)  NOT NULL, " +  
                " LOG_MESSAGE     VARCHAR  (1000)  DEFAULT NULL, " +
                " LOG_COUNT       INT              NOT NULL)");
        statement.executeUpdate("ALTER TABLE LOG ADD PRIMARY KEY (LOG_ID)");
        statement.executeUpdate("CREATE TABLE LOG_EXCEPTION ( " +
            " LOGE_ID         INT              NOT NULL, " +
            " LOGE_LOG_ID     INT              NOT NULL, " +
            " LOGE_STACKTRACE BLOB             NOT NULL)");
        statement.executeUpdate("ALTER TABLE LOG_EXCEPTION ADD PRIMARY KEY (LOGE_ID)");
        statement.executeUpdate("ALTER TABLE LOG_EXCEPTION ADD CONSTRAINT FK_LOGE_LOG_ID" +
                " FOREIGN KEY (LOGE_LOG_ID) REFERENCES LOG (LOG_ID)");
        statement.executeUpdate("CREATE TABLE LOG_EXTENSION (LOGX_LOG_ID INT NOT NULL, LOGX_TYPE VARCHAR(100) NOT NULL, LOGX_VALUE VARCHAR(100) NOT NULL)");
        statement.executeUpdate("ALTER TABLE LOG_EXTENSION ADD PRIMARY KEY (LOGX_LOG_ID)");
        statement.executeUpdate("ALTER TABLE LOG_EXTENSION ADD CONSTRAINT FK_LOGX_LOG_ID " +
                " FOREIGN KEY (LOGX_LOG_ID) REFERENCES LOG (LOG_ID)");
       
        statement.executeQuery("select count(*) from LOG");
        db.commit();
        db.close();
    }
   
    /**
     * Test CastorAppender for LOG4J.
     *
     * @throws Exception If anything went wrong in the test.
     */
    public void testAppender() throws Exception {
//        JDOManager.loadConfiguration(
//                TestCastorAppender.class.getResource(JDO_CONF).toString());

        try {
            Integer.parseInt("cc");
        } catch (Exception e) {
            LOG.error("exception", e);
        }
        LOG.error(null);
        LOG.warn("This is only a message");
       
        LogReferenceExtension ext = new LogReferenceExtension();
        ext.setMessage("this is an extension");
        ext.setType(this.getClass().toString());
        ext.setValue("123456789");
        LOG.error(ext);
       
        // flush the buffer before exit !!!!
        CastorAppender.flush();
    }

    // -----------------------------------------------------------------------------------
}
TOP

Related Classes of log4j.TestCastorAppender

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.