Search in sources :

Example 26 with LogChannel

use of org.pentaho.di.core.logging.LogChannel in project pentaho-kettle by pentaho.

the class Carte method parseAndRunCommand.

@SuppressWarnings("static-access")
private static void parseAndRunCommand(String[] args) throws Exception {
    options = new Options();
    options.addOption(OptionBuilder.withLongOpt("stop").withDescription(BaseMessages.getString(PKG, "Carte.ParamDescription.stop")).hasArg(false).isRequired(false).create('s'));
    options.addOption(OptionBuilder.withLongOpt("userName").withDescription(BaseMessages.getString(PKG, "Carte.ParamDescription.userName")).hasArg(true).isRequired(false).create('u'));
    options.addOption(OptionBuilder.withLongOpt("password").withDescription(BaseMessages.getString(PKG, "Carte.ParamDescription.password")).hasArg(true).isRequired(false).create('p'));
    options.addOption(OptionBuilder.withLongOpt("help").withDescription(BaseMessages.getString(PKG, "Carte.ParamDescription.help")).create('h'));
    CommandLineParser parser = new BasicParser();
    CommandLine cmd = parser.parse(options, args);
    if (cmd.hasOption('h')) {
        displayHelpAndAbort();
    }
    String[] arguments = cmd.getArgs();
    boolean usingConfigFile = false;
    // Load from an xml file that describes the complete configuration...
    // 
    SlaveServerConfig config = null;
    if (arguments.length == 1 && !Utils.isEmpty(arguments[0])) {
        if (cmd.hasOption('s')) {
            throw new Carte.CarteCommandException(BaseMessages.getString(PKG, "Carte.Error.illegalStop"));
        }
        usingConfigFile = true;
        FileObject file = KettleVFS.getFileObject(arguments[0]);
        Document document = XMLHandler.loadXMLFile(file);
        // Must stand up server now to allow decryption of password
        setKettleEnvironment();
        Node configNode = XMLHandler.getSubNode(document, SlaveServerConfig.XML_TAG);
        config = new SlaveServerConfig(new LogChannel("Slave server config"), configNode);
        if (config.getAutoSequence() != null) {
            config.readAutoSequences();
        }
        config.setFilename(arguments[0]);
    }
    if (arguments.length == 2 && !Utils.isEmpty(arguments[0]) && !Utils.isEmpty(arguments[1])) {
        String hostname = arguments[0];
        String port = arguments[1];
        if (cmd.hasOption('s')) {
            String user = cmd.getOptionValue('u');
            String password = cmd.getOptionValue('p');
            shutdown(hostname, port, user, password);
            System.exit(0);
        }
        SlaveServer slaveServer = new SlaveServer(hostname + ":" + port, hostname, port, null, null);
        config = new SlaveServerConfig();
        config.setSlaveServer(slaveServer);
    }
    // 
    if (config == null) {
        displayHelpAndAbort();
    }
    if (!usingConfigFile) {
        setKettleEnvironment();
    }
    runCarte(config);
}
Also used : Options(org.apache.commons.cli.Options) Node(org.w3c.dom.Node) LogChannel(org.pentaho.di.core.logging.LogChannel) Document(org.w3c.dom.Document) SlaveServer(org.pentaho.di.cluster.SlaveServer) BasicParser(org.apache.commons.cli.BasicParser) CommandLine(org.apache.commons.cli.CommandLine) CommandLineParser(org.apache.commons.cli.CommandLineParser) FileObject(org.apache.commons.vfs2.FileObject)

Example 27 with LogChannel

use of org.pentaho.di.core.logging.LogChannel in project pentaho-kettle by pentaho.

the class JobEntryBase method setParentJob.

/**
 * Sets the parent job.
 *
 * @param parentJob
 *          the new parent job
 */
public void setParentJob(Job parentJob) {
    this.parentJob = parentJob;
    this.logLevel = parentJob.getLogLevel();
    this.log = new LogChannel(this, parentJob);
    this.containerObjectId = parentJob.getContainerObjectId();
}
Also used : LogChannel(org.pentaho.di.core.logging.LogChannel)

