Как установить папку для журналов во время выполнения, используя log4j в Java? - PullRequest
0 голосов
/ 08 февраля 2019

Я пишу простой сокет-чат на Java.Для входа я использую log4j.Серверная часть включает в себя Server.class (обрабатывает общую логику) и ClientListener.class (принимает и работает с запросами пользователя), оба они являются потоками.

Проблема:

Мне нужносохранять журналы в разных каталогах в зависимости от того, произошло ли событие, которое будет зарегистрировано в Server или в ClientListener пользователя X .

Как я вижу решение:

  • Server всегда входит в систему serv_base_dir / logs / logs.txt

  • ClientListeners подключается к абонентам с пользователяминапример, serv_base_dir / users / X / logs / logs.txt

Вопрос:

Как установитьпапка журналов, в которой они должны быть сохранены во время работы сервера?

PS

Я прочитал Log4j config - разные журналы в разные файлы статья, но она не полностью решает мою проблему, потому что мне нужно установить папку во время выполнения, а не перед компиляцией, я был бы признателен за любой совет

1 Ответ

0 голосов
/ 08 февраля 2019

Если вы хотите установить каталог с именем определенного пользователя неизвестным до времени выполнения, вы можете решить его, передав аргумент в файл свойств log4j во время выполнения.

Передайте аргумент в файл log4j

[Пример кода]

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

public class MyClass
{
    public static Logger mLogger = Logger.getLogger(MyClass.class.getName());

    public static void main(String[] args)
    {
        System.setProperty("test", "hello");
        PropertyConfigurator.configure("./log4j.properties");

        mLogger.debug("Hello world!");

        // modify variable and re-configure
        System.setProperty("test", "bye");
        PropertyConfigurator.configure("./log4j.properties");

        mLogger.debug("byebye");
    }
}

[log4j.properties]

# Root logger option
log4j.rootLogger=DEBUG, file

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./${test}.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...