Відповіді:
Це або через власність системи
-Dorg.slf4j.simpleLogger.defaultLogLevel=debug
або simplelogger.properties
файл на класі
див. http://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html для отримання детальної інформації
defaultLogLevel
) працює. Просто знайшли, що я змінював програму в неправильній папці ;-) І defaultlog
не працює. Тож ви, мабуть, хочете відредагувати свою відповідь, хоча я її прийняв
Це зразок, simplelogger.properties
який ви можете розмістити на класному шляху (відменте властивості, які ви хочете використовувати):
# SLF4J's SimpleLogger configuration file
# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err.
# Default logging detail level for all instances of SimpleLogger.
# Must be one of ("trace", "debug", "info", "warn", or "error").
# If not specified, defaults to "info".
#org.slf4j.simpleLogger.defaultLogLevel=info
# Logging detail level for a SimpleLogger instance named "xxxxx".
# Must be one of ("trace", "debug", "info", "warn", or "error").
# If not specified, the default logging detail level is used.
#org.slf4j.simpleLogger.log.xxxxx=
# Set to true if you want the current date and time to be included in output messages.
# Default is false, and will output the number of milliseconds elapsed since startup.
#org.slf4j.simpleLogger.showDateTime=false
# The date and time format to be used in the output messages.
# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat.
# If the format is not specified or is invalid, the default format is used.
# The default format is yyyy-MM-dd HH:mm:ss:SSS Z.
#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
# Set to true if you want to output the current thread name.
# Defaults to true.
#org.slf4j.simpleLogger.showThreadName=true
# Set to true if you want the Logger instance name to be included in output messages.
# Defaults to true.
#org.slf4j.simpleLogger.showLogName=true
# Set to true if you want the last component of the name to be included in output messages.
# Defaults to false.
#org.slf4j.simpleLogger.showShortLogName=false
org.slf4j.simpleLogger.logFile
- ціль виводу, яка може бути шлях до файлу, або спеціальні значення "System.out" та "System.err". За замовчуванням - "System.err". Дивіться slf4j.org/api/org/slf4j/impl/SimpleLogger.html
Ви можете програмно його змінити, встановивши властивість системи:
public class App {
public static void main(String[] args) {
System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "TRACE");
final org.slf4j.Logger log = LoggerFactory.getLogger(App.class);
log.trace("trace");
log.debug("debug");
log.info("info");
log.warn("warning");
log.error("error");
}
}
Рівень журналу - ПОМИЛКА> ЗАПЕРЕДЖЕННЯ> ІНФОРМАЦІЯ> ВІДМІТКА> ТРАС.
Зауважте, що після створення реєстратора рівень журналу не може бути змінений. Якщо вам потрібно динамічно змінити рівень реєстрації, можливо, ви хочете використовувати log4j зі SLF4J.
org.slf4j.impl.SimpleLogger
Ви маєте на увазі фактичний вихідний код, а не doc?
LOG_FILE_KEY
властивість не можна змінити як тільки створити реєстратор?
Я помітив, що Еемулі сказав, що ви не можете змінити рівень журналу після їх створення - і хоча це може бути дизайн, це не зовсім правда.
Я зіткнувся з ситуацією, коли я використовував бібліотеку, яка ввійшла до slf4j - і я користувалася бібліотекою, коли писала плагін Maven Mojo.
Maven використовує (зламану) версію slf4j SimpleLogger, і мені не вдалося отримати свій плагін-код, щоб перенаправити його вхід на щось на зразок log4j, яким я міг керувати.
І я не можу змінити конфігурацію журналу Maven.
Тож, щоб заспокоїти деякі шумні інформаційні повідомлення, я виявив, що можу використовувати відображення на зразок цього, щоб згорнутись з SimpleLogger під час виконання.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.spi.LocationAwareLogger;
try
{
Logger l = LoggerFactory.getLogger("full.classname.of.noisy.logger"); //This is actually a MavenSimpleLogger, but due to various classloader issues, can't work with the directly.
Field f = l.getClass().getSuperclass().getDeclaredField("currentLogLevel");
f.setAccessible(true);
f.set(l, LocationAwareLogger.WARN_INT);
}
catch (Exception e)
{
getLog().warn("Failed to reset the log level of " + loggerName + ", it will continue being noisy.", e);
}
Звичайно, зауважте, це не дуже стабільне / надійне рішення ... тому що воно порушиться наступного разу, коли люди, що живуть у Maven, змінять свій реєстратор.