如何在Maven多模块项目中指定log4j2绝对路径?

时间:2019-01-31 14:03:36

标签: java maven log4j multi-module

我有一个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");
}

当我在main / java和test / java包中执行此方法时,它将在两个不同的位置生成日志目录。我尝试在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中重构任何配置。 我的问题是:

是否有可能在log4j2.properties的property.eventLogPath中定义一些相对路径,该路径与所有软件包都相同。也许它的路径将相对于资源文件夹或log4j文件。或者它可以是绝对路径,但对于不同的操作系统则很灵活,例如:

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

0 个答案:

没有答案