Add config setting for toggling newline support
This commit is contained in:
parent
48c326ad71
commit
ad7b3568cf
2 changed files with 42 additions and 25 deletions
|
@ -216,19 +216,19 @@ public final class EngineConfiguration extends Configuration {
|
|||
private String loggerTemplate;
|
||||
|
||||
/**
|
||||
* If enabled, the JVM will immediately shutdown on an engine crash. This will prevent shutdown hooks from executing.
|
||||
* Note: This will also prevent Jansi and potentially other libraries from removing temporary native libraries at shutdown.
|
||||
* Contains how fast the logging thread will poll for queued messages.
|
||||
* Only applies if {@code optimizeLogging} is turned on.
|
||||
*
|
||||
* @see CrashHandler
|
||||
* @since v1-alpha0
|
||||
* @see #optimizeLogging
|
||||
* @since v1-alpha1
|
||||
* -- GETTER --
|
||||
* Gets the value for {@link #loggerImmediateShutdown}.
|
||||
* Gets the value for {@link #loggerPollingSpeed}.
|
||||
*
|
||||
* @return variable value
|
||||
* @see #loggerImmediateShutdown
|
||||
* @since v1-alpha0
|
||||
* @see #loggerPollingSpeed
|
||||
* @since v1-alpha1
|
||||
*/
|
||||
private boolean loggerImmediateShutdown;
|
||||
private int loggerPollingSpeed;
|
||||
|
||||
/**
|
||||
* If enabled, will force the {@link Logger} and {@link CrashHandler} to use <a href="https://www.man7.org/linux/man-pages/man3/stderr.3.html">the standard output</a>
|
||||
|
@ -245,19 +245,34 @@ public final class EngineConfiguration extends Configuration {
|
|||
private boolean loggerForceStandardOutput;
|
||||
|
||||
/**
|
||||
* Contains how fast the logging thread will poll for queued messages.
|
||||
* Only applies if {@code optimizeLogging} is turned on.
|
||||
* If enabled, will enable support for printing log messages on multiple lines.
|
||||
* By enabling this configuration setting, logger throughput will be decreased slightly when encountering a log message with newlines found in it.
|
||||
* This performance hit is negligible though and should not affect application performance, especially with logger multi-threading turned on (see {@link #optimizeLogging}).
|
||||
*
|
||||
* @see #optimizeLogging
|
||||
* @since v1-alpha1
|
||||
* @since v1-alpha4
|
||||
* -- GETTER --
|
||||
* Gets the value for {@link #loggerForceStandardOutput}.
|
||||
* Gets the value for {@link #loggerEnableNewlineSupport}.
|
||||
*
|
||||
* @return variable value
|
||||
* @see #loggerForceStandardOutput
|
||||
* @since v1-alpha1
|
||||
* @see #loggerEnableNewlineSupport
|
||||
* @since v1-alpha4
|
||||
*/
|
||||
private int loggerPollingSpeed;
|
||||
private boolean loggerEnableNewlineSupport;
|
||||
|
||||
/**
|
||||
* If enabled, the JVM will immediately shutdown on an engine crash. This will prevent shutdown hooks from executing.
|
||||
* Note: This will also prevent Jansi and potentially other libraries from removing temporary native libraries at shutdown.
|
||||
*
|
||||
* @see CrashHandler
|
||||
* @since v1-alpha0
|
||||
* -- GETTER --
|
||||
* Gets the value for {@link #loggerImmediateShutdown}.
|
||||
*
|
||||
* @return variable value
|
||||
* @see #loggerImmediateShutdown
|
||||
* @since v1-alpha0
|
||||
*/
|
||||
private boolean loggerImmediateShutdown;
|
||||
|
||||
/**
|
||||
* Will truncate the path of types when using their {@code toString} method.
|
||||
|
@ -325,9 +340,10 @@ public final class EngineConfiguration extends Configuration {
|
|||
}
|
||||
}
|
||||
case "loggerTemplate" -> loggerTemplate = parser.getString(group + property);
|
||||
case "loggerImmediateShutdown" -> loggerImmediateShutdown = parser.getBoolean(group + property);
|
||||
case "loggerForceStandardOutput" -> loggerForceStandardOutput = parser.getBoolean(group + property);
|
||||
case "loggerPollingSpeed" -> loggerPollingSpeed = parser.getInteger(group + property, true);
|
||||
case "loggerForceStandardOutput" -> loggerForceStandardOutput = parser.getBoolean(group + property);
|
||||
case "loggerEnableNewlineSupport" -> loggerEnableNewlineSupport = parser.getBoolean(group + property);
|
||||
case "loggerImmediateShutdown" -> loggerImmediateShutdown = parser.getBoolean(group + property);
|
||||
|
||||
case "hideFullTypePath" -> hideFullTypePath = parser.getBoolean(group + property);
|
||||
}
|
||||
|
@ -359,9 +375,10 @@ public final class EngineConfiguration extends Configuration {
|
|||
|
||||
loggerLevel = LogLevel.INFORMATIONAL;
|
||||
loggerTemplate = "%log_color_primary%[%time_hour%:%time_minute%:%time_second%] [%log_level% %log_path%%log_metadata%] %log_message_prefix%%log_color_primary%%log_color_secondary%%log_message%<reset>";
|
||||
loggerImmediateShutdown = false;
|
||||
loggerForceStandardOutput = false;
|
||||
loggerPollingSpeed = 5;
|
||||
loggerForceStandardOutput = false;
|
||||
loggerEnableNewlineSupport = true;
|
||||
loggerImmediateShutdown = false;
|
||||
|
||||
hideFullTypePath = false;
|
||||
}
|
||||
|
@ -382,9 +399,10 @@ public final class EngineConfiguration extends Configuration {
|
|||
|
||||
case "loggerLevel" -> { return loggerLevel; }
|
||||
case "loggerTemplate" -> { return loggerTemplate; }
|
||||
case "loggerImmediateShutdown" -> { return loggerImmediateShutdown; }
|
||||
case "loggerForceStandardOutput" -> { return loggerForceStandardOutput; }
|
||||
case "loggerPollingSpeed" -> { return loggerPollingSpeed; }
|
||||
case "loggerForceStandardOutput" -> { return loggerForceStandardOutput; }
|
||||
case "loggerEnableNewlineSupport" -> { return loggerEnableNewlineSupport; }
|
||||
case "loggerImmediateShutdown" -> { return loggerImmediateShutdown; }
|
||||
|
||||
case "hideFullTypePath" -> { return hideFullTypePath; }
|
||||
default -> { return null; }
|
||||
|
|
|
@ -212,7 +212,7 @@ public final class Logger {
|
|||
format = new LogPath(issuerClass).replace(format);
|
||||
|
||||
// Handle newlines
|
||||
if (message.contains("\n"))
|
||||
if (EngineConfiguration.getInstance().isLoggerEnableNewlineSupport() && message.contains("\n"))
|
||||
try (Scanner scanner = new Scanner(message)) {
|
||||
int indexPrefix = format.indexOf("%log_message_prefix%");
|
||||
int indexMessage = format.indexOf("%log_message%");
|
||||
|
@ -233,7 +233,6 @@ public final class Logger {
|
|||
.replace("%log_color_secondary%", ""), false
|
||||
).getClean().length());
|
||||
|
||||
|
||||
while (scanner.hasNextLine()) {
|
||||
if (formatNew.isEmpty())
|
||||
formatNew.append(format, 0, indexPrefix == -1 ? indexMessage : indexPrefix);
|
||||
|
@ -254,7 +253,7 @@ public final class Logger {
|
|||
// No newline found, use performance-efficient replacing
|
||||
format = format
|
||||
.replace("%log_message_prefix%", "")
|
||||
.replace("%log_message%", message);
|
||||
.replace("%log_message%", message.replace("\n", "\\n"));
|
||||
|
||||
// Replace placeholders involving colors
|
||||
format = new LogColorPrimary(level).replace(format);
|
||||
|
|
Loading…
Reference in a new issue