0

プログラムにロガーを追加し、ネットサーフィンをしながら、基本的な 2 行の定義を持つ非常に単純なロガーをコードに追加します。

private static final Logger LOG = Logger.getLogger(GUI.class.getName());

public MyClass(){

    //other stuff...
    LOG.info("text to log");
    //other stuff...
}

数時間の開発の後、ログに記録されたテキストのスタイルをフォーマットする方法を知り、このクラスにたどり着きました:

java.util.logging.SimpleFormatter

私が見つけることができるJavadocを読む:

フォーマットは、java.util.logging.SimpleFormatter.format プロパティでフォーマット文字列を指定することによってカスタマイズできます。

いくつかの例もあります:

Some example formats:
java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"
This prints 1 line with the log level (4$), the log message (5$) and the timestamp (1$) in a square bracket.

WARNING: warning message [Tue Mar 22 13:11:31 PDT 2011]

それぞれ試してみましたが、「フォーマット」フィールドは「見えない」(プライベートだと思います)ので、直接編集できません。setStringVar(String regex); のようなメソッドはありません。外部から var を設定します。

クラス public class MyClass extends SimpleFormatter{ を拡張してみました

ただし、「フォーマット」変数は編集できません。また、Formatter (SimpleFormatter のスーパークラス) を拡張しようとしましたが、成功しませんでした。

私ができる唯一のことは、SimpleFormatter を拡張して手動でオーバーライドすることです。 public String format(LogRecord rec); 退屈で複雑なコードで。

SimpleFormatter クラスの内部正規表現リーダーを単純に使用する方法があるかどうか疑問に思っていました

編集:エラー

4

2 に答える 2

1

JavaDocを見たことがありますか。SimpleFormatterの概要を説明します。

また、formatはSimpleFormatter内のパブリックメソッドです。

さらにライン

java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"

Javaクラスではなく、プロパティファイルで定義する必要があります。

正直なところ、私はjava.util.loggingを使用していません。Fildorが述べたようにlog4jを使用しています。私はそれがはるかに簡単だと思います。まず、以下のlog4j.xmlのような構成ファイルが必要です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %5p %c{1}:%L - %m%n"/>
        </layout>
    </appender>
    <root>
        <priority value="debug"></priority>
        <appender-ref ref="stdout"/>
    </root>
</log4j:configuration>

変換パターンは自由に調整できます。詳細については、 PatternLayoutを参照してください。次に、クラスで次のプライベート静的メンバーを定義します

static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(Testing.class);

ロギングを出力したい場合は、次のようにします。

LOG.error("Test Error");
于 2012-10-05T11:47:01.780 に答える
0

このLINKは、Java 標準ロギング (ドイツ語) の構成方法に関するものです。私は今、英語で似たようなものを見つけようとしています...

一方:私はutil.loggingを使用していませんが、上記のリンクで読んだことについては、独自のフォーマッターを実装する必要があると思います。

では英語でどうぞ。

ちなみに、log4j または slf4j/logback をお勧めします。

于 2012-10-05T11:43:17.910 に答える