好的,从你的评论,我在这里尝试.
我想你会在你的应用程序开始时创建你的10个实例.无论如何.
在你的log4j.xml中,使用name = yourUniqueId定义10 appender(这个唯一的id将被硬编码)
将这些appender写入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>
Run Code Online (Sandbox Code Playgroud)
然后在对象构造函数中,使用对象唯一ID实例化正确的Logger.
像这样的东西:
public MyClassContructor(){
String uniqueId = getMyUniqueIdFromSomewhere();
logger = Logger.getLogger(uniqueId);
}
Run Code Online (Sandbox Code Playgroud)
我想你不想乱用log4j.xml,那么你必须使用log4j API并根据你的唯一id创建自己的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);
}
}
Run Code Online (Sandbox Code Playgroud)
这样,YourClass的每个实例都会写入不同的日志文件.所有你需要做的就是想一下在调用构造函数时获取这个uniqueId的方法.
希望它有所帮助.