私は、ログファイル内でログが行われているスレッドのIDを表示しようとしています。私はコードレベルでlog.info(Thread.currentThread().getId())
で "log"がLoggerクラスオブジェクトですが、これは私が正確に望むものではありません。実際、私のアプリケーションは大規模な分散アプリケーションであり、log.info("something")
のコードにThread.currentThread().getId()
を追加することはできません。とにかく、私は自分のlog4j.xmlファイルに変更を加えるだけで、自分のコード内のすべてのlog.infoのスレッドIDを印刷できますか?これは、今私は、私はスレッドを印刷するには、XMLの私のレイアウトで何かを追加できると仮定しています私のlog4j.xmllog4jを使用してログファイルにスレッドIDを出力します。
<log4j:configuration debug="true">
<!-- File Appenders -->
<appender name="EventsAndErrorsFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="EventsAndErrors.xml" />
<param name="Datepattern" value="'.'yyyy-MM-dd-HH" />
<param name="MaxFileSize" value="1000KB" />
<param name="MaxBackupIndex" value="140" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%C] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<root>
<priority value="debug" />
<appender-ref ref="EventsAndErrorsFileAppender" />
<appender-ref ref="ExceptionFileAppender" />
</root>
です。 私はまた、私はすべてのガイダンスはaprreciatedことになるだけで参照
import org.apache.log4j.Logger;
class MyThread extends Thread implements MyInterface
{
public void run()
{
int i = 0;
while(i < 10)
{
System.out.println(Thread.currentThread().getId()+"In first thread");
log.info(Thread.currentThread().getId());
log.error(Thread.currentThread().getId());
System.out.println();
i++;
}
}
}
class MyThread1 extends Thread implements MyInterface
{
public void run()
{
int i = 0;
while(i < 10)
{
System.out.println(Thread.currentThread().getId()+"In secound thread");
log.info(Thread.currentThread().getId());
log.debug("debug");
System.out.println();
i++;
}
}
}
public class MyClass implements MyInterface
{
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread thread1 = new MyThread();
MyThread1 thread2 = new MyThread1();
log.info("logging stareted");
thread1.start();
thread2.start();
}
}
のためにこれをしようとしていた中で、サンプルコードを添付しています。 ありがとう
%tは** **スレッド名を印刷します。 – Fildor
@Fildor。はい、それで十分です。どうもありがとうございました。 :) – Asim