From 91c2d5c287e92f30263e19c2664052ab0621f25b Mon Sep 17 00:00:00 2001 From: "Peter J. Martel" <pmartel@basistech.com> Date: Thu, 27 Oct 2011 15:58:56 -0400 Subject: [PATCH] Added verbose logging JNI method. --- bindings/java/jni/dataModel_SleuthkitJNI.cpp | 19 +++++++++++++++++++ bindings/java/jni/dataModel_SleuthkitJNI.h | 8 ++++++++ .../org/sleuthkit/datamodel/SleuthkitJNI.java | 10 ++++++++++ 3 files changed, 37 insertions(+) diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp index 89cd3e480..d2764cf50 100644 --- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp +++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp @@ -808,6 +808,24 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_getVersionNat(JNIEnv * env, return jversion; } +/* + * Enable verbose logging and redirect stderr to the given log file. + * @param env pointer to java environment this was called from + * @param obj the java object this was called from + * @param logPath The log file to append to. + */ +JNIEXPORT void JNICALL +Java_org_sleuthkit_datamodel_SleuthkitJNI_startVerboseLoggingNat + (JNIEnv * env, jclass obj, jstring logPath) +{ + jboolean isCopy; + char *str8 = (char *) env->GetStringUTFChars(logPath, &isCopy); + if (freopen(str8, "a", stderr) == NULL) { + throwTskError(env, "Couldn't open verbose log file for appending."); + return; + } + tsk_verbose++; +} /* * Create an index for the given database path @@ -825,6 +843,7 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_createLookupIndexNat (JNIEnv * env, TSK_HDB_OPEN_ENUM flags = TSK_HDB_OPEN_NONE; TSK_HDB_INFO * temp = tsk_hdb_open(dbPathT, flags); if (temp == NULL) { + throwTskError(env); return; } diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.h b/bindings/java/jni/dataModel_SleuthkitJNI.h index 0171ec56c..99ac61619 100644 --- a/bindings/java/jni/dataModel_SleuthkitJNI.h +++ b/bindings/java/jni/dataModel_SleuthkitJNI.h @@ -15,6 +15,14 @@ extern "C" { JNIEXPORT jstring JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_getVersionNat (JNIEnv *, jclass); +/* + * Class: org_sleuthkit_datamodel_SleuthkitJNI + * Method: startVerboseLoggingNat + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_startVerboseLoggingNat + (JNIEnv *, jclass, jstring); + /* * Class: org_sleuthkit_datamodel_SleuthkitJNI * Method: newCaseDbNat diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java index c7632db45..f7a59fc8f 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java @@ -25,6 +25,7 @@ public class SleuthkitJNI { //Native methods private static native String getVersionNat(); + private static native void startVerboseLoggingNat(String logPath); //database private static native long newCaseDbNat(String dbPath) throws TskException; @@ -224,6 +225,15 @@ static CaseDbHandle openCaseDb(String path) throws TskException { public static String getVersion(){ return getVersionNat(); } + + /** + * Enable verbose logging and redirect stderr to the given log file. + * @return the version string + */ + public static void startVerboseLogging(String logPath) { + startVerboseLoggingNat(logPath); + } + /** * open the image and return the image info pointer -- GitLab