Как настроить slf4j-просто
api 1.7 и slf4j-простая реализация. Я просто не могу найти, как настроить уровень ведения журнала с этой комбинацией.
может кто-нибудь помочь?
4 ответа:
это либо через системное свойство
-Dorg.slf4j.simpleLogger.defaultLogLevel=debug
или в classpath
посмотреть http://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html дополнительные сведения
Это пример
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
вы можете программно изменить его, устанавливая системное свойство:
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.
Я заметил, что Eemuli сказал, что вы не можете изменить уровень журнала после их создания - и хотя это может быть дизайн, это не совсем верно.
я столкнулся с ситуацией, когда я использовал библиотеку, которая вошла в slf4j - и я использовал библиотеку при написании плагина Maven mojo.
Maven использует (взломанную) версию slf4j SimpleLogger, и я не смог получить свой код плагина, чтобы перенаправить его ведение журнала на что-то вроде log4j, что я мог бы управление.
и я не могу изменить конфигурацию ведения журнала maven.
Итак, чтобы успокоить некоторые шумные информационные сообщения, я обнаружил, что могу использовать такое отражение, чтобы futz с 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 изменят свой регистратор.