Как указать абсолютный путь log4j2 в многомодульном проекте maven? - PullRequest
0 голосов
/ 31 января 2019

У меня есть многомодульный проект maven со структурой, похожей на: (https://drive.google.com/file/d/1-TexFkNoAwhYbHnyoxhyQJ6W7CHOBBzZ/view)

У меня есть следующий файл log4j2.properties:

property.eventLogPath = src/main/resources/log/events/

appender.eventLogger.type = RollingFile
appender.eventLogger.name = eventLogger
appender.eventLogger.fileName=  ${eventLogPath}/app.log
appender.eventLogger.filePattern=  ${eventLogPath}/app_%d{yyyyMMdd}.log.gz
appender.eventLogger.layout.type = PatternLayout
appender.eventLogger.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level 
[%t] [%c] [%M] [%l] - %msg%n
appender.eventLogger.policies.type = Policies
# Rotate log file each day and keep 30 days worth
appender.eventLogger.policies.time.type = TimeBasedTriggeringPolicy
appender.eventLogger.policies.time.interval = 1
appender.eventLogger.policies.time.modulate = true
appender.eventLogger.strategy.type = DefaultRolloverStrategy

logger.event.name = event
logger.event.level = info
logger.event.additivity = false
logger.event.appenderRef.eventLogger.ref = eventLogger

rootLogger.level = error  
rootLogger.additivity = false

У меня есть следующий метод:

private static Logger eventLogger = LogManager.getLogger("event");

public static void sendLog()  {
    eventLogger.info("event");
}

Когда я выполняю этот метод в моих основных / java и моих пакетах test / java, он генерирует log dir в двух разных местах. Я пытаюсь выполнить этот фрагмент кода в main / java и test /java-пакеты для получения пользователя dir

  System.out.println(System.getProperty("user.dir"));

И для основного пакета он определяет:

   C:\Users\dev\IdeaProjects\multimodules\

Для тестового пакета:

   C:\Users\dev\IdeaProjects\multimodules\users

Возможно, это проблема в конфигурации mavenно я не могу изменить любой конфиг в maven. И мой вопрос заключается в следующем:

Можно ли определить некоторый относительный путь в property.eventLogPath в log4j2.properties, который будет одинаковым для всех пакетов.это путь будет относительно папки ресурсов или файла log4j. Или это может быть абсолютный путь, но гибкий для разных ОС, например:

property.eventLogPath = ${sys:user.dir}/src/main/resources/log/events/
...