Log4j 日志记录 OutputStream 链接
Log4j Logging OutputStream chaining
我有一个遗留的 Java 应用程序,它使用 Log4j 作为日志记录工具。该应用程序缺少指标,因此我想找到一种方法来巧妙地检索一些基于 Java class 的指标。
问题是,我想在提供服务之前拦截所有 Log4j 日志记录。
这个想法的灵感来自 System.out
的链接,看起来像这样
TeeOutputStream myOut=new TeeOutputStream(System.out, mySpecificOut);
PrintStream ps = new PrintStream(myOut, true); //true - auto-flush after println
System.setOut(ps);
那么有没有一种方法可以链接 Log4j 输出流并在 Java 上完全控制它,因为我需要在记录之前做一些逻辑。
谢谢
是的,您可以使用
定义自己的流
LoggingOutputStream extends OutputStream {
并链以拦截日志
System.setOut(new PrintStream(new LoggingOutputStream(
看看this nice example based on innoq/log4j LoggingOutputStream。
我有一个遗留的 Java 应用程序,它使用 Log4j 作为日志记录工具。该应用程序缺少指标,因此我想找到一种方法来巧妙地检索一些基于 Java class 的指标。
问题是,我想在提供服务之前拦截所有 Log4j 日志记录。
这个想法的灵感来自 System.out
的链接,看起来像这样
TeeOutputStream myOut=new TeeOutputStream(System.out, mySpecificOut);
PrintStream ps = new PrintStream(myOut, true); //true - auto-flush after println
System.setOut(ps);
那么有没有一种方法可以链接 Log4j 输出流并在 Java 上完全控制它,因为我需要在记录之前做一些逻辑。
谢谢
是的,您可以使用
定义自己的流LoggingOutputStream extends OutputStream {
并链以拦截日志
System.setOut(new PrintStream(new LoggingOutputStream(
看看this nice example based on innoq/log4j LoggingOutputStream。