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 Logfile ビューアーを使用していますtailか、それとも syslog を表示していますか? そうでない場合、ファイルを表示するためにどのツール/エディターを使用していますか? Ctrl+I は、特定の端末で水平タブ文字の有効な制御シーケンスです。

Ctrl+I を有効なエスケープ シーケンスとして認識しないユーティリティを使用していると思われます。syslog ファイルを表示するためのビューアを使用した方がよいでしょう。

于 2011-05-27T06:42:17.177 に答える