Конфигурация и демо
Полностью открытый метод
Добавить параметры запуска -DLog4jContextSelector = org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
начать основные параметры немного поговорке:
официальную документацию http://logging.apache.org/log4j/2.x/manual/async # AllAsync .html Ключ -Dlog4j2.contextSelector = ...
но если вы лично эксперименты, или лично использовал, вы можете заметить проблему, просто использовать с версией:
-DLog4jContextSelector = org.apache.logging .log4j.core.async.AsyncLoggerContextSelector // == == полная версия поддерживает
версию поддерживает -Dlog4j2.contextSelector = org.apache.logging.log4j.core.async.AsyncLoggerContextSelector // == == 2.10.0 позже
Относящийся код (2.10.0 позже):
См org.apache.logging.log4j.util.PropertiesPropertySource и
org.apache.logging.log4j.util.PropertiesUtil.Environment
среды Есть три набора конфигурационных данных, другой ключ, те же семантика услуг:
literal
{java.runtime.name=Java(TM) SE Runtime Environment}
normalized
{log4j2.javaRuntimeName=Java(TM) SE Runtime Environment} key 是log4j2.前缀 加上驼峰形式变量
tokenized
{[java, runtime, name]=Java(TM) SE Runtime Environment} key是list
Способ смешивания двух синхронных асинхронный
<!-- 使用异步日志时,启用如下配置,异步配置默认不打印location。此种方法无需配置JVM启动参数。 -->
<asyncRoot level="debug">
<AppenderRef ref="Console" />
</asyncRoot>
Некоторые замечания
- Информация местоположения по умолчанию не печатаются, например, номера строк, классов, методов и тому подобные. Нам нужно добавить , если это необходимо
includeLocation="true"
, но согласно официальному заявлению будет 30-100 раз медленнее.
- Асинхронный время, если журнал печати в реальном значении поля объекта, указанного в информации журнала изменилось в таких «привет {}», user.name это. Это не повлияет на точность журнала печати. Ответ: нет, потому что log4j сделал механизм моментального снимка.
Malpractice асинхронный журнал
Асинхронный журнал не только преимущества без каких-либо недостатков, официальный дают некоторые сцены (НЕДОСТАТКИ) не используется:
- Обработка исключений. Даже обработчик исключений не может охватить все случаи.
- В некоторых случаях, такие как MapMessage и StructuredDataMessage этой проблемы, не входить время снимки избежать асинхронной печати информации может измениться
- CPU в нескольких случаях, например, для процессора
- Печать войти гораздо быстрее , чем
appender
пропускная способность . В это время, асинхронный и не может решить эту проблему, необходимо использовать более быструю Appender.