From f578691c25492de3ca8cf53a6ec29631f175be7b Mon Sep 17 00:00:00 2001 From: Jan-Niclas Loosen Date: Tue, 28 Oct 2025 15:32:34 +0100 Subject: [PATCH] Finish log4j implementation --- Project-01/uap25-pro01-tram/build.sh | 11 +++++-- Project-01/uap25-pro01-tram/jar/tram.jar | Bin 3951609 -> 3952330 bytes .../uap25-pro01-tram/resources/log4j2.xml | 17 +++++++++++ .../st/uap/w25/tram/AbstractMachine.java | 16 +++-------- .../st/uap/w25/tram/LoggedMachine.java | 19 +++++++----- .../src/de/unitrier/st/uap/w25/tram/Main.java | 27 +++++++++--------- 6 files changed, 55 insertions(+), 35 deletions(-) create mode 100644 Project-01/uap25-pro01-tram/resources/log4j2.xml diff --git a/Project-01/uap25-pro01-tram/build.sh b/Project-01/uap25-pro01-tram/build.sh index ea10227..9b0785f 100644 --- a/Project-01/uap25-pro01-tram/build.sh +++ b/Project-01/uap25-pro01-tram/build.sh @@ -25,13 +25,18 @@ if [ -d "$LIB" ]; then done fi -# 3. Create manifest +# 3. Copy resources (including log4j2.xml) into the JAR +if [ -d "resources" ]; then + cp -r resources/* "$TMP/" +fi + +# 4. Create manifest echo "Main-Class: $MAIN_CLASS" > "$TMP/MANIFEST.MF" -# 4. Package into single jar +# 5. Package into single jar jar cfm "$OUT/$JAR_NAME" "$TMP/MANIFEST.MF" -C "$TMP" . -# 5. Clean temporary files +# 6. Clean temporary files rm -rf "$TMP" echo "Built: $OUT/$JAR_NAME" diff --git a/Project-01/uap25-pro01-tram/jar/tram.jar b/Project-01/uap25-pro01-tram/jar/tram.jar index 9261f40227759dd034c2e88439519b5ced5802b0..749f9bd3ca6289cd7a9224eb96b9436024f37a04 100644 GIT binary patch delta 61401 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 delta 59343 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 K-tSfLS%bfmH&!eF diff --git a/Project-01/uap25-pro01-tram/resources/log4j2.xml b/Project-01/uap25-pro01-tram/resources/log4j2.xml new file mode 100644 index 0000000..c20b519 --- /dev/null +++ b/Project-01/uap25-pro01-tram/resources/log4j2.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachine.java b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachine.java index e68bcd2..c75ac35 100644 --- a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachine.java +++ b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachine.java @@ -29,10 +29,10 @@ public class AbstractMachine { while (!isHalted()) { executeStep(); } - confStr(); } - // Executes single step and returns configuration + + // Executes a single step and returns configuration public void executeStep() { try { Instruction inst = this.prog.get(this.PC); @@ -212,16 +212,8 @@ public class AbstractMachine { // Returns the machine's current configuration as string public String confStr() { - StringBuilder sb = new StringBuilder(); - - sb.append("TOP=").append(this.TOP) - .append(" PC=").append(this.PC) - .append(" PP=").append(this.PP) - .append(" FP=").append(this.FP) - .append("\nSTACK: ") - .append(stackStr()); - - return sb.toString(); + String format = "TOP=%3d | PC=%3d | PP=%3d | FP=%3d | STACK=%s"; + return String.format(format, this.TOP, this.PC, this.PP, this.FP, stackStr()); } // Returns the machine's current stack as string diff --git a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/LoggedMachine.java b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/LoggedMachine.java index c6de517..06d2077 100644 --- a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/LoggedMachine.java +++ b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/LoggedMachine.java @@ -5,23 +5,28 @@ import org.apache.logging.log4j.Logger; public class LoggedMachine extends AbstractMachine { private static final Logger logger = LogManager.getLogger(LoggedMachine.class); - private int stepCounter = 0; + private int stepCounter = -1; public LoggedMachine(Instruction[] prog) { super(prog); } public LoggedMachine(Instruction[] prog, Integer[] stack) { super(prog, stack); } @Override public void execute() { - logger.info("Executing..."); - logger.debug("0: {}", confStr()); - while (!isHalted()) executeStep(); - logger.info("Finished with STACK: {}", stackStr()); + logger.trace(stepStr()); + while (!isHalted()) { + executeStep(); + } } @Override public void executeStep() { - int step = stepCounter++; super.executeStep(); - logger.debug("{}: {}", step, confStr()); + logger.trace(stepStr()); + } + + public String stepStr() { + int step = ++stepCounter; + String format = "Step %3d | TOP=%3d | PC=%3d | PP=%3d | FP=%3d | STACK=%s"; + return String.format(format, step, this.TOP, this.PC, this.PP, this.FP, stackStr()); } } diff --git a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/Main.java b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/Main.java index 35a810c..c75b52c 100644 --- a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/Main.java +++ b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/Main.java @@ -1,6 +1,8 @@ package de.unitrier.st.uap.w25.tram; import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.config.Configurator; import java.nio.file.Files; import java.nio.file.Path; @@ -8,6 +10,8 @@ import java.util.ArrayList; import java.util.List; public final class Main { + private static final Logger log = LogManager.getLogger(Main.class); + private Main() {} static void main(String[] argv) { @@ -29,7 +33,7 @@ public final class Main { if (i + 1 < argv.length) { stackArg = argv[++i]; } else { - System.err.println("Error: missing stack argument after --stack"); + System.err.println("Missing stack argument after --stack"); System.exit(2); } } @@ -43,26 +47,23 @@ public final class Main { // Verify .tram file Path tramFile = Path.of(tramPath); if (!Files.exists(tramFile)) { - System.err.println("Error: file not found -> " + tramPath); + System.err.println("File not found: " + tramPath); System.exit(4); } - // Configure console logging only - if (debug) { - Configurator.setRootLevel(Level.DEBUG); - } else { - Configurator.setRootLevel(Level.INFO); - } - // Parse optional stack Integer[] stack = parseStack(stackArg); - // Load TRAM code and execute + // Load TRAM code Instruction[] code = Assembler.readTRAMCode(tramPath); - LoggedMachine tram = new LoggedMachine(code, stack); - tram.execute(); - System.out.println("Execution complete."); + // Execute and print console output + Logger logger = LogManager.getLogger(Main.class); + AbstractMachine tram = debug ? new LoggedMachine(code, stack) : new AbstractMachine(code, stack); + logger.trace("Start execution..."); + tram.execute(); + logger.trace("Finished execution."); + logger.trace("Final STACK: {}", tram.stackStr()); } // Parse "[1,2,3]" or "1,2,3"