Хорошо, из вашего комментария, вот что я бы попробовал.
Я думаю, вы создадите свои 10 экземпляров в начале вашего приложения.!?в любом случае.
В вашем log4j.xml определите 10 appender с именем = yourUniqueId (этот уникальный идентификатор будет жестко запрограммирован)
Заставьте этих аппендеров писать в yourUniqueid.log
<logger name="yourUniqueId" additivity="false">
<level value="INFO" />
<appender-ref ref="fileAppender" />
</logger>
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="/path/yourfile.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MM yyyy HH:mm:ss,SSS} %m%n"/>
</layout>
</appender>
Затем в конструкторе объектов создайте экземпляр правого регистратора с уникальным идентификатором объекта.
Что-то в этом роде:
public MyClassContructor(){
String uniqueId = getMyUniqueIdFromSomewhere();
logger = Logger.getLogger(uniqueId);
}
Я думаю, вы не хотите возитьсяс log4j.xml тогда вам придется использовать API log4j и создать свой собственный appender на основе вашего уникального идентификатора
Примерно так:
public class YourClass{
Logger logger = Logger.getLogger(YourClass.class);
SimpleLayout layout = new SimpleLayout();
FileAppender appender = null;
public YourClass() {
try {
appender = new FileAppender(layout, "/path/tolog/yourUniqueId.log", false);
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
}
catch(IOException e) {
e.printStackTrace();
logger.error("Printing ERROR Statements",e);
}
}
Таким образом, каждый экземпляр YourClass будетзаписать в другой файл журнала.все, что вам нужно сделать, это придумать способ получить этот уникальный идентификатор, когда вы вызываете конструктор.
Надеюсь, это поможет.