You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by bf...@apache.org on 2012/03/19 19:41:31 UTC
svn commit: r1302593 - in /oodt/trunk/pge/src:
main/java/org/apache/oodt/cas/pge/ main/java/org/apache/oodt/cas/pge/logging/
main/java/org/apache/oodt/cas/pge/metadata/ test/org/apache/oodt/cas/pge/
test/org/apache/oodt/cas/pge/logging/
Author: bfoster
Date: Mon Mar 19 18:41:31 2012
New Revision: 1302593
URL: http://svn.apache.org/viewvc?rev=1302593&view=rev
Log:
Port LoggerOutputStream in CAS-PGE to existing LoggerOutputStream in oodt-commons io package
---------------
OODT-423
Removed:
oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/logging/
oodt/trunk/pge/src/test/org/apache/oodt/cas/pge/logging/
Modified:
oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java
oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/metadata/PgeTaskMetKeys.java
oodt/trunk/pge/src/test/org/apache/oodt/cas/pge/TestPGETaskInstance.java
Modified: oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java
URL: http://svn.apache.org/viewvc/oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java?rev=1302593&r1=1302592&r2=1302593&view=diff
==============================================================================
--- oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java (original)
+++ oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java Mon Mar 19 18:41:31 2012
@@ -25,6 +25,7 @@ import static org.apache.oodt.cas.pge.me
import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.DUMP_METADATA;
import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.INGEST_CLIENT_TRANSFER_SERVICE_FACTORY;
import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.INGEST_FILE_MANAGER_URL;
+import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.LOG_FILENAME_PATTERN;
import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.MET_FILE_EXT;
import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.NAME;
import static org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys.PGE_CONFIG_BUILDER;
@@ -40,15 +41,14 @@ import static org.apache.oodt.cas.pge.me
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
import java.net.URL;
-import java.nio.CharBuffer;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
-import java.util.logging.Handler;
+import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
import java.util.regex.Pattern;
//Apache imports
@@ -68,8 +68,6 @@ import org.apache.oodt.cas.pge.config.Pg
import org.apache.oodt.cas.pge.config.RegExprOutputFiles;
import org.apache.oodt.cas.pge.config.RenamingConv;
import org.apache.oodt.cas.pge.config.XmlFilePgeConfigBuilder;
-import org.apache.oodt.cas.pge.logging.PgeLogHandler;
-import org.apache.oodt.cas.pge.logging.PgeLogRecord;
import org.apache.oodt.cas.pge.metadata.PgeMetadata;
import org.apache.oodt.cas.pge.metadata.PgeTaskMetKeys;
import org.apache.oodt.cas.pge.writers.PcsMetFileWriter;
@@ -98,11 +96,11 @@ import com.google.common.collect.Lists;
*/
public class PGETaskInstance implements WorkflowTaskInstance {
+ protected Logger logger;
protected XmlRpcWorkflowManagerClient wm;
protected String workflowInstId;
protected PgeMetadata pgeMetadata;
protected PgeConfig pgeConfig;
- protected Handler logHandler;
protected PGETaskInstance() {}
@@ -115,9 +113,7 @@ public class PGETaskInstance implements
runPropertyAdders();
wm = createWorkflowManagerClient();
workflowInstId = getWorkflowInstanceId();
-
- // Initialize Logger.
- initializePgeLogger();
+ logger = createLogger();
// Write out PgeMetadata.
dumpMetadataIfRequested();
@@ -140,52 +136,45 @@ public class PGETaskInstance implements
// Commit dynamic metadata.
updateDynamicMetadata();
} catch (Exception e) {
- log(Level.SEVERE, "PGETask FAILED!!! : " + e.getMessage(), e);
+ logger.log(Level.SEVERE, "PGETask FAILED!!! : " + e.getMessage(), e);
throw new WorkflowTaskInstanceException("PGETask FAILED!!! : "
+ e.getMessage(), e);
- } finally {
- try { closePgeLogger(); } catch (Exception e) {}
}
}
protected void updateStatus(String status) throws Exception {
- log(Level.INFO, "Updating status to workflow as [" + status + "]");
+ logger.log(Level.INFO, "Updating status to workflow as [" + status + "]");
wm.updateWorkflowInstanceStatus(workflowInstId, status);
}
- protected void initializePgeLogger() throws Exception {
+ protected Logger createLogger() throws Exception {
File logDir = new File(pgeConfig.getExeDir(), "logs");
if (!(logDir.exists() || logDir.mkdirs())) {
throw new Exception("mkdirs for logs directory return false");
}
- logHandler = new PgeLogHandler(workflowInstId,
- new FileOutputStream(new File(logDir, createLogFileName())));
- Logger.getLogger(PGETaskInstance.class.getName()).addHandler(logHandler);
+
+ Logger logger = Logger.getLogger(PGETaskInstance.class.getName()
+ + "." + workflowInstId);
+ FileHandler handler = new FileHandler(
+ new File(logDir, createLogFileName()).getAbsolutePath());
+ handler.setFormatter(new SimpleFormatter());
+ logger.addHandler(handler);
+ return logger;
}
protected String createLogFileName() throws Exception {
- return pgeMetadata.getMetadata(NAME) + "." + System.currentTimeMillis()
+ String filenamePattern = pgeMetadata.getMetadata(LOG_FILENAME_PATTERN);
+ if (filenamePattern != null) {
+ return filenamePattern;
+ } else {
+ return pgeMetadata.getMetadata(NAME) + "." + System.currentTimeMillis()
+ ".log";
- }
-
- protected void closePgeLogger() throws Exception {
- logHandler.close();
- Logger.getLogger(PGETaskInstance.class.getName()).removeHandler(logHandler);
- }
-
- protected void log(Level level, String message) {
- Logger.getLogger(PGETaskInstance.class.getName()).log(
- new PgeLogRecord(workflowInstId, level, message));
- }
-
- protected void log(Level level, String message, Throwable t) {
- Logger.getLogger(PGETaskInstance.class.getName()).log(
- new PgeLogRecord(workflowInstId, level, message, t));
+ }
}
protected PgeMetadata createPgeMetadata(Metadata dynMetadata,
WorkflowTaskConfiguration config) throws Exception {
- log(Level.INFO,
+ logger.log(Level.INFO,
"Converting workflow configuration to static metadata...");
Metadata staticMetadata = new Metadata();
for (Object objKey : config.getProperties().keySet()) {
@@ -196,19 +185,19 @@ public class PGETaskInstance implements
Splitter.on(",").trimResults()
.omitEmptyStrings()
.split(config.getProperty(key)));
- log(Level.FINEST, "Adding static metadata: key = [" + key
+ logger.log(Level.FINEST, "Adding static metadata: key = [" + key
+ "] value = " + values);
staticMetadata.addMetadata(key, values);
} else {
String value = config.getProperty(key);
- log(Level.FINEST, "Adding static metadata: key = [" + key
+ logger.log(Level.FINEST, "Adding static metadata: key = [" + key
+ "] value = [" + value + "]");
staticMetadata.addMetadata(key, value);
}
}
- log(Level.INFO, "Loading workflow context metadata...");
+ logger.log(Level.INFO, "Loading workflow context metadata...");
for (String key : dynMetadata.getAllKeys()) {
- log(Level.FINEST,
+ logger.log(Level.FINEST,
"Adding dynamic metadata: key = [" + key + "] value = "
+ dynMetadata.getAllMetadata(key));
}
@@ -216,15 +205,15 @@ public class PGETaskInstance implements
}
protected PgeConfig createPgeConfig() throws Exception {
- log(Level.INFO, "Create PgeConfig...");
+ logger.log(Level.INFO, "Create PgeConfig...");
String pgeConfigBuilderClass = pgeMetadata
.getMetadata(PGE_CONFIG_BUILDER);
if (pgeConfigBuilderClass != null) {
- log(Level.INFO, "Using PgeConfigBuilder: " + pgeConfigBuilderClass);
+ logger.log(Level.INFO, "Using PgeConfigBuilder: " + pgeConfigBuilderClass);
return ((PgeConfigBuilder) Class.forName(pgeConfigBuilderClass)
.newInstance()).build(pgeMetadata);
} else {
- log(Level.INFO, "Using default PgeConfigBuilder: "
+ logger.log(Level.INFO, "Using default PgeConfigBuilder: "
+ XmlFilePgeConfigBuilder.class.getCanonicalName());
return new XmlFilePgeConfigBuilder().build(pgeMetadata);
}
@@ -232,7 +221,7 @@ public class PGETaskInstance implements
protected void runPropertyAdders() throws Exception {
try {
- log(Level.INFO, "Loading/Running property adders...");
+ logger.log(Level.INFO, "Loading/Running property adders...");
List<String> propertyAdders = pgeMetadata
.getAllMetadata(PROPERTY_ADDERS);
if (propertyAdders != null) {
@@ -240,7 +229,7 @@ public class PGETaskInstance implements
runPropertyAdder(loadPropertyAdder(propertyAdder));
}
} else {
- log(Level.INFO, "No property adders specified");
+ logger.log(Level.INFO, "No property adders specified");
}
} catch (Exception e) {
throw new Exception("Failed to instanciate/run Property Adders : "
@@ -250,14 +239,14 @@ public class PGETaskInstance implements
protected ConfigFilePropertyAdder loadPropertyAdder(
String propertyAdderClasspath) throws Exception {
- log(Level.FINE, "Loading property adder: " + propertyAdderClasspath);
+ logger.log(Level.FINE, "Loading property adder: " + propertyAdderClasspath);
return (ConfigFilePropertyAdder) Class.forName(propertyAdderClasspath)
.newInstance();
}
protected void runPropertyAdder(ConfigFilePropertyAdder propAdder)
throws Exception {
- log(Level.INFO, "Running property adder: "
+ logger.log(Level.INFO, "Running property adder: "
+ propAdder.getClass().getCanonicalName());
propAdder.addConfigProperties(pgeMetadata,
pgeConfig.getPropertyAdderCustomArgs());
@@ -266,14 +255,14 @@ public class PGETaskInstance implements
protected XmlRpcWorkflowManagerClient createWorkflowManagerClient()
throws Exception {
String url = pgeMetadata.getMetadata(WORKFLOW_MANAGER_URL);
- log(Level.INFO, "Creating WorkflowManager client for url [" + url + "]");
+ logger.log(Level.INFO, "Creating WorkflowManager client for url [" + url + "]");
Validate.notNull(url, "Must specify " + WORKFLOW_MANAGER_URL);
return new XmlRpcWorkflowManagerClient(new URL(url));
}
protected String getWorkflowInstanceId() throws Exception {
String instanceId = pgeMetadata.getMetadata(CoreMetKeys.WORKFLOW_INST_ID);
- log(Level.INFO, "Workflow instanceId is [" + instanceId + "]");
+ logger.log(Level.INFO, "Workflow instanceId is [" + instanceId + "]");
Validate.notNull(instanceId, "Must specify "
+ CoreMetKeys.WORKFLOW_INST_ID);
return instanceId;
@@ -298,7 +287,7 @@ public class PGETaskInstance implements
}
protected void createExeDir() throws Exception {
- log(Level.INFO, "Creating PGE execution working directory: ["
+ logger.log(Level.INFO, "Creating PGE execution working directory: ["
+ pgeConfig.getExeDir() + "]");
File executionDir = new File(pgeConfig.getExeDir());
if (!(executionDir.exists() || executionDir.mkdirs())) {
@@ -310,7 +299,7 @@ public class PGETaskInstance implements
protected void createOuputDirsIfRequested() throws Exception {
for (OutputDir outputDir : pgeConfig.getOuputDirs()) {
if (outputDir.isCreateBeforeExe()) {
- log(Level.INFO, "Creating PGE file ouput directory: ["
+ logger.log(Level.INFO, "Creating PGE file ouput directory: ["
+ outputDir.getPath() + "]");
File dir = new File(outputDir.getPath());
if (!(dir.exists() || dir.mkdirs())) {
@@ -322,18 +311,18 @@ public class PGETaskInstance implements
}
protected void createSciPgeConfigFiles() throws Exception {
- log(Level.INFO, "Starting creation of science PGE files...");
+ logger.log(Level.INFO, "Starting creation of science PGE files...");
for (DynamicConfigFile dynamicConfigFile : pgeConfig
.getDynamicConfigFiles()) {
createSciPgeConfigFile(dynamicConfigFile);
}
- log(Level.INFO, "Successfully wrote all science PGE files!");
+ logger.log(Level.INFO, "Successfully wrote all science PGE files!");
}
protected void createSciPgeConfigFile(DynamicConfigFile dynamicConfigFile)
throws Exception {
Validate.notNull(dynamicConfigFile, "dynamicConfigFile cannot be null");
- log(Level.FINE, "Starting creation of science PGE file ["
+ logger.log(Level.FINE, "Starting creation of science PGE file ["
+ dynamicConfigFile.getFilePath() + "]...");
// Create parent directory if it doesn't exist.
@@ -345,14 +334,14 @@ public class PGETaskInstance implements
}
// Load writer and write file.
- log(Level.FINE, "Loading writer class for science PGE file ["
+ logger.log(Level.FINE, "Loading writer class for science PGE file ["
+ dynamicConfigFile.getFilePath() + "]...");
SciPgeConfigFileWriter writer = (SciPgeConfigFileWriter) Class.forName(
dynamicConfigFile.getWriterClass()).newInstance();
- log(Level.FINE, "Loaded writer [" + writer.getClass().getCanonicalName()
+ logger.log(Level.FINE, "Loaded writer [" + writer.getClass().getCanonicalName()
+ "] for science PGE file [" + dynamicConfigFile.getFilePath()
+ "]...");
- log(Level.INFO,
+ logger.log(Level.INFO,
"Writing science PGE file [" + dynamicConfigFile.getFilePath()
+ "]...");
File configFile = writer.createConfigFile(dynamicConfigFile.getFilePath(),
@@ -364,17 +353,17 @@ public class PGETaskInstance implements
}
protected void generateMetadataForProducts() throws Exception {
- log(Level.INFO, "Generating metadata for products...");
+ logger.log(Level.INFO, "Generating metadata for products...");
for (OutputDir outputDir : pgeConfig.getOuputDirs()) {
- log(Level.FINE, "Looking for products in output directory ["
+ logger.log(Level.FINE, "Looking for products in output directory ["
+ outputDir.getPath() + "]");
File[] createdFiles = new File(outputDir.getPath()).listFiles();
- log(Level.FINE, "Found files: " + Lists.newArrayList(createdFiles));
+ logger.log(Level.FINE, "Found files: " + Lists.newArrayList(createdFiles));
for (File createdFile : createdFiles) {
- log(Level.FINE, "Inspecting file [" + createdFile + "]");
+ logger.log(Level.FINE, "Inspecting file [" + createdFile + "]");
List<RegExprOutputFiles> regexRules = findMatchingRegexRules(
createdFile, outputDir);
if (!regexRules.isEmpty()) {
@@ -390,7 +379,7 @@ public class PGETaskInstance implements
writeMetadataFile(productMetadata, createdFile.getAbsolutePath()
+ "." + pgeMetadata.getMetadata(MET_FILE_EXT));
} else {
- log(Level.FINE, "Ignoring file [" + createdFile
+ logger.log(Level.FINE, "Ignoring file [" + createdFile
+ "] because it doesn't matches any product regex rules"
+ " for this directory [" + outputDir.getPath() + "]");
}
@@ -400,13 +389,13 @@ public class PGETaskInstance implements
protected List<RegExprOutputFiles> findMatchingRegexRules(File file,
OutputDir outputDir) throws Exception {
- log(Level.FINE, "Checking file [" + file
+ logger.log(Level.FINE, "Checking file [" + file
+ "] against regex rules for output directory ["
+ outputDir.getPath() + "]");
List<RegExprOutputFiles> regexRules = Lists.newArrayList();
for (RegExprOutputFiles regExprFiles : outputDir.getRegExprOutputFiles()) {
if (Pattern.matches(regExprFiles.getRegExp(), file.getName())) {
- log(Level.FINE, "File [" + file + "] matched regex rule ["
+ logger.log(Level.FINE, "File [" + file + "] matched regex rule ["
+ regExprFiles.getRegExp() + "]");
regexRules.add(regExprFiles);
}
@@ -416,12 +405,12 @@ public class PGETaskInstance implements
protected Metadata generateMetadataForProduct(
File product, RegExprOutputFiles regexRule) throws Exception {
- log(Level.FINE, "Loading metadata writer ["
+ logger.log(Level.FINE, "Loading metadata writer ["
+ regexRule.getConverterClass() + "] for product [" + product + "]");
PcsMetFileWriter writer = (PcsMetFileWriter) Class.forName(
regexRule.getConverterClass()).newInstance();
if (regexRule.getRenamingConv() != null) {
- log(Level.FINE, "Renaming product [" + product + "]...");
+ logger.log(Level.FINE, "Renaming product [" + product + "]...");
product = renameProduct(product, regexRule.getRenamingConv());
}
return getMetadataForProduct(product, writer, regexRule.getArgs());
@@ -434,7 +423,7 @@ public class PGETaskInstance implements
String newFileName = PathUtils.doDynamicReplacement(
renamingConv.getRenamingString(), curMetadata);
File newFile = new File(product.getParentFile(), newFileName);
- log(Level.INFO, "Renaming product [" + product + "] to ["
+ logger.log(Level.INFO, "Renaming product [" + product + "] to ["
+ newFile + "]");
if (!product.renameTo(newFile)) {
throw new IOException("Renaming returned false");
@@ -444,19 +433,19 @@ public class PGETaskInstance implements
protected Metadata getMetadataForProduct(File product,
PcsMetFileWriter writer, Object[] args) throws Exception {
- log(Level.INFO, "Generating metadata for product [" + product + "]");
+ logger.log(Level.INFO, "Generating metadata for product [" + product + "]");
return writer.getMetadataForFile(product, pgeMetadata, args);
}
protected void writeMetadataFile(Metadata metadata, String toFile)
throws Exception {
- log(Level.INFO, "Writing out metadata file [" + toFile + "]");
+ logger.log(Level.INFO, "Writing out metadata file [" + toFile + "]");
new SerializableMetadata(metadata, "UTF-8", false)
.writeMetadataToXmlStream(new FileOutputStream(toFile));
}
protected ScriptFile buildPgeRunScript() {
- log(Level.FINE,
+ logger.log(Level.FINE,
"Creating PGE run script for shell [" + pgeConfig.getShellType()
+ "] with contents " + pgeConfig.getExeCmds());
ScriptFile sf = new ScriptFile(pgeConfig.getShellType());
@@ -466,23 +455,21 @@ public class PGETaskInstance implements
protected File getScriptPath() {
File script = new File(pgeConfig.getExeDir(), getPgeScriptName());
- log(Level.FINE, "Script file with be written to [" + script + "]");
+ logger.log(Level.FINE, "Script file with be written to [" + script + "]");
return script;
}
protected String getPgeScriptName() {
String pgeScriptName = "sciPgeExeScript_" + pgeMetadata.getMetadata(NAME);
- log(Level.FINE, "Generated script file name [" + pgeScriptName + "]");
+ logger.log(Level.FINE, "Generated script file name [" + pgeScriptName + "]");
return pgeScriptName;
}
protected void runPge() throws Exception {
ScriptFile sf = null;
- OutputStream stdOS = createStdOutLogger();
- OutputStream errOS = createStdErrLogger();
try {
long startTime = System.currentTimeMillis();
- log(Level.INFO, "PGE start time [" + new Date(startTime) + "]");
+ logger.log(Level.INFO, "PGE start time [" + new Date(startTime) + "]");
// create script to run
sf = buildPgeRunScript();
@@ -490,22 +477,21 @@ public class PGETaskInstance implements
// run script and evaluate whether success or failure
updateStatus(RUNNING_PGE.getWorkflowStatusName());
- log(Level.INFO, "Starting execution of PGE...");
+ logger.log(Level.INFO, "Starting execution of PGE...");
if (!wasPgeSuccessful(ExecUtils.callProgram(
- pgeConfig.getShellType() + " " + getScriptPath(),
- stdOS, errOS,
+ pgeConfig.getShellType() + " " + getScriptPath(), logger,
new File(pgeConfig.getExeDir()).getAbsoluteFile()))) {
throw new RuntimeException("Pge didn't finish successfully");
} else {
- log(Level.INFO,
+ logger.log(Level.INFO,
"Successfully completed running: '" + sf.getCommands() + "'");
}
long endTime = System.currentTimeMillis();
- log(Level.INFO, "PGE end time [" + new Date(startTime) + "]");
+ logger.log(Level.INFO, "PGE end time [" + new Date(startTime) + "]");
long runTime = endTime - startTime;
- log(Level.INFO, "PGE runtime in millis [" + runTime + "]");
+ logger.log(Level.INFO, "PGE runtime in millis [" + runTime + "]");
pgeMetadata.replaceMetadata(PGE_RUNTIME, Long.toString(runTime));
@@ -513,26 +499,15 @@ public class PGETaskInstance implements
throw new Exception("Exception when executing PGE commands '"
+ (sf != null ? sf.getCommands() : "NULL") + "' : "
+ e.getMessage(), e);
- } finally {
- try { stdOS.close(); } catch (Exception e) {}
- try { errOS.close(); } catch (Exception e) {}
}
}
- protected LoggerOuputStream createStdOutLogger() {
- return new LoggerOuputStream(Level.INFO);
- }
-
- protected LoggerOuputStream createStdErrLogger() {
- return new LoggerOuputStream(Level.SEVERE);
- }
-
protected boolean wasPgeSuccessful(int returnCode) {
return returnCode == 0;
}
protected ProductCrawler createProductCrawler() throws Exception {
- log(Level.INFO, "Configuring ProductCrawler...");
+ logger.log(Level.INFO, "Configuring ProductCrawler...");
StdProductCrawler crawler = new StdProductCrawler();
crawler.setMetFileExtension(pgeMetadata.getMetadata(MET_FILE_EXT));
crawler.setClientTransferer(pgeMetadata
@@ -558,10 +533,10 @@ public class PGETaskInstance implements
"true") : true;
crawler.setCrawlForDirs(crawlForDirs);
crawler.setNoRecur(!recur);
- log(Level.FINE,
+ logger.log(Level.FINE,
"Passing Workflow Metadata to CAS-Crawler as global metadata . . .");
crawler.setGlobalMetadata(pgeMetadata.asMetadata(PgeMetadata.Type.DYNAMIC));
- log(Level.FINE, "Created ProductCrawler ["
+ logger.log(Level.FINE, "Created ProductCrawler ["
+ crawler.getClass().getCanonicalName() + "]");
return crawler;
}
@@ -578,7 +553,7 @@ public class PGETaskInstance implements
boolean attemptIngestAll = Boolean.parseBoolean(pgeMetadata
.getMetadata(ATTEMPT_INGEST_ALL));
for (File crawlDir : crawlDirs) {
- log(Level.INFO, "Crawling for products in [" + crawlDir + "]");
+ logger.log(Level.INFO, "Crawling for products in [" + crawlDir + "]");
crawler.crawl(crawlDir);
if (!attemptIngestAll) {
verifyIngests(crawler);
@@ -590,7 +565,7 @@ public class PGETaskInstance implements
}
protected void verifyIngests(ProductCrawler crawler) throws Exception {
- log(Level.INFO, "Verifying ingests successful...");
+ logger.log(Level.INFO, "Verifying ingests successful...");
boolean ingestsSuccess = true;
String exceptionMsg = "";
for (IngestStatus status : crawler.getIngestStatus()) {
@@ -601,7 +576,7 @@ public class PGETaskInstance implements
+ status.getResult() + "',msg='" + status.getMessage() + "']";
ingestsSuccess = false;
} else if (!status.getResult().equals(IngestStatus.Result.SUCCESS)) {
- log(Level.WARNING, "Product was not ingested [file='"
+ logger.log(Level.WARNING, "Product was not ingested [file='"
+ status.getProduct().getAbsolutePath() + "',result='"
+ status.getResult() + "',msg='" + status.getMessage() + "']");
}
@@ -609,7 +584,7 @@ public class PGETaskInstance implements
if (!ingestsSuccess) {
throw new Exception(exceptionMsg);
} else {
- log(Level.INFO, "Ingests were successful");
+ logger.log(Level.INFO, "Ingests were successful");
}
}
@@ -618,50 +593,4 @@ public class PGETaskInstance implements
wm.updateMetadataForWorkflow(workflowInstId,
pgeMetadata.asMetadata(PgeMetadata.Type.DYNAMIC));
}
-
- /**
- * OutputStream which wraps {@link PGETaskInstance}'s
- * {@link PGETaskInstance#log(Level, String)} method.
- *
- * @author bfoster (Brian Foster)
- */
- protected class LoggerOuputStream extends OutputStream {
-
- private CharBuffer buffer;
- private Level level;
-
- public LoggerOuputStream(Level level) {
- this(level, 512);
- }
-
- public LoggerOuputStream(Level level, int bufferSize) {
- this.level = level;
- buffer = CharBuffer.wrap(new char[bufferSize]);
- }
-
- @Override
- public void write(int b) throws IOException {
- if (!buffer.hasRemaining()) {
- flush();
- }
- buffer.put((char) b);
- }
-
- @Override
- public void flush() {
- if (buffer.position() > 0) {
- char[] flushContext = new char[buffer.position()];
- System.arraycopy(buffer.array(), 0, flushContext, 0,
- buffer.position());
- log(level, new String(flushContext));
- buffer.clear();
- }
- }
-
- @Override
- public void close() throws IOException {
- flush();
- super.close();
- }
- }
}
Modified: oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/metadata/PgeTaskMetKeys.java
URL: http://svn.apache.org/viewvc/oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/metadata/PgeTaskMetKeys.java?rev=1302593&r1=1302592&r2=1302593&view=diff
==============================================================================
--- oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/metadata/PgeTaskMetKeys.java (original)
+++ oodt/trunk/pge/src/main/java/org/apache/oodt/cas/pge/metadata/PgeTaskMetKeys.java Mon Mar 19 18:41:31 2012
@@ -45,6 +45,12 @@ public enum PgeTaskMetKeys {
"PGETask/PgeConfigBuilder",
"PGETask/PgeConfigBuilder"),
/**
+ * The java logger {@link FileHandler} pattern (only for filename though).
+ */
+ LOG_FILENAME_PATTERN(
+ "PGETask/LogFilenamePattern",
+ "PGETask/LogFilenamePattern"),
+ /**
* List of {@link ConfigFilePropertyAdder}s classpaths to be run.
*/
PROPERTY_ADDERS(
Modified: oodt/trunk/pge/src/test/org/apache/oodt/cas/pge/TestPGETaskInstance.java
URL: http://svn.apache.org/viewvc/oodt/trunk/pge/src/test/org/apache/oodt/cas/pge/TestPGETaskInstance.java?rev=1302593&r1=1302592&r2=1302593&view=diff
==============================================================================
--- oodt/trunk/pge/src/test/org/apache/oodt/cas/pge/TestPGETaskInstance.java (original)
+++ oodt/trunk/pge/src/test/org/apache/oodt/cas/pge/TestPGETaskInstance.java Mon Mar 19 18:41:31 2012
@@ -38,7 +38,6 @@ import org.apache.commons.io.FileUtils;
//OODT imports
import org.apache.oodt.cas.metadata.Metadata;
import org.apache.oodt.cas.pge.PGETaskInstance;
-import org.apache.oodt.cas.pge.PGETaskInstance.LoggerOuputStream;
import org.apache.oodt.cas.pge.config.DynamicConfigFile;
import org.apache.oodt.cas.pge.config.MockPgeConfigBuilder;
import org.apache.oodt.cas.pge.config.OutputDir;
@@ -65,14 +64,9 @@ import junit.framework.TestCase;
*/
public class TestPGETaskInstance extends TestCase {
- private List<PGETaskInstance> pgeTasks = Lists.newArrayList();
private List<File> tmpDirs = Lists.newArrayList();
public void tearDown() throws Exception {
- for (PGETaskInstance pgeTask : pgeTasks) {
- pgeTask.closePgeLogger();
- }
- pgeTasks.clear();
for (File tmpDir : tmpDirs) {
FileUtils.forceDelete(tmpDir);
}
@@ -160,55 +154,26 @@ public class TestPGETaskInstance extends
@SuppressWarnings("unchecked") // FileUtils.readLines cast to List<String>
public void testLogger() throws Exception {
- File tmpFile = File.createTempFile("bogus", "bogus");
- File tmpDir = tmpFile.getParentFile();
- tmpFile.delete();
- File tmpDir3 = new File(tmpDir, UUID.randomUUID().toString());
- assertTrue(tmpDir3.mkdirs());
-
PGETaskInstance pgeTask1 = createTestInstance();
- pgeTask1.log(Level.INFO, "pge1 message1");
- pgeTask1.log(Level.INFO, "pge1 message2");
- pgeTask1.log(Level.INFO, "pge1 message3");
- pgeTask1.closePgeLogger();
+ PGETaskInstance pgeTask2 = createTestInstance();
+
+ pgeTask1.logger.log(Level.INFO, "pge1 message1");
+ pgeTask1.logger.log(Level.INFO, "pge1 message2");
+ pgeTask2.logger.log(Level.SEVERE, "pge2 message1");
+ pgeTask1.logger.log(Level.INFO, "pge1 message3");
+
+ pgeTask1.logger.getHandlers()[0].flush();
+ pgeTask2.logger.getHandlers()[0].flush();
List<String> messages = FileUtils.readLines(
new File(pgeTask1.pgeConfig.getExeDir() + "/logs").listFiles()[0],
"UTF-8");
assertEquals("INFO: pge1 message1", messages.get(1));
assertEquals("INFO: pge1 message2", messages.get(3));
assertEquals("INFO: pge1 message3", messages.get(5));
-
- PGETaskInstance pgeTask2 = createTestInstance();
- pgeTask2.log(Level.SEVERE, "pge2 message1");
- pgeTask2.closePgeLogger();
messages = FileUtils.readLines(new File(pgeTask2.pgeConfig.getExeDir()
+ "/logs").listFiles()[0], "UTF-8");
+ System.out.println(messages);
assertEquals("SEVERE: pge2 message1", messages.get(1));
-
- PGETaskInstance pgeTask3 = new PGETaskInstance() {
- @Override
- protected LoggerOuputStream createStdOutLogger() {
- return new LoggerOuputStream(Level.INFO, 10);
- }
- };
- pgeTask3.workflowInstId = "1234";
- pgeTask3.pgeMetadata = new PgeMetadata();
- pgeTask3.pgeConfig = new PgeConfig();
- pgeTask3.pgeConfig.setExeDir(tmpDir3.getAbsolutePath());
- pgeTask3.initializePgeLogger();
- LoggerOuputStream los = pgeTask3.createStdOutLogger();
- los.write("This is a test write to a log file".getBytes());
- los.close();
- pgeTask3.closePgeLogger();
- messages = FileUtils.readLines(new File(tmpDir3, "logs").listFiles()[0],
- "UTF-8");
- assertEquals(8, messages.size());
- assertEquals("INFO: This is a ", messages.get(1));
- assertEquals("INFO: test write", messages.get(3));
- assertEquals("INFO: to a log ", messages.get(5));
- assertEquals("INFO: file", messages.get(7));
-
- FileUtils.forceDelete(tmpDir3);
}
public void testUpdateStatus() throws Exception {
@@ -360,8 +325,7 @@ public class TestPGETaskInstance extends
pgeTask.pgeConfig = new PgeConfig();
File exeDir = createTmpDir(workflowInstId);
pgeTask.pgeConfig.setExeDir(exeDir.getAbsolutePath());
- pgeTask.initializePgeLogger();
- pgeTasks.add(pgeTask);
+ pgeTask.logger = pgeTask.createLogger();
return pgeTask;
}