3

ログのニーズにtinylogを使用していますが、ファイルコンソールにログを記録する方法を誰かが知っているかどうか疑問に思っていました。以下の構成を使用すると、コンソールでのみ出力が得られます。削除する.writer(new ConsoleWriter())と、ロギングはファイルに対してのみ行われます(予想どおり)。

Configurator.currentConfig()
                          .level(LoggingLevel.valueOf("TRACE"))
                          .writer(new RollingFileWriter(file,10))
                          .writer(new ConsoleWriter())
                          .activate();
4

3 に答える 3

3

私の知る限り、これはすぐに使えるtinylogでは不可能ですが、次のように独自の複合ライターをいつでも実装できます。

public class MultiWriter implements LoggingWriter {
   private List<LoggingWriter> writers;

   public MultiWriter(List<LoggingWriter> writers) {
      this.writers = writers;
   }   

   @Override
   public void write(LoggingLevel level, String logEntry) {
      for (LoggingWriter writer : writers) {
         writer.write (level, logEntry);
      }
   }
}

そして、次のように使用します。

Configurator.currentConfig()
                          .level(LoggingLevel.valueOf("TRACE"))
                          .writer(new MultiWriter(Arrays.asList(
                             new RollingFileWriter(file,10), new ConsoleWriter()))
                          .activate();
于 2013-10-04T11:34:09.917 に答える
3

ドキュメントによると、これは(現在)可能です。「トリック」は、 writer()メソッドへの複数の呼び出しではなく、addWriter()への呼び出しです。

http://www.tinylog.org/configuration#writersを引用:

複数のライターを並行して使用できます。たとえば、ログ エントリをコンソールとログ ファイルに同時に書き込むことができます。例:

Configurator.currentConfig()    
  .writer(new ConsoleWriter())    
  .addWriter(new FileWriter("log.txt"))    
  .activate();
于 2015-12-12T11:25:16.603 に答える