【问题标题】:print data in hashmap in a tabular format in log file在日志文件中以表格格式打印 hashmap 中的数据
【发布时间】:2023-03-19 03:15:02
【问题描述】:

您好,我想以表格格式打印 hashmap 的数据。下面是我在 hashmap 中插入数据的代码。

 String foldername = item.getParent().substring(item.getParent().lastIndexOf("/") + 1);
                        statusname = foldername + "\t" + _DeployResult.ServerIP + "\t" + _DeployResult.ServerType;
                        if (!Prdeploy.statusmap.containsKey(statusname)) {
                            Prdeploy.statusmap.put(statusname, 0);
                        }

以下是为打印日志文件中的数据而编写的代码:

 logger.info("****************Summary Report****************");
                   logger.info("Folder\tServer\tType\tFailed");

        for (String name: statusmap.keySet()){

            String key =name.toString();
            String value = statusmap.get(name).toString();  

            System.out.println(key + "  " + value);  
            logger.info(key + "\t" + value);
} 
        logger.info("**********************************************");

这里我得到上面的输出如下:

****************Summary Report****************
Folder  Server  Type    Failed
180_Perl_Scripts            10.5.50.195 SS  0
050_Images              10.5.50.195 SS  0
020_XSL             10.5.50.195 SS  0
srf             10.5.50.195 SS  0
030_XSLT            10.5.50.195 SS  0
bscript 10.5.50.195 SS  0
bscript 10.5.50.195 WS  1
010_StyleSheets             10.5.50.195 SS  0
040_WebTemplates            10.5.50.195 SS  0
050_Images              10.5.50.195 WS  0
060_js_Files            10.5.50.195 SS  0
010_StyleSheets             10.5.50.195 WS  0
**********************************************

但我希望我的输出如下:

    ****************Summary Report****************
Folder                  Server          Type    Failed
180_Perl_Scripts            10.5.50.195 SS  0
050_Images              10.5.50.195 SS  0
020_XSL                     10.5.50.195 SS  0
srf                     10.5.50.195 SS  0
030_XSLT                    10.5.50.195 SS  0
bscript                 10.5.50.195 SS  0
bscript                 10.5.50.195 WS  1
010_StyleSheets             10.5.50.195 SS  0
040_WebTemplates            10.5.50.195 SS  0
050_Images              10.5.50.195 WS  0
060_js_Files            10.5.50.195 SS  0
010_StyleSheets             10.5.50.195 WS  0
**********************************************

在这里,我无法输入确切的模式。但我只想将其转换为表格格式。结构良好。 有没有办法做到这一点?请帮帮我!

【问题讨论】:

    标签: java string logging collections


    【解决方案1】:

    试试这个

    String str = String.format("%-10s%-10s%-10s%s", statusMap.get("Folder"), statusMap.get("Server"), statusMap.get("Type"), statusMap.get("Failed"));
    logger.info(str);
    

    【讨论】:

      【解决方案2】:

      您可以使用 String.format 方法格式化您的字符串。

      `logger.info(String.format("%-20s %-20s%-10s%-10s" , "Folder", "Server", "Type", "Failed" ));`
      

      %s 是字符串的占位符。 '-' 使结果左对齐。 20和10是字符串的宽度

      【讨论】:

        【解决方案3】:

        使用标签并不容易。您必须了解 tab 是它以空格组的形式出现。我认为选项卡的默认值为 4 个空格。像这样工作。

        开始__中间_结束

        下划线组是一个制表符。每个下划线都是一个空格。 你有Start,它的长度为 5。所以它重叠 1。所以当你按下制表符时,它将进入位置 8(如 4 个制表符的两个制表符),即 3 个空格。与中间相同。

        你需要使用的是formatter

        【讨论】:

          【解决方案4】:

          如果您只需要它用于显示目的,也就是说您并不需要它是制表符,那么很容易创建一个 padRight() 或 padLeft() 方法来用空格填充字符串

          类似:

          String padRight(String inputStr, int length)
          {
             while(inputStr.length() <= length)
                 inputStr = inputStr + " ";
             return inputStr;
          }
          

          这可以很容易地修改为接受您希望填充的任何字符。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-10-19
            • 2021-10-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-18
            • 1970-01-01
            相关资源
            最近更新 更多