2

Javaでlog4jを使用してログをキャプチャしようとしています。実行可能ファイルはLinux環境にあり、ログメッセージを表示しますが、ログファイルに書き込んでいません。私はlog4j.xmlを使用していますが、これは私がこれまでに持っているものです

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="LocalFileAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="File"   value="logs/error.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="500KB" />
    <param name="maxBackupIndex" value="1" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] - %m%n"/>
      </layout>
  </appender>

  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.SimpleLayout"/>
  </appender>

  <root>
    <priority value ="Debug" />
    <appender-ref ref="console" /> 
  </root>
</log4j:configuration>

Javaプログラムがxmlファイルの場所をどのように認識しているかわかりません。それが問題だと思います。そして、これは私がコードで設定する方法です、

log = Logger.getLogger(MyClass.class);

BasicConfigurator.configure();

どんな助けでもそれを評価するでしょう。ありがとう。

4

2 に答える 2

4

アプリケーションのクラスパスにファイルを配置するlog4j.xmlと、log4jは、log4jを初めて使用するときに、ファイルを自動的に検出して構成します。

ただし、を呼び出すBasicConfigurator.configure()ことにより、XMLファイルによって行われた構成を元に戻すことになります。これにより、ルートロガーにのみコンソールアペンダーが設定されます。

でJavaプログラムを実行-Dlog4j.debugして、log4jが起動時に構成ファイルを探している場所に関する一連の情報を出力するようにします。

于 2012-09-17T20:09:56.907 に答える
1

1) Windows環境では、すべてのパラメータが正しい場合でも、ファイルへのパスが絶対的であり、通常の「\」ではなく「/」で区切られていることを確認する必要があります。

パスを決定する際、「\」は無視されるため、1つの大きな名前になります。

したがって、何も書かれていないように見えるかもしれませんが、実際には別の場所で書かれているということです。:)

2) Eclipseで、「マットB」による前の回答が示唆するオプションを試してみます。

[実行]>[実行構成]>[引数][タブ]に移動し、VM引数>[適用して実行]に値を入力します。明らかに、ファイルにはmainが必要です。

于 2013-09-24T15:34:20.217 に答える