最新消息:20210917 已从crifan.com换到crifan.org

【已解决】tinylog中如何初始化同时给console和file传入不同的level和format的配置

file crifan 624浏览 0评论
折腾:
【记录】IntelliJ IDEA中使用Java的日志库tinylog记录日志
期间,虽然已经可以实现了最最基本的console和file的log的配置,包括level等,但是发现有个问题:因为我希望console和file的2个writer的format和level都不同
却无法同时传入
参考:
tinylog: Configuration
说了,可以给Configurator.currentConfig的writer传入format:
Configurator.currentConfig()
   .writer(new ConsoleWriter(), "{level}: {message}")
   .addWriter(new FileWriter("log.txt"), "{class}.{method}()\t{message}")
   .activate();
也可以传入level:
Configurator.currentConfig()
   .writer(new ConsoleWriter(), Level.TRACE)
   .addWriter(new FileWriter("log.txt"), Level.INFO)
   .activate();
但是不知道如何两个都传入
后来还是看到了:
Configurator (tinylog 1.3.5 API)
才看到了写法:
addWriter(Writer writer, Level level, String formatPattern)
writer(Writer writer, Level level, String formatPattern)
去试试
String logFilename = "../log/EmulateLoginBaidu.log";
FileWriter fileWriter = new FileWriter(logFilename);
ConsoleWriter consoleWriter = new ConsoleWriter();

Level fileWriterLevel = Level.TRACE;
Level consoleWriterLevel = Level.DEBUG;
String consoleFormat = "{date:YYMMdd HH:mm:ss} {class}.{method} {{level}|min-size=8}: {message}";
String fileFormat = "{date:yyyyMMdd HH:mm:ss} [{thread}] {class}.{method} {{level}|min-size=8}: {message}";

Configurator.currentConfig()
        .writer(consoleWriter, consoleWriterLevel, consoleFormat)
        .addWriter(fileWriter, fileWriterLevel, fileFormat)
        .activate();
是可以的分别起到效果的:
  • Console: >=DEBUG才输出,格式是YYMMdd
  • File:>=TRACE都输出,格式是yyyyMMdd
【总结】
tinylog中给console和file的不同writer,在初始化时传入不同的参数,比如level,format等,可以用:
import org.pmw.tinylog.Logger;
import org.pmw.tinylog.Level;
import org.pmw.tinylog.Configurator;
import org.pmw.tinylog.writers.ConsoleWriter;
import org.pmw.tinylog.writers.FileWriter;

String logFilename = "log/EmulateLoginBaidu.log";
FileWriter fileWriter = new FileWriter(logFilename);
ConsoleWriter consoleWriter = new ConsoleWriter();

Level fileWriterLevel = Level.TRACE;
Level consoleWriterLevel = Level.DEBUG;
String consoleFormat = "{date:YYMMdd HH:mm:ss} {class}.{method} {{level}|min-size=8}: {message}";
String fileFormat = "{date:yyyyMMdd HH:mm:ss} [{thread}] {class}.{method} {{level}|min-size=8}: {message}";

Configurator.currentConfig()
        .writer(consoleWriter, consoleWriterLevel, consoleFormat)
        .addWriter(fileWriter, fileWriterLevel, fileFormat)
        .activate();
即可。
详见:
Configurator (tinylog 1.3.5 API)

转载请注明:在路上 » 【已解决】tinylog中如何初始化同时给console和file传入不同的level和format的配置

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
87 queries in 0.195 seconds, using 20.08MB memory