Я использую jpos 2.1.0 и использую JposLogger для создания и ротации журналов iso. Однако я не могу правильно настроить параметры, из-за чего ни журналы не вращаются в зависимости от дат, ни я не могу закрыть открытые файлы журналов.
Это связано с предыдущей проблемой Открыто слишком много файлов
что, как я думал, было связано с проблемой использования универсального упаковщика, но если углубиться, это произошло из-за неправильного закрытия файлов, сгенерированных JposLogger, что можно определить с помощью команды lsof -p в centos. Для одного запроса создается один файл.
[cipsappcen@connectipsappcen local]$ lsof -p 12108 |grep iso.log
java 12108 cipsappcen 36w REG 253,2 58589 405618549 /u03/connectIPSSRVC/log/iso.log
java 12108 cipsappcen 47w REG 253,2 58589 405618549 /u03/connectIPSSRVC/log/iso.log
public class Iso8583MessageBOKImpl implements Iso8583Message{
JposLogger logger = new JposLogger(isoLogLocation);
org.jpos.iso.ISOPackager customPackager = new GenericPackager(isoPackagerLocation+iso8583Properties.getPackager());
BaseChannel channel = new ASCIIChannel(iso8583Properties.getServerIp(), Integer.parseInt(iso8583Properties.getServerPort()), customPackager);// live
logger.jposlogconfig(channel);
...
}
public void jposlogconfig(ISOChannel channel){
try{
//Configuring Logger
Logger logger = new Logger();
logger.setName("Q2");
org.jpos.util.DailyLogListener dayLog = new org.jpos.util.DailyLogListener();
ProtectedLogListener pll = new ProtectedLogListener();
Configuration protectLogCfg = new SimpleConfiguration();
protectLogCfg.put("protect", "2");
pll.setConfiguration(protectLogCfg);
logger.addListener(pll);
Configuration dayLogCfg = new SimpleConfiguration();
dayLogCfg.put("window", "86400");
dayLogCfg.put("prefix", logLocation);
dayLogCfg.put("suffix", ".log");
dayLogCfg.put("date-format", "-yyyy-MM-dd");
dayLog.setConfiguration(dayLogCfg);
logger.addListener(dayLog);
logger.addListener(new SimpleLogListener(System.out));
((LogSource)channel).setLogger(logger, "connectips-channel");
logger.removeListener(pll);
}catch(Exception ex){
System.out.println(ex);
}
}
Поскольку файлы не закрываются должным образом, ОС не может обрабатывать слишком много открытых файлов.