Example 28 with LogChannel

use of org.pentaho.di.core.logging.LogChannel in project pentaho-kettle by pentaho.

the class Kitchen method main.

public static void main(String[] a) throws Exception {
    final ExecutorService executor = ExecutorUtil.getExecutor();
    final RepositoryPluginType repositoryPluginType = RepositoryPluginType.getInstance();
    final Future<Map.Entry<KettlePluginException, Future<KettleException>>> repositoryRegisterFuture = executor.submit(new Callable<Map.Entry<KettlePluginException, Future<KettleException>>>() {

        @Override
        public Map.Entry<KettlePluginException, Future<KettleException>> call() throws Exception {
            PluginRegistry.addPluginType(repositoryPluginType);
            try {
                KettleClientEnvironment.getInstance().setClient(KettleClientEnvironment.ClientType.KITCHEN);
                KettleClientEnvironment.init();
            } catch (KettlePluginException e) {
                return new AbstractMap.SimpleImmutableEntry<KettlePluginException, Future<KettleException>>(e, null);
            }
            Future<KettleException> kettleEnvironmentInitFuture = executor.submit(new Callable<KettleException>() {

                @Override
                public KettleException call() throws Exception {
                    try {
                        KettleClientEnvironment.getInstance().setClient(KettleClientEnvironment.ClientType.KITCHEN);
                        KettleEnvironment.init();
                    } catch (KettleException e) {
                        return e;
                    }
                    return null;
                }
            });
            return new AbstractMap.SimpleImmutableEntry<KettlePluginException, Future<KettleException>>(null, kettleEnvironmentInitFuture);
        }
    });
    List<String> args = new ArrayList<String>();
    for (int i = 0; i < a.length; i++) {
        if (a[i].length() > 0) {
            args.add(a[i]);
        }
    }
    DelegatingMetaStore metaStore = new DelegatingMetaStore();
    metaStore.addMetaStore(MetaStoreConst.openLocalPentahoMetaStore());
    metaStore.setActiveMetaStoreName(metaStore.getName());
    RepositoryMeta repositoryMeta = null;
    Job job = null;
    StringBuilder optionRepname, optionUsername, optionTrustUser, optionPassword, optionJobname, optionDirname, initialDir;
    StringBuilder optionFilename, optionLoglevel, optionLogfile, optionLogfileOld, optionListdir;
    StringBuilder optionListjobs, optionListrep, optionNorep, optionVersion, optionListParam, optionExport;
    NamedParams optionParams = new NamedParamsDefault();
    NamedParams customOptions = new NamedParamsDefault();
    CommandLineOption maxLogLinesOption = new CommandLineOption("maxloglines", BaseMessages.getString(PKG, "Kitchen.CmdLine.MaxLogLines"), new StringBuilder());
    CommandLineOption maxLogTimeoutOption = new CommandLineOption("maxlogtimeout", BaseMessages.getString(PKG, "Kitchen.CmdLine.MaxLogTimeout"), new StringBuilder());
    CommandLineOption[] options = new CommandLineOption[] { new CommandLineOption("rep", BaseMessages.getString(PKG, "Kitchen.CmdLine.RepName"), optionRepname = new StringBuilder()), new CommandLineOption("user", BaseMessages.getString(PKG, "Kitchen.CmdLine.RepUsername"), optionUsername = new StringBuilder()), new CommandLineOption("trustuser", BaseMessages.getString(PKG, "Kitchen.ComdLine.RepUsername"), optionTrustUser = new StringBuilder()), new CommandLineOption("pass", BaseMessages.getString(PKG, "Kitchen.CmdLine.RepPassword"), optionPassword = new StringBuilder()), new CommandLineOption("job", BaseMessages.getString(PKG, "Kitchen.CmdLine.RepJobName"), optionJobname = new StringBuilder()), new CommandLineOption("dir", BaseMessages.getString(PKG, "Kitchen.CmdLine.RepDir"), optionDirname = new StringBuilder()), new CommandLineOption("file", BaseMessages.getString(PKG, "Kitchen.CmdLine.XMLJob"), optionFilename = new StringBuilder()), new CommandLineOption("level", BaseMessages.getString(PKG, "Kitchen.CmdLine.LogLevel"), optionLoglevel = new StringBuilder()), new CommandLineOption("logfile", BaseMessages.getString(PKG, "Kitchen.CmdLine.LogFile"), optionLogfile = new StringBuilder()), new CommandLineOption("log", BaseMessages.getString(PKG, "Kitchen.CmdLine.LogFileOld"), optionLogfileOld = new StringBuilder(), false, true), new CommandLineOption("listdir", BaseMessages.getString(PKG, "Kitchen.CmdLine.ListDir"), optionListdir = new StringBuilder(), true, false), new CommandLineOption("listjobs", BaseMessages.getString(PKG, "Kitchen.CmdLine.ListJobsDir"), optionListjobs = new StringBuilder(), true, false), new CommandLineOption("listrep", BaseMessages.getString(PKG, "Kitchen.CmdLine.ListAvailableReps"), optionListrep = new StringBuilder(), true, false), new CommandLineOption("norep", BaseMessages.getString(PKG, "Kitchen.CmdLine.NoRep"), optionNorep = new StringBuilder(), true, false), new CommandLineOption("version", BaseMessages.getString(PKG, "Kitchen.CmdLine.Version"), optionVersion = new StringBuilder(), true, false), new CommandLineOption("param", BaseMessages.getString(PKG, "Kitchen.ComdLine.Param"), optionParams, false), new CommandLineOption("listparam", BaseMessages.getString(PKG, "Kitchen.ComdLine.ListParam"), optionListParam = new StringBuilder(), true, false), new CommandLineOption("export", BaseMessages.getString(PKG, "Kitchen.ComdLine.Export"), optionExport = new StringBuilder(), true, false), new CommandLineOption("initialDir", null, initialDir = new StringBuilder(), false, true), new CommandLineOption("custom", BaseMessages.getString(PKG, "Kitchen.ComdLine.Custom"), customOptions, false), maxLogLinesOption, maxLogTimeoutOption };
    if (args.size() == 2) {
        // 2 internal hidden argument (flag and value)
        CommandLineOption.printUsage(options);
        exitJVM(9);
    }
    LogChannelInterface log = new LogChannel(STRING_KITCHEN);
    CommandLineOption.parseArguments(args, options, log);
    configureLogging(maxLogLinesOption, maxLogTimeoutOption);
    String kettleRepname = Const.getEnvironmentVariable("KETTLE_REPOSITORY", null);
    String kettleUsername = Const.getEnvironmentVariable("KETTLE_USER", null);
    String kettlePassword = Const.getEnvironmentVariable("KETTLE_PASSWORD", null);
    if (!Utils.isEmpty(kettleRepname)) {
        optionRepname = new StringBuilder(kettleRepname);
    }
    if (!Utils.isEmpty(kettleUsername)) {
        optionUsername = new StringBuilder(kettleUsername);
    }
    if (!Utils.isEmpty(kettlePassword)) {
        optionPassword = new StringBuilder(kettlePassword);
    }
    if (Utils.isEmpty(optionLogfile) && !Utils.isEmpty(optionLogfileOld)) {
        // if the old style of logging name is filled in, and the new one is not
        // overwrite the new by the old
        optionLogfile = optionLogfileOld;
    }
    Map.Entry<KettlePluginException, Future<KettleException>> repositoryRegisterResults = repositoryRegisterFuture.get();
    // It's a singleton map with one key-value pair (a Pair collection)
    KettlePluginException repositoryRegisterException = repositoryRegisterResults.getKey();
    if (repositoryRegisterException != null) {
        throw repositoryRegisterException;
    }
    Future<KettleException> kettleInitFuture = repositoryRegisterResults.getValue();
    if (!Utils.isEmpty(optionLogfile)) {
        fileAppender = new FileLoggingEventListener(optionLogfile.toString(), true);
        KettleLogStore.getAppender().addLoggingEventListener(fileAppender);
    } else {
        fileAppender = null;
    }
    if (!Utils.isEmpty(optionLoglevel)) {
        log.setLogLevel(LogLevel.getLogLevelForCode(optionLoglevel.toString()));
        log.logMinimal(BaseMessages.getString(PKG, "Kitchen.Log.LogLevel", log.getLogLevel().getDescription()));
    }
    // Start the action...
    // 
    int returnCode = CommandExecutorCodes.Kitchen.SUCCESS.getCode();
    try {
        if (getCommandExecutor() == null) {
            // init
            setCommandExecutor(new KitchenCommandExecutor(PKG, log, kettleInitFuture));
        }
        if (!Utils.isEmpty(optionVersion)) {
            getCommandExecutor().printVersion();
            if (a.length == 1) {
                exitJVM(CommandExecutorCodes.Pan.KETTLE_VERSION_PRINT.getCode());
            }
        }
        returnCode = getCommandExecutor().execute(optionRepname.toString(), optionNorep.toString(), optionUsername.toString(), optionTrustUser.toString(), optionPassword.toString(), optionDirname.toString(), optionFilename.toString(), optionJobname.toString(), optionListjobs.toString(), optionListdir.toString(), optionExport.toString(), initialDir.toString(), optionListrep.toString(), optionListParam.toString(), optionParams, customOptions, args.toArray(new String[args.size()]));
    } catch (Throwable t) {
        t.printStackTrace();
        returnCode = CommandExecutorCodes.Pan.UNEXPECTED_ERROR.getCode();
    } finally {
        if (fileAppender != null) {
            fileAppender.close();
            KettleLogStore.getAppender().removeLoggingEventListener(fileAppender);
        }
    }
    exitJVM(returnCode);
}
Also used : KettleException(org.pentaho.di.core.exception.KettleException) NamedParams(org.pentaho.di.core.parameters.NamedParams) RepositoryPluginType(org.pentaho.di.core.plugins.RepositoryPluginType) ArrayList(java.util.ArrayList) Callable(java.util.concurrent.Callable) AbstractMap(java.util.AbstractMap) RepositoryMeta(org.pentaho.di.repository.RepositoryMeta) CommandLineOption(org.pentaho.di.pan.CommandLineOption) Job(org.pentaho.di.job.Job) NamedParamsDefault(org.pentaho.di.core.parameters.NamedParamsDefault) KettlePluginException(org.pentaho.di.core.exception.KettlePluginException) FileLoggingEventListener(org.pentaho.di.core.logging.FileLoggingEventListener) LogChannel(org.pentaho.di.core.logging.LogChannel) DelegatingMetaStore(org.pentaho.metastore.stores.delegate.DelegatingMetaStore) KettleException(org.pentaho.di.core.exception.KettleException) ExecutionException(java.util.concurrent.ExecutionException) KettlePluginException(org.pentaho.di.core.exception.KettlePluginException) ExecutorService(java.util.concurrent.ExecutorService) Future(java.util.concurrent.Future) LogChannelInterface(org.pentaho.di.core.logging.LogChannelInterface) Map(java.util.Map) AbstractMap(java.util.AbstractMap)

