[Log Utils] Make Non-Static/Modify backend.
@Jonathing ci sta già lavorando.
Dal 15/5/2025.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Currently I am using a custom Logger that allows for using the Log4J backend.
Specifically its the use of the StringFormatterMessageFactory which allows for String.format style log commands:
info("[%3d/%3d] Running test", current, max)
[INFO] [ 1/100] Running Test
As well as exception as last argument support:
info("Failed to download %s", fileName, ex)
[INFO] Failed to download version.json
java.io.IOException: File Not Found
at whatever
I also made it implement Closeable so I can do things like:
try (var l = log.push()) {
log.info("This is indented");
}
log.info("This is not");
At the end of the day it just drills down to log(Level, String) and log(Level, String, Object[]) so it doesn't need to use L4J levels, but allowing things to be instance based would allow the consumer to choose. I specifically care because I like L4J's logging to a file. Tho that can be easily duplicated without L4J.
package net.minecraftforge.ir.util;
import java.io.Closeable;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.message.StringFormatterMessageFactory;
public class Log implements Closeable {
private static Class<?> getCallerClass() {
StackTraceElement ste = Thread.currentThread().getStackTrace()[3];
try {
return Class.forName(ste.getClassName());
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
private final Logger logger;
private int tabLevel = 0;
public Log() {
this(LogManager.getLogger(getCallerClass(), StringFormatterMessageFactory.INSTANCE));
}
public Log(Logger logger) {
this.logger = logger;
}
@Override
public void close() {
tabLevel--;
}
public Log push() {
tabLevel++;
return this;
}
public Log pop() {
tabLevel--;
return this;
}
private String getIndent() {
return " ".repeat(tabLevel);
}
private void log(Level level, String message) {
logger.log(level, getIndent() + message);
}
private void log(Level level, String message, Object[] args) {
logger.log(level, getIndent() + message, args);
}
public void info(String message) {
log(Level.INFO, message);
}
public void info(String message, Object... args) {
log(Level.INFO, message, args);
}
public void warn(String message) {
log(Level.WARN, message);
}
public void warn(String message, Object... args) {
log(Level.WARN, message, args);
}
public void error(String message) {
log(Level.ERROR, message);
}
public void error(String message, Object... args) {
log(Level.ERROR, message, args);
}
public void debug(String message) {
log(Level.DEBUG, message);
}
public void debug(String message, Object... args) {
log(Level.DEBUG, message, args);
}
}
- Lingua principale
- Java
- Stelle
- 0
- Fork
- 5
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di MinecraftForge/Utils
-
MinecraftForge/Utils#8 · 1 assegnatario ·
-
MinecraftForge/Utils#3 · 1 assegnatario ·
-
[Hash Utils] CRC32 support Aperta
MinecraftForge/Utils#2 · 2 assegnatari ·
-
Logger Utils Discussion Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
MinecraftForge/Utils#1 · 4 commenti ·
-
MinecraftForge/Utils#13 · 2 commenti · 1 assegnatario ·
Tutte le issue di MinecraftForge/Utils
Issue simili
-
certification
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Apertabug ecr
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Needs: Triage Type: Feature request
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
github/copilot-sdk#2760 ·