От комментарий :
getYearFolder(year)
записывает в журнал следующее:
/dvl/app/srs/tomcat/data/ep/docs_autres/commeenne/com/2018/
getYearFolder(year).getBytes("UTF-8")
пишет:
[36, 123, 115, 121, 115, 58, 117, 115, 101, 114, 46, 104, 111, 109, 101, 125, 47, 100, 97, 116, 97, 47, ...]
Показанные байты представляют строку:
${sys:user.home}/data/
Кажется, что logger.info(...)
выполняет замены,замена ${sys:user.home}
на /dvl/app/srs/tomcat
в зарегистрированном выводе .
Фактическое значение, видимое в коде Java, равно ${sys:user.home}/data/ep/docs_autres/commeenne/com/2018/
, которое не начинается с /
и поэтомусчитается относительным путем, поэтому getAbsolutePath()
ставит префикс текущего каталога (/dvl/app/srs/tomcat/temp
), в результате чего:
/dvl/app/srs/tomcat/temp/${sys:user.home}/data/ep/docs_autres/commeenne/com/2018/
и затем регистратор выполняет замену на:
/dvl/app/srs/tomcat/temp//dvl/app/srs/tomcat/data/ep/docs_autres/commeenne/com/2018/
Что нужно учитывать:
Если getYearFolder(year)
должен возвращать путь к файлу, почему он возвращает ${sys:user.home}
?
В какой момент (где в коде) ${sys:user.home}
предполагается заменить?Он обязательно должен быть , прежде чем getAbsolutePath()
будет вызван.
Почему getAbsolutePath()
вызывается, если путь, возвращаемый getYearFolder(year)
, уже должен быть абсолютным?
Ответы на эти вопросы должны содержать рекомендации по устранению проблемы.