From e07d6fa85446f35fc5d8b902d17699903638f845 Mon Sep 17 00:00:00 2001 From: CurtisHx Date: Sat, 25 Jul 2020 06:51:24 -0400 Subject: [PATCH] Log build information on startup (#878) --- .../github/dsheirer/log/ApplicationLog.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/io/github/dsheirer/log/ApplicationLog.java b/src/main/java/io/github/dsheirer/log/ApplicationLog.java index a4b8bbaf..4d15bcbf 100644 --- a/src/main/java/io/github/dsheirer/log/ApplicationLog.java +++ b/src/main/java/io/github/dsheirer/log/ApplicationLog.java @@ -34,7 +34,12 @@ import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.net.URL; import java.nio.file.Path; +import java.util.Enumeration; +import java.util.jar.Attributes; +import java.util.jar.Manifest; /** * Logback and SLF4j logging implementation. @@ -126,6 +131,17 @@ public class ApplicationLog ((ch.qos.logback.classic.Logger)logger).addAppender(mRollingFileAppender); // StatusPrinter.print(loggerContext); + Attributes atts = findManifestAttributes(); + if (atts != null) { + mLog.info("SDRTrunk Version : " + atts.getValue("Implementation-Version")); + mLog.info("Gradle Version : " + atts.getValue("Created-By")); + mLog.info("Build Timestamp : " + atts.getValue("Build-Timestamp")); + mLog.info("Build-JDK : " + atts.getValue("Build-JDK")); + mLog.info("Build OS : " + atts.getValue("Build-OS")); + } + else{ + mLog.info("Failed to find build information."); + } mLog.info(""); mLog.info("*******************************************************************"); @@ -163,4 +179,25 @@ public class ApplicationLog mRollingFileAppender = null; } } + + private Attributes findManifestAttributes() { + try { + Enumeration resources = getClass().getClassLoader().getResources("META-INF/MANIFEST.MF"); + while (resources.hasMoreElements()) { + try { + Manifest manifest = new Manifest(resources.nextElement().openStream()); + Attributes atts = manifest.getMainAttributes(); + Boolean hasTitle = atts.containsValue("sdrtrunk project"); + if (hasTitle) { + return atts; + } + } catch (IOException E) { + return null; + } + } + } catch (Exception ex) { + return null; + } + return null; + } }