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);
}
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();
}
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);
}
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));
}
}
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())));
}
}
Aggregations