我有一个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/