我对loggin有“特殊”要求 - 我需要每个记录器都在单独的文件中。
爪哇
/**
* Module Dependencies
*/
let cheerio = require('cheerio');
let http = require('http');
class SimplePageGetter {
constructor(pageLink) {
this._pageLink = pageLink;
}
getPage() {
http.request(this._pageLink, response => {
resultsPageHttpGetCallback.call(this, response);
}).end();
}
}
function resultsPageHttpGetCallback(response) {
let pageBody = '';
response.on('data', chunk => {
pageBody += chunk;
});
//the whole response has been recieved, so we just print it out here
response.on('end', () => {
parsePage.call(this, pageBody);
});
}
function parsePage(body) {
console.log('page parsed');
}
/**
* Export
*/
module.exports = SimplePageGetter;
然后我希望将Logger log1 = LoggerFactory.getLogger("dynamic.log1");
Logger log2 = LoggerFactory.getLogger("dynamic.log2");
//...
的任何输出写回文件log1
,依此类推。是否可以“动态地”创建新的log1.log
,就像使用logback一样?
可以使用其他一些日志框架来解决这个用例吗?
我可以手动配置appender,但这是我想要避免的。就像每次添加appender
记录器一样,会相应地创建新的appender /文件。
修改:
我实现了自定义鉴别器:
dynamic
然后我的appender配置看起来像这样:
public class LoggerBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
private static final String LOGGER_NAME = "loggerName";
@Override
public String getDiscriminatingValue(ILoggingEvent e) {
return e.getLoggerName();
}
@Override
public String getKey() {
return LOGGER_NAME;
}
}