log4j Syslogd打印一个char'^ I'而不是tab

时间:2011-05-27 04:59:23

标签: java log4j syslog

我正在处理syslogd打印一条消息(包含标签,空格等......)。当我观察/ var / log /目录中的syslogd文件时,消息没有任何消息tabs.Instead它正在打印^I

ubuntu 10.04 LTSsysklogd上运行此程序。

import org.apache.log4j.Appender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.net.SyslogAppender;

public class syslogPrinter {

    private static int sysLogFacility = SyslogAppender.LOG_LOCAL3;
    private static String syslogHost = "localhost";
    private static String layoutPattern = "%m%n";
    public static Logger log2static = Logger.getLogger(syslogPrinter.class);

    public static void main(String[] args) {

        log2static.setLevel(Level.INFO);
        PatternLayout layout = new PatternLayout(layoutPattern);

        Appender syslogdAppender = new SyslogAppender(layout, syslogHost, sysLogFacility);

        log2static.addAppender(syslogdAppender);

        String str2 = "this is a tab: ";
        str2 = str2.concat("\t");
        str2 = str2.concat("    after space");
        log2static.error(str2);
    }

}

输出就像

  

这是一个标签:^我在空格后

预期输出

  

这是一个标签:空格后(标签   空间应该来了)

请告诉我如何在消息中打印标签而不是^I .......

我是否需要配置syslogd.conf文件?

1 个答案:

答案 0 :(得分:0)

您使用的是Gnome Logfile查看器还是tail来查看syslog?如果没有,您使用哪个工具/编辑器查看文件? Ctrl + I是某些终端中水平制表符的有效控制序列。

我怀疑您使用的是不将Ctrl + I识别为有效转义序列的实用程序,最好使用一个用于查看syslog文件的查看器。