Example 29 with LogChannel

use of org.pentaho.di.core.logging.LogChannel in project pentaho-kettle by pentaho.

the class JarfileGenerator method generateJarFile.

public static final void generateJarFile(TransMeta transMeta) {
    log = new LogChannel("Jar file generator");
    KettleDependencies deps = new KettleDependencies(transMeta);
    File kar = new File("kar");
    if (kar.exists()) {
        log.logBasic("Jar generator", "Removing directory: " + kar.getPath());
        deleteDirectory(kar);
    }
    kar.mkdir();
    String filename = "kettle-engine-3.0.jar";
    if (!Utils.isEmpty(transMeta.getFilename())) {
        filename = Const.replace(transMeta.getFilename(), " ", "_").toLowerCase() + ".kar";
    }
    File karFile = new File(filename);
    try {
        // The manifest file
        String strManifest = "";
        strManifest += "Manifest-Version: 1.0" + Const.CR;
        strManifest += "Created-By: Kettle version " + BuildVersion.getInstance().getVersion() + Const.CR;
        strManifest += Attributes.Name.MAIN_CLASS.toString() + ": " + (JarPan.class.getName()) + Const.CR;
        // Create a new manifest file in the root.
        File manifestFile = new File(kar.getPath() + "/" + "manifest.mf");
        FileOutputStream fos = new FileOutputStream(manifestFile);
        fos.write(strManifest.getBytes());
        fos.close();
        log.logBasic("Jar generator", "Wrote manifest file: " + manifestFile.getPath());
        // The transformation, also in the kar directory...
        String strTrans = XMLHandler.getXMLHeader(Const.XML_ENCODING) + transMeta.getXML();
        File transFile = new File(kar.getPath() + "/" + TRANSFORMATION_FILENAME);
        fos = new FileOutputStream(transFile);
        fos.write(strTrans.getBytes(Const.XML_ENCODING));
        fos.close();
        log.logBasic("Jar generator", "Wrote transformation file: " + transFile.getPath());
        // Execute the jar command...
        executeJarCommand(kar, karFile, new File("manifest.mf"), new File(TRANSFORMATION_FILENAME), deps.getLibraryFiles());
    } catch (Exception e) {
        log.logError(JarfileGenerator.class.getName(), "Error zipping files into archive [" + karFile.getPath() + "] : " + e.toString());
        log.logError(JarfileGenerator.class.getName(), Const.getStackTracker(e));
    }
}
Also used : FileOutputStream(java.io.FileOutputStream) LogChannel(org.pentaho.di.core.logging.LogChannel) File(java.io.File) IOException(java.io.IOException)

