Package railo.commons.io.log

Source Code of railo.commons.io.log.LogDataSource

package railo.commons.io.log;

import railo.runtime.PageContext;
import railo.runtime.config.ConfigImpl;
import railo.runtime.db.CFTypes;
import railo.runtime.db.DataSource;
import railo.runtime.db.DatasourceConnection;
import railo.runtime.db.DatasourceConnectionPool;
import railo.runtime.db.SQL;
import railo.runtime.db.SQLImpl;
import railo.runtime.db.SQLItemImpl;
import railo.runtime.engine.ThreadLocalPageContext;
import railo.runtime.exp.PageException;
import railo.runtime.type.QueryImpl;
import railo.runtime.type.dt.DateTimeImpl;

/**
* Datasource output logger
* TODO impl
*/
public final class LogDataSource implements Log {
    private static final SQL SELECT = new SQLImpl("select for checking if table exists");//TODO
    private static final String INSERT = "insert into cflog(application,message,created) values(?,?,?)";//TODO
    private static final SQL CREATE = new SQLImpl("create table");//TODO
  //private ConfigImpl config;
    private DataSource datasource;
    private String username;
    private String password;
    //private String table;
    private int logLevel;
  private DatasourceConnectionPool pool;
  private LogConsole console;

    /**
     * Constructor of the class
     * @param config
     * @param datasource
     * @param username
     * @param password
     * @param table
     * @throws PageException
     */
    public LogDataSource(PageContext pc,int logLevel,ConfigImpl config, DataSource datasource, String username, String password, String table) {
        this.logLevel=logLevel;
        //this.config=config;
        this.datasource=datasource;
        this.username=username;
        this.password=password;
        //this.table=table;
        pool = config.getDatasourceConnectionPool();
        console=LogConsole.getInstance(config,logLevel);
       
        DatasourceConnection dc=null;
      try {
      dc = pool.getDatasourceConnection(pc,datasource, username, password);
      try {
        new QueryImpl(pc,dc,SELECT,-1,-1,-1,"query");
      }
      catch (PageException e) {
        new QueryImpl(pc,dc,CREATE,-1,-1,-1,"query");
      }
    }
      catch (PageException e) {
      config.getErrWriter();
    }
    finally{
      if(pool!=null)pool.releaseDatasourceConnection(dc);
    }
       
       
    }


    @Override
    public void log(int level, String application, String message) {
      DatasourceConnection dc=null;
      try {
      dc = pool.getDatasourceConnection(ThreadLocalPageContext.get(),datasource, username, password);
      SQLImpl sql = new SQLImpl(INSERT);
      sql.addItems(new SQLItemImpl(application,CFTypes.VARCHAR));
      sql.addItems(new SQLItemImpl(message,CFTypes.VARCHAR));
      sql.addItems(new SQLItemImpl(new DateTimeImpl(),CFTypes.DATE));
      new QueryImpl(ThreadLocalPageContext.get(),dc,sql,-1,-1,-1,"query");
    }
      catch (PageException e) {
      console.log(level, application, message);
    }
    finally{
      if(pool!=null)pool.releaseDatasourceConnection(dc);
    }
    }

    @Override
    public int getLogLevel() {
        return logLevel;
    }

    @Override
    public void setLogLevel(int level) {
        this.logLevel=level;
    }


    @Override
    public void debug(String application, String message) {
      log(LEVEL_DEBUG, application, message);
    }

    @Override
    public void error(String application, String message) {
      log(LEVEL_ERROR, application, message);
    }

    @Override
    public void fatal(String application, String message) {
      log(LEVEL_FATAL, application, message);
    }

    @Override
    public void info(String application, String message) {
      log(LEVEL_INFO, application, message);
    }

    @Override
    public void warn(String application, String message) {
      log(LEVEL_WARN, application, message);
    }
}
TOP

Related Classes of railo.commons.io.log.LogDataSource

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.