0

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

ubuntu 10.04 LTS在和上运行此程序sysklogd

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 在空格之后

预期输出是

这是一个标签:在空格之后(应该有标签空间)

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

我需要配置syslogd.conf文件吗?

4

1 回答 1

0

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

我怀疑您使用的实用程序无法将 Ctrl+I 识别为有效的转义序列,最好使用旨在查看 syslog 文件的查看器。

于 2011-05-27T06:42:17.177 回答