Как задать динамический путь к файлу в теге appender в log4j_config.xml? - PullRequest
1 голос
/ 23 января 2009

Привет, я использую log4j api для регистрации информации. Я использовал файл log4j_conffig.xml для создания файлов журнала. Я дал абсолютный путь для каждого файла журнала в значении тега param.

Например:

appender name="GPREPROCESSOR_DEBUG" class="org.apache.log4j.DailyRollingFileAppender"><br>
        param name="DatePattern" value="'_'yyyyMMdd"/><br>
        param name="File" value="D:/logFiles/GPreprocessor_Debug.log"/><br>
        layout class="com.dnb.genericpreprocessor.common.log.AppXMLLayout"/><br>
/appender><br>

Я не хочу давать "D: / logFiles /" напрямую. На самом деле этот путь является динамическим в зависимости от местоположения моего проекта. так как я могу дать это

Ответы [ 3 ]

1 голос
/ 23 января 2009

Любое свойство системы Java может использоваться в файле конфигурации log4j. Например, ваше приложение при запуске может сделать что-то вроде:

String directory = "logfiles"; // relative to "."
try {
  path = new File(directory).getCanonicalPath();
} catch (IOException e) {
  // Cannot use log4j yet, so complain to system out
  System.out.println("Could not get canonical path for " + directory, e);
}

System.setProperty("log.home", path);

// Now that we've configured log.home, start logging
DOMConfigurator.configureAndWatch("log4j_config.xml");

и затем в файле конфигурации log4j используйте это правильно, как:

<param name="File" value="${log.home}/GPreprocessor_Debug.log"/>

Единственным недостатком этого является то, что вы должны определить системное свойство перед инициализацией регистрации log4j. Конечно, вы также можете определить эти параметры в командной строке Java через «-Dlog.home = D: / logFiles», если это более удобно.

0 голосов
/ 23 января 2009

Вы можете создать свой собственный appender, расширив его от RollingFileAppender и добавив атрибут «prefix», который можно определить в соответствии с вашим проектом. Имя файла, которое использует log4j: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html#setFile(java.lang.String),, поэтому в классе ur appender должно быть легко использовать это и установить имя файла.

Другой вариант - использовать некоторое свойство, определенное и доступное для log4j.xml (любое системное свойство java), и ссылаться на имя файла как $ {my.project.location} /logs/Preprocessor_Debug.log

0 голосов
/ 23 января 2009

Вы используете $ {java.home} или $ {user.home}, чтобы определить относительный путь для вашего файла. См. log4help для более полных примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...