Я работаю над приложением, которое обрабатывает несколько файлов многопоточным способом. Анализ выполняется путем запуска одного потока для каждого файла, который должен быть проанализирован, а затем выполняться с помощью нескольких этапов (в разных классах), которые производят некоторую форму вывода журнала.Отдельные лог-файлы в многопоточном приложении
Я хотел бы иметь выделенный файл журнала для каждого из проанализируемых файлов, который содержит только сообщения для этого файла. Код, я использую сейчас был написан, когда программа была еще однопоточных:
PatternLayout layout = new PatternLayout("%d{dd MMM yyyy HH:mm:ss,SSS} [%t] %-5p %C{1} %x - %m%n");
if(Config.CREATE_SEPERATE_LOG)
{
FileAppender appender;
try {
String path = (Config.LOGFILE_PATH!=null)?Config.LOGFILE_PATH:filename;
appender = new FileAppender(layout,path);
appender.setErrorHandler(new FallbackErrorHandler());
appender.setName("Dedicated Appender");
org.apache.log4j.Logger.getRootLogger().addAppender(appender);
} catch (IOException e) {
org.apache.log4j.Logger.getLogger(Config.class).warn("Failed to create a dedicated log "+filename, e);
}
}
В основном это создает дополнительный Appender, который записывает на выделенный лог-файл для файла при анализе. Пока он работает, тогда, когда приложение было однопоточным, оно перепуталось.
Как я могу изменить свою настройку, чтобы каждый класс участвовал в анализе определенной последовательности файлов, регистрируя ее в конкретном файле журнала для этого файла.
Вы пытались использовать какую-то переменную, генерируемую из файла, который вы читаете, чтобы инициировать использование потока FileWriter (при условии, что вы его используете)? –
Не уверен, что понимаю, что вы имеете в виду. Будете ли вы работать с log4j и просто использовать простой старый java FileWriter? – er4z0r