如何在Java中从控制台日志中删除空行?

如何在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 -

我用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 - [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