Example 30 with LogChannel

use of org.pentaho.di.core.logging.LogChannel in project pentaho-kettle by pentaho.

the class Trans method setParent.

/**
 * Sets the parent logging object.
 *
 * @param parent
 *          the new parent
 */
public void setParent(LoggingObjectInterface parent) {
    this.parent = parent;
    this.log = new LogChannel(this, parent);
    this.logLevel = log.getLogLevel();
    this.containerObjectId = log.getContainerObjectId();
    if (log.isDetailed()) {
        log.logDetailed(BaseMessages.getString(PKG, "Trans.Log.TransformationIsPreloaded"));
    }
    if (log.isDebug()) {
        log.logDebug(BaseMessages.getString(PKG, "Trans.Log.NumberOfStepsToRun", String.valueOf(transMeta.nrSteps()), String.valueOf(transMeta.nrTransHops())));
    }
}
Also used : LogChannel(org.pentaho.di.core.logging.LogChannel)

Aggregations

LogChannel (org.pentaho.di.core.logging.LogChannel)44 TransMeta (org.pentaho.di.trans.TransMeta)17 TransExecutionConfiguration (org.pentaho.di.trans.TransExecutionConfiguration)13 TransSplitter (org.pentaho.di.trans.cluster.TransSplitter)13 Test (org.junit.Test)8 File (java.io.File)6 LogChannelInterface (org.pentaho.di.core.logging.LogChannelInterface)6 Before (org.junit.Before)4 Repository (org.pentaho.di.repository.Repository)4 Node (org.w3c.dom.Node)4 IOException (java.io.IOException)3 FileObject (org.apache.commons.vfs2.FileObject)3 InvocationOnMock (org.mockito.invocation.InvocationOnMock)3 SlaveServer (org.pentaho.di.cluster.SlaveServer)3 FileInputStream (java.io.FileInputStream)2 InputStream (java.io.InputStream)2 ArrayList (java.util.ArrayList)2 Display (org.eclipse.swt.widgets.Display)2 Matchers.anyObject (org.mockito.Matchers.anyObject)2 KettleException (org.pentaho.di.core.exception.KettleException)2