log4j изменение название файла

181
04 ноября 2021, 01:30

Как в log4j.xml изменять название файла, куда будут сохраняться логи, во время программы?

мой log4j.xml

    <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="myLog" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${logFilename}.log"/>
        <param name="Append" value="true"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.EnhancedPatternLayout">
            <param name="ConversionPattern" value="%m%n"/>
        </layout>
    </appender>
    <logger name="myLog" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="myLog"/>
    </logger>
    <root>
        <priority value="DEBUG"/>
        <appender-ref ref="myLog"/>
    </root>
</log4j:configuration>

мой Main.class

import org.apache.log4j.Logger;
public class Main {
    static Logger logger = Logger.getLogger("myLog");
    public static void main(String args[]) {
        System.setProperty("logFilename", "MyLog");
        logger.info("msg1");
    }
}

на выходе появляется файл ".log" с текстом "msg1"

Должно было получиться "MyLog.log"

Answer 1

Самый простой способ - без переменной окружения а именно:

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

заменить на:

<param name="File" value="MyLog.log"/>

После чего убрать строчку:

System.setProperty("logFilename", "MyLog"); 

Ваш код не работает потому как ${logFilename} это как правило обращение к переменной окружения, в то время как строчка setProperty это задание системной переменной. Системная переменная (System properties) != Переменная окружения (Environment variables).

READ ALSO
Подключение к базе данных MS SQL

Подключение к базе данных MS SQL

Цель: Правильно прописать путь в applicationproperties для возможности отправки данных в базу данных MS SQL

109
Как забрать данные в определённой строке из таблицы при условии что есть номер?

Как забрать данные в определённой строке из таблицы при условии что есть номер?

Есть таблица в которой есть номер лота и ценаУсловие: нужно собрать цену из той строки таблицы где есть номер ЕИС

229
Как получить body от Post-запроса на java

Как получить body от Post-запроса на java

Я получаю от php-сервера запрос на обработку данных, которые в формате json хранятся в body, как я могу достать именно эту json-строчку из request Post-запроса?

78