在日志文件中以表格格式在hashmap中打印数据

时间:2013-06-18 10:32:32

标签: java string logging collections

您好,我想以表格格式打印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
**********************************************

在这里,我无法确切地说出模式。但我只是想把它变成表格格式。好的结构。 有办法做到这一点吗?请帮帮我!

4 个答案:

答案 0 :(得分:3)

试试这个

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

如果你只需要这个用于显示目的,那就是你真的不需要它作为制表符,那么很容易创建一个padRight()或padLeft()方法,这些方法会用空格填充字符串

类似的东西:

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

这可以很容易地修改为接受你想要填充的任何角色。

答案 3 :(得分:0)

使用标签页并不容易。使用tab需要了解的是它包含在空格组中。我认为标签的默认值是4个空格。这样就可以了。

  

开始__ 中间 _end

下划线组是一个标签。每个下划线都是一个空间。 你有Start长度为5.所以它重叠1.所以当你按Tab键时它会进入位置8(就像4个两个标签),即3个空格。与中间相同。

您需要使用的是formatter