Есть несколько похожих вопросов, но я не могу понять, почему моя конфигурация log4j2 не работает, даже если она кажется идентичной некоторым ответам.
Он выводит на консоль нормально (поэтому я вижу вывод в консоли eclipseкогда я запускаю его на локальном хосте и могу найти его в catalina.out, когда я запускаю его на Elastic Beanstalk.), но он не записывает данные в файл debug.log.Это не создает файл.Цель записи в файл состоит в том, что я хочу, чтобы файл ежедневного журнала добавлялся к выводу каждого запуска.В настоящее время локально консоль сначала очищается, а файл catalina.out удаленно перезаписывается.После того, как он будет выведен в файл, я считаю, что установка имени файла будет простой.
Если я изменю имя файла на "/logs/debug.log, при запуске я получу исключение о том, что файл не может быть созданОднако с именем «logs / debug.log» оно не создается, но ошибки нет. Нужно ли что-то делать для его очистки? Нужно ли устанавливать что-то еще для вывода в регистратор - яВ настоящее время я использую только один:
protected static final Logger logger = LogManager.getLogger();
logger.debug("Starting 1.14");
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<property name="filePattern">${date:yyyy-MM-dd}</property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %C.%M() - %msg%n"/>
</Console>
<File name="MyFile" fileName="logs/Bloc-${filePattern}.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %C.%M() - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="ALL">
<AppenderRef ref="Console"/>
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
Редактировать : поскольку @sazzad подразумевает, что это, похоже, проблема с разрешениями. У меня есть два разных сценария запуска моего сервлета. Локально на моем MacBookPro для разработки или Elastic Beanstalk для выпуска. Я использую Eclipse IDE, которая обрабатывает все, включая установку сервлета в нужное место и его запуск. Настройка Elastic Beanstalk работает нормально с вышеуказанной конфигурацией, но проблема, которую я вижу, заключается влокальная машина. При указанной выше конфигурации не сообщается об ошибке (и я не могу найти вывод файл).Изменение его на абсолютный путь «/ logs / .....» действительно дает мне ошибку прав доступа.Я мог бы указать абсолютный путь от корня тома до каталога журналов в среде Tomcat, в которой он работает, но это нарушило бы версию Elastic Beanstalk.Поэтому моё решение может зависеть от ответов на следующие вопросы:
Возможно ли иметь переменную, зависящую от среды назначения, в файле конфигурации log4j2?
Можно ли настроить Eclipse для использованиядругой файл конфигурации log4j2.xml в зависимости от среды назначения?
Могу ли я программно определить, работаю ли я локально или на Elastic Beanstalk, и изменить конфигурацию log4j2 после запуска?Я понимаю, что одним из решений является проверка версии Tomcat - проблема в том, что она потребует некоторого обслуживания.
Или самое грязное решение: иметь второй File Appender в log4j2.xml, который работает локально (с явным абсолютным путем).Один File Appender потерпит неудачу в одной среде, другой будет работать.В другой среде другой потерпит неудачу ..