Auto-format
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
package com.seibel.lod.core.logging;
|
||||
|
||||
import com.seibel.lod.core.api.internal.a7.ClientApi;
|
||||
@@ -31,77 +31,104 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ConfigBasedLogger {
|
||||
public static final List<WeakReference<ConfigBasedLogger>> loggers
|
||||
= Collections.synchronizedList(new LinkedList<WeakReference<ConfigBasedLogger>>());
|
||||
public static synchronized void updateAll() {
|
||||
loggers.removeIf((logger) -> logger.get()==null);
|
||||
loggers.forEach((logger) -> {
|
||||
ConfigBasedLogger l = logger.get();
|
||||
if (l!=null) l.update();
|
||||
});
|
||||
}
|
||||
|
||||
private ELoggerMode mode;
|
||||
private final Supplier<ELoggerMode> getter;
|
||||
private final Logger logger;
|
||||
public ConfigBasedLogger(Logger logger, Supplier<ELoggerMode> configQuery) {
|
||||
getter = configQuery;
|
||||
mode = getter.get();
|
||||
this.logger = logger;
|
||||
loggers.add(new WeakReference<>(this));
|
||||
}
|
||||
|
||||
private String _throwableToDetailString(Throwable t) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(t.toString()).append('\n');
|
||||
StackTraceElement[] stacks = t.getStackTrace();
|
||||
|
||||
if (stacks==null || stacks.length == 0)
|
||||
return sb.append(" at {Stack trace unavailable}").toString();
|
||||
|
||||
for (StackTraceElement stack : stacks) {
|
||||
sb.append(" at ").append(stack.toString()).append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void update() {
|
||||
mode = getter.get();
|
||||
}
|
||||
public boolean canMaybeLog() {return mode != ELoggerMode.DISABLED;}
|
||||
|
||||
public void log(Level level, String str, Object... param) {
|
||||
|
||||
Message msg = logger.getMessageFactory().newMessage(str, param);
|
||||
String msgStr = msg.getFormattedMessage();
|
||||
if (mode.levelForFile.isLessSpecificThan(level)) {
|
||||
Level logLevel = level.isLessSpecificThan(Level.INFO) ? Level.INFO : level;
|
||||
if (param.length > 0 && param[param.length-1] instanceof Throwable)
|
||||
logger.log(logLevel, msgStr, (Throwable)param[param.length-1]);
|
||||
else logger.log(logLevel, msgStr);
|
||||
}
|
||||
if (mode.levelForChat.isLessSpecificThan(level)) {
|
||||
if (param.length > 0 && param[param.length-1] instanceof Throwable)
|
||||
ClientApi.logToChat(level, msgStr + "\n" +
|
||||
_throwableToDetailString(((Throwable) param[param.length - 1])));
|
||||
else ClientApi.logToChat(level, msgStr);
|
||||
}
|
||||
}
|
||||
|
||||
public void error(String str, Object... param) {
|
||||
log(Level.ERROR, str, param);
|
||||
}
|
||||
public void warn(String str, Object... param) {
|
||||
log(Level.WARN, str, param);
|
||||
}
|
||||
public void info(String str, Object... param) {
|
||||
log(Level.INFO, str, param);
|
||||
}
|
||||
public void debug(String str, Object... param) {
|
||||
log(Level.DEBUG, str, param);
|
||||
}
|
||||
public void trace(String str, Object... param) {
|
||||
log(Level.TRACE, str, param);
|
||||
}
|
||||
public class ConfigBasedLogger
|
||||
{
|
||||
public static final List<WeakReference<ConfigBasedLogger>> loggers
|
||||
= Collections.synchronizedList(new LinkedList<WeakReference<ConfigBasedLogger>>());
|
||||
|
||||
public static synchronized void updateAll()
|
||||
{
|
||||
loggers.removeIf((logger) -> logger.get() == null);
|
||||
loggers.forEach((logger) -> {
|
||||
ConfigBasedLogger l = logger.get();
|
||||
if (l != null)
|
||||
l.update();
|
||||
});
|
||||
}
|
||||
|
||||
private ELoggerMode mode;
|
||||
private final Supplier<ELoggerMode> getter;
|
||||
private final Logger logger;
|
||||
|
||||
public ConfigBasedLogger(Logger logger, Supplier<ELoggerMode> configQuery)
|
||||
{
|
||||
getter = configQuery;
|
||||
mode = getter.get();
|
||||
this.logger = logger;
|
||||
loggers.add(new WeakReference<>(this));
|
||||
}
|
||||
|
||||
private String _throwableToDetailString(Throwable t)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(t.toString()).append('\n');
|
||||
StackTraceElement[] stacks = t.getStackTrace();
|
||||
|
||||
if (stacks == null || stacks.length == 0)
|
||||
return sb.append(" at {Stack trace unavailable}").toString();
|
||||
|
||||
for (StackTraceElement stack : stacks)
|
||||
{
|
||||
sb.append(" at ").append(stack.toString()).append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void update()
|
||||
{
|
||||
mode = getter.get();
|
||||
}
|
||||
|
||||
public boolean canMaybeLog()
|
||||
{
|
||||
return mode != ELoggerMode.DISABLED;
|
||||
}
|
||||
|
||||
public void log(Level level, String str, Object... param)
|
||||
{
|
||||
|
||||
Message msg = logger.getMessageFactory().newMessage(str, param);
|
||||
String msgStr = msg.getFormattedMessage();
|
||||
if (mode.levelForFile.isLessSpecificThan(level))
|
||||
{
|
||||
Level logLevel = level.isLessSpecificThan(Level.INFO) ? Level.INFO : level;
|
||||
if (param.length > 0 && param[param.length - 1] instanceof Throwable)
|
||||
logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
|
||||
else
|
||||
logger.log(logLevel, msgStr);
|
||||
}
|
||||
if (mode.levelForChat.isLessSpecificThan(level))
|
||||
{
|
||||
if (param.length > 0 && param[param.length - 1] instanceof Throwable)
|
||||
ClientApi.logToChat(level, msgStr + "\n" +
|
||||
_throwableToDetailString(((Throwable) param[param.length - 1])));
|
||||
else
|
||||
ClientApi.logToChat(level, msgStr);
|
||||
}
|
||||
}
|
||||
|
||||
public void error(String str, Object... param)
|
||||
{
|
||||
log(Level.ERROR, str, param);
|
||||
}
|
||||
|
||||
public void warn(String str, Object... param)
|
||||
{
|
||||
log(Level.WARN, str, param);
|
||||
}
|
||||
|
||||
public void info(String str, Object... param)
|
||||
{
|
||||
log(Level.INFO, str, param);
|
||||
}
|
||||
|
||||
public void debug(String str, Object... param)
|
||||
{
|
||||
log(Level.DEBUG, str, param);
|
||||
}
|
||||
|
||||
public void trace(String str, Object... param)
|
||||
{
|
||||
log(Level.TRACE, str, param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
package com.seibel.lod.core.logging;
|
||||
|
||||
import com.seibel.lod.core.api.internal.a7.ClientApi;
|
||||
@@ -32,122 +32,171 @@ import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ConfigBasedSpamLogger {
|
||||
public static final List<WeakReference<ConfigBasedSpamLogger>> loggers
|
||||
= Collections.synchronizedList(new LinkedList<WeakReference<ConfigBasedSpamLogger>>());
|
||||
public static synchronized void updateAll(boolean flush) {
|
||||
loggers.removeIf((logger) -> logger.get()==null);
|
||||
loggers.forEach((logger) -> {
|
||||
ConfigBasedSpamLogger l = logger.get();
|
||||
if (l!=null) l.update();
|
||||
if (l!=null && flush) l.reset();
|
||||
});
|
||||
}
|
||||
|
||||
private ELoggerMode mode;
|
||||
private final Supplier<ELoggerMode> getter;
|
||||
private final int maxLogCount;
|
||||
private final AtomicInteger logTries = new AtomicInteger(0);
|
||||
private final Logger logger;
|
||||
|
||||
public ConfigBasedSpamLogger(Logger logger, Supplier<ELoggerMode> configQuery, int maxLogPerSec) {
|
||||
getter = configQuery;
|
||||
mode = getter.get();
|
||||
maxLogCount = maxLogPerSec;
|
||||
this.logger = logger;
|
||||
loggers.add(new WeakReference<>(this));
|
||||
}
|
||||
public void reset() {logTries.set(0);}
|
||||
public boolean canMaybeLog() {return mode != ELoggerMode.DISABLED && logTries.get() < maxLogCount;}
|
||||
public void update() {
|
||||
mode = getter.get();
|
||||
}
|
||||
|
||||
private String _throwableToDetailString(Throwable t) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(t.toString()).append('\n');
|
||||
StackTraceElement[] stacks = t.getStackTrace();
|
||||
|
||||
if (stacks==null || stacks.length == 0)
|
||||
return sb.append(" at {Stack trace unavailable}").toString();
|
||||
|
||||
for (StackTraceElement stack : stacks) {
|
||||
sb.append(" at ").append(stack.toString()).append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void log(Level level, String str, Object... param) {
|
||||
if (logTries.get() >= maxLogCount) return;
|
||||
|
||||
Message msg = logger.getMessageFactory().newMessage(str, param);
|
||||
String msgStr = msg.getFormattedMessage();
|
||||
if (mode.levelForFile.isLessSpecificThan(level)) {
|
||||
Level logLevel = level.isLessSpecificThan(Level.INFO) ? Level.INFO : level;
|
||||
if (param.length > 0 && param[param.length-1] instanceof Throwable)
|
||||
logger.log(logLevel, msgStr, (Throwable)param[param.length-1]);
|
||||
else logger.log(logLevel, msgStr);
|
||||
}
|
||||
if (mode.levelForChat.isLessSpecificThan(level)) {
|
||||
if (param.length > 0 && param[param.length-1] instanceof Throwable)
|
||||
ClientApi.logToChat(level, msgStr + "\n" +
|
||||
_throwableToDetailString(((Throwable) param[param.length - 1])));
|
||||
else ClientApi.logToChat(level, msgStr);
|
||||
}
|
||||
}
|
||||
|
||||
public void error(String str, Object... param) {
|
||||
log(Level.ERROR, str, param);
|
||||
}
|
||||
public void warn(String str, Object... param) {
|
||||
log(Level.WARN, str, param);
|
||||
}
|
||||
public void info(String str, Object... param) {
|
||||
log(Level.INFO, str, param);
|
||||
}
|
||||
public void debug(String str, Object... param) {
|
||||
log(Level.DEBUG, str, param);
|
||||
}
|
||||
public void trace(String str, Object... param) {
|
||||
log(Level.TRACE, str, param);
|
||||
}
|
||||
|
||||
public void incLogTries() {
|
||||
logTries.getAndIncrement();
|
||||
}
|
||||
|
||||
public void logInc(Level level, String str, Object... param) {
|
||||
if (logTries.getAndIncrement() >= maxLogCount) return;
|
||||
|
||||
Message msg = logger.getMessageFactory().newMessage(str, param);
|
||||
String msgStr = msg.getFormattedMessage();
|
||||
if (mode.levelForFile.isLessSpecificThan(level)) {
|
||||
Level logLevel = level.isLessSpecificThan(Level.INFO) ? Level.INFO : level;
|
||||
if (param.length > 0 && param[param.length-1] instanceof Throwable)
|
||||
logger.log(logLevel, msgStr, (Throwable)param[param.length-1]);
|
||||
else logger.log(logLevel, msgStr);
|
||||
}
|
||||
if (mode.levelForChat.isLessSpecificThan(level)) {
|
||||
if (param.length > 0 && param[param.length-1] instanceof Throwable)
|
||||
ClientApi.logToChat(level, msgStr + "\n" +
|
||||
_throwableToDetailString(((Throwable) param[param.length - 1])));
|
||||
else ClientApi.logToChat(level, msgStr);
|
||||
}
|
||||
}
|
||||
|
||||
public void errorInc(String str, Object... param) {
|
||||
logInc(Level.ERROR, str, param);
|
||||
}
|
||||
public void warnInc(String str, Object... param) {
|
||||
logInc(Level.WARN, str, param);
|
||||
}
|
||||
public void infoInc(String str, Object... param) {
|
||||
logInc(Level.INFO, str, param);
|
||||
}
|
||||
public void debugInc(String str, Object... param) {
|
||||
logInc(Level.DEBUG, str, param);
|
||||
}
|
||||
public void traceInc(String str, Object... param) {
|
||||
logInc(Level.TRACE, str, param);
|
||||
}
|
||||
public class ConfigBasedSpamLogger
|
||||
{
|
||||
public static final List<WeakReference<ConfigBasedSpamLogger>> loggers
|
||||
= Collections.synchronizedList(new LinkedList<WeakReference<ConfigBasedSpamLogger>>());
|
||||
|
||||
public static synchronized void updateAll(boolean flush)
|
||||
{
|
||||
loggers.removeIf((logger) -> logger.get() == null);
|
||||
loggers.forEach((logger) -> {
|
||||
ConfigBasedSpamLogger l = logger.get();
|
||||
if (l != null)
|
||||
l.update();
|
||||
if (l != null && flush)
|
||||
l.reset();
|
||||
});
|
||||
}
|
||||
|
||||
private ELoggerMode mode;
|
||||
private final Supplier<ELoggerMode> getter;
|
||||
private final int maxLogCount;
|
||||
private final AtomicInteger logTries = new AtomicInteger(0);
|
||||
private final Logger logger;
|
||||
|
||||
public ConfigBasedSpamLogger(Logger logger, Supplier<ELoggerMode> configQuery, int maxLogPerSec)
|
||||
{
|
||||
getter = configQuery;
|
||||
mode = getter.get();
|
||||
maxLogCount = maxLogPerSec;
|
||||
this.logger = logger;
|
||||
loggers.add(new WeakReference<>(this));
|
||||
}
|
||||
|
||||
public void reset()
|
||||
{
|
||||
logTries.set(0);
|
||||
}
|
||||
|
||||
public boolean canMaybeLog()
|
||||
{
|
||||
return mode != ELoggerMode.DISABLED && logTries.get() < maxLogCount;
|
||||
}
|
||||
|
||||
public void update()
|
||||
{
|
||||
mode = getter.get();
|
||||
}
|
||||
|
||||
private String _throwableToDetailString(Throwable t)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(t.toString()).append('\n');
|
||||
StackTraceElement[] stacks = t.getStackTrace();
|
||||
|
||||
if (stacks == null || stacks.length == 0)
|
||||
return sb.append(" at {Stack trace unavailable}").toString();
|
||||
|
||||
for (StackTraceElement stack : stacks)
|
||||
{
|
||||
sb.append(" at ").append(stack.toString()).append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void log(Level level, String str, Object... param)
|
||||
{
|
||||
if (logTries.get() >= maxLogCount)
|
||||
return;
|
||||
|
||||
Message msg = logger.getMessageFactory().newMessage(str, param);
|
||||
String msgStr = msg.getFormattedMessage();
|
||||
if (mode.levelForFile.isLessSpecificThan(level))
|
||||
{
|
||||
Level logLevel = level.isLessSpecificThan(Level.INFO) ? Level.INFO : level;
|
||||
if (param.length > 0 && param[param.length - 1] instanceof Throwable)
|
||||
logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
|
||||
else
|
||||
logger.log(logLevel, msgStr);
|
||||
}
|
||||
if (mode.levelForChat.isLessSpecificThan(level))
|
||||
{
|
||||
if (param.length > 0 && param[param.length - 1] instanceof Throwable)
|
||||
ClientApi.logToChat(level, msgStr + "\n" +
|
||||
_throwableToDetailString(((Throwable) param[param.length - 1])));
|
||||
else
|
||||
ClientApi.logToChat(level, msgStr);
|
||||
}
|
||||
}
|
||||
|
||||
public void error(String str, Object... param)
|
||||
{
|
||||
log(Level.ERROR, str, param);
|
||||
}
|
||||
|
||||
public void warn(String str, Object... param)
|
||||
{
|
||||
log(Level.WARN, str, param);
|
||||
}
|
||||
|
||||
public void info(String str, Object... param)
|
||||
{
|
||||
log(Level.INFO, str, param);
|
||||
}
|
||||
|
||||
public void debug(String str, Object... param)
|
||||
{
|
||||
log(Level.DEBUG, str, param);
|
||||
}
|
||||
|
||||
public void trace(String str, Object... param)
|
||||
{
|
||||
log(Level.TRACE, str, param);
|
||||
}
|
||||
|
||||
public void incLogTries()
|
||||
{
|
||||
logTries.getAndIncrement();
|
||||
}
|
||||
|
||||
public void logInc(Level level, String str, Object... param)
|
||||
{
|
||||
if (logTries.getAndIncrement() >= maxLogCount)
|
||||
return;
|
||||
|
||||
Message msg = logger.getMessageFactory().newMessage(str, param);
|
||||
String msgStr = msg.getFormattedMessage();
|
||||
if (mode.levelForFile.isLessSpecificThan(level))
|
||||
{
|
||||
Level logLevel = level.isLessSpecificThan(Level.INFO) ? Level.INFO : level;
|
||||
if (param.length > 0 && param[param.length - 1] instanceof Throwable)
|
||||
logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
|
||||
else
|
||||
logger.log(logLevel, msgStr);
|
||||
}
|
||||
if (mode.levelForChat.isLessSpecificThan(level))
|
||||
{
|
||||
if (param.length > 0 && param[param.length - 1] instanceof Throwable)
|
||||
ClientApi.logToChat(level, msgStr + "\n" +
|
||||
_throwableToDetailString(((Throwable) param[param.length - 1])));
|
||||
else
|
||||
ClientApi.logToChat(level, msgStr);
|
||||
}
|
||||
}
|
||||
|
||||
public void errorInc(String str, Object... param)
|
||||
{
|
||||
logInc(Level.ERROR, str, param);
|
||||
}
|
||||
|
||||
public void warnInc(String str, Object... param)
|
||||
{
|
||||
logInc(Level.WARN, str, param);
|
||||
}
|
||||
|
||||
public void infoInc(String str, Object... param)
|
||||
{
|
||||
logInc(Level.INFO, str, param);
|
||||
}
|
||||
|
||||
public void debugInc(String str, Object... param)
|
||||
{
|
||||
logInc(Level.DEBUG, str, param);
|
||||
}
|
||||
|
||||
public void traceInc(String str, Object... param)
|
||||
{
|
||||
logInc(Level.TRACE, str, param);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user