如何在Java中从控制台日志中删除空行?
我用java.util.logging制作了一个软件。应用程序运行良好,但输出打印日志信息之间的空白行。循环可能打印一个或多个空行。在循环过程中,应用程序可以分析更多设备,当一切正常时,应用程序跳到下一个设备上。只要它得到一个异常,它就会在控制台上打印一个日志 我的输出:如何在Java中从控制台日志中删除空行?,java,Java,我用java.util.logging制作了一个软件。应用程序运行良好,但输出打印日志信息之间的空白行。循环可能打印一个或多个空行。在循环过程中,应用程序可以分析更多设备,当一切正常时,应用程序跳到下一个设备上。只要它得到一个异常,它就会在控制台上打印一个日志 我的输出: 10/09/2019 10:16:24.671 - [com.ids.main.IdsMain.main] - [INFO] - MES Polling LAN attivo 10/09/2019 10:16:35.594 -
10/09/2019 10:16:24.671 - [com.ids.main.IdsMain.main] - [INFO] - MES Polling LAN attivo
10/09/2019 10:16:35.594 - [com.ids.factoryPatternProtocol.CallFactory.checkProtocol] - [WARNING] - connect timed out
10/09/2019 10:16:46.983 - [com.ids.factoryPatternProtocol.CallFactory.checkProtocol] - [WARNING] - connect timed out
10/09/2019 10:16:58.308 - [com.ids.factoryPatternProtocol.CallFactory.checkProtocol] - [WARNING] - connect timed out
我试图从代码中删除(\n)换行符,但什么都没有。我在网上找到了这个解决方案
logger.info(message.substring(0,message.lastIndexOf('\n')));
但它不起作用
主要
您正在使用哪个日志框架?java.util.logging我已经更改了代码并在没有MyFormatter类的情况下运行了应用程序,我得到了相同的结果。看看我的新输出。我认为问题出在循环代码中,我尝试了FileHandler,文件的输出非常完美。非常感谢,它只有一个System.out.print(“\n”)。我检查了所有的代码,但没有找到。现在我检查得更好了,我找到了。Utility.checkDeviceState检查设备是否启用。如果设备在10分钟后出现问题(我可以设置时间),checkDeviceState可以禁用设备。非常感谢你的支持。
public static void main(String[] args) {
MyFormatter formatter=new MyFormatter();
ch=new ConsoleHandler();
logger.addHandler(ch);
ch.setFormatter(formatter);
logger.info("MES Polling LAN actived");
DAOFactory oracleFactory;
oracleFactory = DAOFactory.getDAOFactory(DAOFactory.ORACLE,dbConn,dbUser,dbPass);
if(flagLog.equalsIgnoreCase("N")) {
logger.setLevel(Level.OFF);
}
DeviceDAO devDAO=oracleFactory.getDeviceDAO();
List<DeviceMTConnect> devices=devDAO.getAllDevicesLAN(line,logger,ch);
CallFactory callFactory=new CallFactory();
callFactory.listDevices(devices,line,devDAO,logger,ch,minute);
}
public class MyFormatter extends Formatter {
// Create a DateFormat to format the logger timestamp.
private static final DateFormat df = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
@Override
public String format(LogRecord record) {
StringBuilder builder = new StringBuilder(1000);
builder.append(df.format(new Date(record.getMillis()))).append(" - ");
builder.append("[").append(record.getSourceClassName()).append(".");
builder.append(record.getSourceMethodName()).append("] - ");
builder.append("[").append(record.getLevel()).append("] - ");
builder.append(formatMessage(record));
// builder.append(System.getProperty("line.separator"));
builder.append("\n");
return builder.toString();
}
}
@Override
protected void checkProtocol(List<DeviceMTConnect> devicesFactory, int line, DeviceDAO devDAO, Logger logger, ConsoleHandler ch, long minute) {
DeviceMTConnect device = null;
long time = 0;
int i = 0;
if (minute > 0) {
time = minute * 60 * 1000L;
}
for (DeviceMTConnect d : devicesFactory) {
d.setLinea(linea);
d.setDeviceState(1);
// System.out.println(d);
}
while (true) {
try {
while (i < devicesFactory.size()) {
devicesFactory.get(i).setStatoDevice(devDAO.getDeviceStatus(devicesFactory.get(i).getDeviceCode(), logger, ch));
if (devicesFactory.get(i).getDeviceState() > 0) {
if (devicesFactory.get(i).getProtocol().equalsIgnoreCase(PROT1)) {
device = devicesFactory.get(i);
MTConnect mt = new MTConnect(device.getIp(), device.getPort());
ParserMTConnect pmtConnect = new ParserMTConnect();
pmtConnect.parser(mt.httpCall(), device, logger, ch);
//System.out.println();
}
if (device.getProtocol().equalsIgnoreCase(PROT2)) {
}
i++;
Thread.sleep(SleepingTime);
} else {
i++;
}
}
} catch (InterruptedException e) {
logger.warning(e.getMessage());
Utility.checkDeviceState(devDAO, device, logger, ch, time);
} catch (NumberFormatException e) {
logger.warning(e.getMessage());
Utility.checkDeviceState(devDAO, device, logger, ch, time);
} catch (IOException e) {
logger.warning(e.getMessage());
Utility.checkDeviceState(devDAO, device, logger, ch, time);
} catch (ParserConfigurationException e) {
logger.warning(e.getMessage());
Utility.checkDeviceState(devDAO, device, logger, ch, time);
} catch (SAXException e) {
logger.warning(e.getMessage());
Utility.checkDeviceState(devDAO, device, logger, ch, time);
} catch (ParseException e) {
logger.warning(e.getMessage());
Utility.checkDeviceState(devDAO, device, logger, ch, time);
} finally {
if (i < devicesFactory.size()) {
i++;
} else if (i == devicesFactory.size()) {
i = 0;
}
}
}
}
set 10, 2019 11:03:19 AM com.ids.main.IdsMain main
INFORMAZIONI: MES Polling LAN enabled
set 10, 2019 11:03:30 AM com.ids.factoryPatternProtocol.CallFactory checkProtocol
AVVERTENZA: connect timed out
set 10, 2019 11:03:41 AM com.ids.factoryPatternProtocol.CallFactory checkProtocol
AVVERTENZA: connect timed out