web-dev-qa-db-ja.com

実行時にカスタムファイルにログを記録するようにlog4jを構成する

実行時に指定する特定のファイルにログを記録するようにlog4jを構成する方法について、誰でも私を案内してくれますか?ログファイルの名前とパスは実行時に生成され、アプリケーションはその特定のファイルに記録する必要があります。

通常、log4j.propertiesファイル内のファイルアペンダーエントリは、アプリケーションで使用されるログファイルを指しますが、この場合、コマンドラインからログファイルパスを読み取り、その特定のファイルにログを記録したいと思います。

どうすればこれを達成できますか?

60
Fell

Log4jのドキュメントから改編:

import org.Apache.log4j.Level;
import org.Apache.log4j.Logger;
import org.Apache.log4j.SimpleLayout;
import org.Apache.log4j.FileAppender;

public class SimpandFile {
   static Logger logger = Logger.getLogger(SimpandFile.class);
   public static void main(String args[]) {

      // setting up a FileAppender dynamically...
      SimpleLayout layout = new SimpleLayout();    
      FileAppender appender = new FileAppender(layout,"your filename",false);    
      logger.addAppender(appender);

      logger.setLevel((Level) Level.DEBUG);

      logger.debug("Here is some DEBUG");
      logger.info("Here is some INFO");
      logger.warn("Here is some WARN");
      logger.error("Here is some ERROR");
      logger.fatal("Here is some FATAL");
   }
}
59
Vinay Sajip

Log4j.propertiesファイルからこれを行うこともできます。以下のサンプルファイルを使用して、システムプロパティ$ {logfile.name}を追加しました。

# logfile is set to be a RollingFileAppender
log4j.appender.logfile=org.Apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${logfile.name}
log4j.appender.logfile.MaxFileSize=10MB
log4j.appender.logfile.layout=org.Apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{yyyyMMdd@HH\:mm\:ss,SSS}\:%c - %m%n

ログファイル名は、次の2つの異なる方法で設定できます。

  1. コマンドラインとして、Java "-Dlogfile.name = {logfile}"に渡されるシステムプロパティ
  2. Javaプログラムで、システムプロパティを設定して直接(log4jを呼び出す前に))。

    System.setProperty( "logfile.name"、 "some path/logfile name string");

95
jmq

動作し、同じことがテストされています

// setting up a FileAppender dynamically...
SimpleLayout layout = new SimpleLayout(); 
RollingFileAppender appender = new RollingFileAppender(layout,"file-name_with_location",true);
                    appender.setMaxFileSize("20MB");
                    logger.addAppender(appender);

Log4j.propertiesファイルで定義するこのプロパティによっても実行できます

log4j.appender.logfile=org.Apache.log4j.RollingFileAppender
log4j.appender.logfile.maxFileSize=5000KB
log4j.appender.logfile.maxBackupIndex=5
log4j.appender.logfile.File=/WebSphere/AppServer/profiles/Custom01/error.log
log4j.appender.logfile.layout=org.Apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %C %M %c{1}:%L - %m%n
0
Sumit