【发布时间】:2014-03-05 12:20:38
【问题描述】:
我正在开发一个 maven-osgi 包并在 karaf 中进行部署。其中,一段代码应该从 karaf/etc 获取 .cfg 文件,并在运行时以编程方式更改它们。在 ' 中调用 writeTrace() for循环'来自另一个类。这样我就可以创建不同的文件,并且相应的日志记录应该进入该文件。
public void writeLog(int i,String HostName) {
StringBuilder sb = new StringBuilder();
sb.append("\n HEADER : \n");
....
String str = sb.toString();
String logfile = ("/home/Dev/" + HostName + i);
logger = LoggerFactory.getLogger("TracerLog");
updateLog4jConfiguration(logfile);
logger.error(str + i);}
public void updateLog4jConfiguration(String logFile) {
Properties props = new Properties();
try {
// InputStream configStream = getClass().getResourceAsStream(
// "/home/Temp-files/NumberGenerator/src/main/java/log4j.properties");
InputStream configStream = new FileInputStream("etc/org.ops4j.pax.logging.cfg");
props.load(configStream);
System.out.println(configStream);
configStream.close();
} catch (IOException e) {
System.out.println("Error: Cannot laod configuration file ");
}
props.setProperty("log4j.appender.Tracer.File", logFile);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}
我可以看到使用主机名创建的新文件,例如 (hostname_1 , hostname_2, etc..),但日志记录仅发生在 karaf/etc 配置的实际附加程序中... thaat 是 log.txt..
log4j.logger.TracerLog=TRACE,Tracer
log4j.appender.Tracer=org.apache.log4j.RollingFileAppender
log4j.appender.Tracer.MaxBackupIndex=10
log4j.appender.Tracer.MaxFileSize=500KB
log4j.appender.Tracer.File=/home/Dev/log.txt
我被这个错误击中..不知道它是否与 karaf 或代码问题有关..???
【问题讨论】:
标签: java maven log4j apache-karaf